/* 
*    This Routine Saves The Current Data-Base Out To A File of User Choice. Needs
*    XPK Compression Routines Added
*/

#include <Includes/Main_Global.h>


/* This is next for some work!!!!!!! */


void  Save_Base( void )
{
   struct FileRequester *Requester;      // The Actuall File Requester Structure
   FILE                 *Base_Handle;
   char			*Directory;
   char			*File_Name;
   char                 *File;
   WORD			Size;
   LONG			Entries;
 struct ListerTransfer	*Current;
    int			Counter = 0;
   
   Requester = AllocAslRequestTags(ASL_FileRequest,ASL_Hail,"Save DataBase..",
				   ASLFR_PositiveText,"Save...", 
				   ASLFR_NegativeText, "Cancel...",
                                   ASL_FuncFlags,FILF_SAVE,
                                   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);
      	strcpy(File_Name,Directory);
      	strcat(File_Name,"/");
      	strcat(File_Name,File);
      	strcat(File_Name,".diz");
      	Base_Handle = fopen(File_Name,"w");
        if(!Base_Handle)
         {
           Problem("New DataBase Didn't Open!");
         }
         else
         {
         
	get(App->Main_Lister,MUIA_List_Entries,&Entries);
	set(App->Progress_Gauge,MUIA_Gauge_Max,Entries);
	set(App->Progress_Window,MUIA_Window_Open,TRUE);
	
	for(Counter=0;Counter<Entries;Counter++)
	{
	DoMethod(App->Main_Lister,MUIM_List_GetEntry,Counter,&Current);
	set(App->Progress_Gauge,MUIA_Gauge_Current,Counter);
	set(App->Progress_Gauge,MUIA_Gauge_InfoText,Current->FileName);
	
	set(App->Main_Lister,MUIA_List_Active,Counter);  
	Size = strlen(Current->FileName);
	fwrite(&Size,sizeof(WORD),1,Base_Handle);
	fwrite(Current->FileName,Size,1,Base_Handle);
	
	Size = strlen(Current->FilePath);
	fwrite(&Size,sizeof(WORD),1,Base_Handle);
	fwrite(Current->FilePath,Size,1,Base_Handle);
	/*
	Size = strlen(Current->FileSize);
	fwrite(&Size,sizeof(WORD),1,Base_Handle);
	fwrite(Current->FileSize,Size,1,Base_Handle);
	
	Size = strlen(Current->FileType);
	fwrite(&Size,sizeof(WORD),1,Base_Handle);
	fwrite(Current->FileType,Size,1,Base_Handle);
	
	Size = strlen(Current->FileDate);
	fwrite(&Size,sizeof(WORD),1,Base_Handle);
	fwrite(Current->FileDate,Size,1,Base_Handle);
	*/
	Size = strlen(Current->Description);
	fwrite(&Size,sizeof(WORD),1,Base_Handle);
	fwrite(Current->Description,Size,1,Base_Handle);
	
	
	
    	}
 	set(App->Progress_Window,MUIA_Window_Open,FALSE);        
         
         fclose(Base_Handle);
         }
      }
    FreeAslRequest(Requester);

}
