/* 
*   This Routine Is Called To Load In An Old DataBase Into RAM
*   It Also Needs XPK support written into it.
*/

#include <Includes/Main_Global.h>

void  Load_Base( void )
{
   struct FileRequester *Requester;     
   FILE                 *Base_Handle;
   char			*Directory;
   char			*File_Name;
   char			*File_Path;
   char			*Buffer;
   char                 *File;
  // struct	ListTransfer *Current;
   WORD			Size;
   LONG			Entries;
 struct ListerTransfer	*Current;
    int			Counter = 0;
   
   Requester = AllocAslRequestTags(ASL_FileRequest,ASL_Hail,"Load DataBase..",
				   ASLFR_PositiveText,"Save", 
				   ASLFR_NegativeText, "Cancel",
				   ASLFR_InitialPattern,"#?.diz",
				   ASLFR_DoPatterns,TRUE,
                                   TAG_DONE);

   if(!AslRequest(Requester,NULL))
      {
       DisplayBeep(0);
      }
      else
      {
      	File      = Requester->rf_File;
      	Directory = Requester->rf_Dir;

	File_Name = (char *) Allocate_Memory((strlen(Requester->rf_File)+strlen(Requester->rf_Dir))+5);
        Buffer = Allocate_Memory(1024);
      	strcpy(File_Name,Directory);
      	strcat(File_Name,"/");
      	strcat(File_Name,File);
      	
      	Base_Handle = fopen(File_Name,"r");
        if(!Base_Handle)
         {
           Problem("Old DataBase Didn't Open!");
         }
        else
        {         
	get(App->Main_Lister,MUIA_List_Entries,&Entries);
	if(Entries)
	  if(!MUI_Request(App->App, App->Main_Window, NULL, "Warning...", "*_Merge|_Clear", "DataBase Already Loaded!"))
 	     DoMethod(App->Main_Lister,MUIM_List_Clear);
	  
	 
	 while(!feof(Base_Handle))
	       {	
            	  fread(&Size,sizeof(WORD),1,Base_Handle);
	          if(feof(Base_Handle))break;
             	  File_Name = Allocate_Memory(Size);
           	  fread(File_Name,Size,1,Base_Handle);
        	  fread(&Size,sizeof(WORD),1,Base_Handle);
           	  File_Path = Allocate_Memory(Size);
            	  fread(File_Path,Size,1,Base_Handle);
                  sprintf(Buffer,"%s/%s",File_Path,File_Name);
	          DoMethod(App->Main_Lister,MUIM_List_InsertSingle,Buffer,MUIV_List_Insert_Top);	
	          DoMethod(App->Main_Lister,MUIM_List_GetEntry,0,&Current);
	          fread(&Size,sizeof(WORD),1,Base_Handle);	
	          Current->Description = Allocate_Memory(Size);
	          fread(Current->Description,Size,1,Base_Handle);
	       }
	 DoMethod(App->Main_Lister,MUIM_List_Sort);
	 fclose(Base_Handle);
	}
	Deallocate_Memory(File_Name);
	Deallocate_Memory(Buffer);
	
	
      }
    FreeAslRequest(Requester);

}


