/*
    ####             #    #     # #
    #   #            #    #       #          The FreeWare C library for 
    #   #  ##   ###  #  # #     # ###             RISC OS machines
    #   # #  # #     # #  #     # #  #   ___________________________________
    #   # ####  ###  ##   #     # #  #                                      
    #   # #        # # #  #     # #  #    Please refer to the accompanying
    ####   ### ####  #  # ##### # ###    documentation for conditions of use
    ________________________________________________________________________

    File:    MsgTrans.LoadFile.c
    Author:  Copyright  1994 Tony Houghton
    Version: 1.00 (27 Sep 1994)
    Purpose: Load a Messages file
*/

#include <stdlib.h>

#include "Desk.LinkList.h"
#include "Desk.MsgTrans.h"
#include "Desk.DeskMem.h"
#include "Desk.JumpRaw.h"
#include "Desk.Error2.h"

#include "MTDefs.h"

Desk_linklist_header Desk_msgtrans__list = {NULL, NULL};


void	Desk_MsgTrans_LoadFile(Desk_msgtrans_filedesc **filedesc, char *filename)
{
  int flags;
  int size;
  Desk_msgtrans_file *block = NULL;

Desk_JumpAuto_Try	{
  block = Desk_DeskMem_Malloc(sizeof(Desk_msgtrans_file));
  block->data = NULL;
  
  Desk_MessageTrans_FileInfo(filename, &flags, &size);
  block->data = Desk_DeskMem_Malloc(size);

  Desk_MessageTrans_OpenFile(&block->filedesc, filename, block->data);

  Desk_LinkList_AddToTail(&Desk_msgtrans__list, &block->list);

  *filedesc = &block->filedesc;
	}
Desk_JumpAuto_Catch	{
	if (block)	{
		Desk_DeskMem_Free( block->data);
		Desk_DeskMem_Free( block);
		Desk_Error2_ReThrow();
		}
	}
Desk_JumpAuto_EndCatch


  return;
}
