#include <libraries/asl.h>
#include <intuition/intuition.h>
#include <pragmas/asl_pragmas.h>
#include <proto/asl.h>
#include <stdlib.h>
#include <strings.h>

#ifdef GERMAN
#define STR(a,b) a
#else
#define STR(a,b) b
#endif


#define READMODE   0
#define WRITEMODE  1

struct FileRequester  *FReq  = NULL;

static UBYTE File[32]  = "";
static UBYTE Path[256] = "";
static UBYTE Patt[32]  = "~(#?.info)";
static UBYTE Buffer[288];

struct TagItem          FreqTags[] = {
    ASL_Hail,           0, /* Requestertitel */
    ASL_Window,         0l,
    ASL_File,           (ULONG) File,
    ASL_Dir,            (ULONG) Path,
    ASL_Pattern,        (ULONG) Patt,
    ASL_OKText,         0,   /*"Save", */
    ASL_CancelText,     (ULONG)STR("Abbruch","Cancel"),
    ASL_FuncFlags,      /*FILF_SAVE |*/ FILF_PATGAD,
    TAG_DONE };

int InitFReq(void)
{
   FReq=AllocAslRequest(ASL_FileRequest,NULL);
   if(!FReq) return(1);
   return(0);
}

void FreeFReq(void)
{
   if(FReq) FreeAslRequest( FReq );
   FReq=NULL;
}


UBYTE * FileRequest(struct Window *win,int mode)
{
   int c;
   UBYTE *result=Buffer;

   static char * Title[]={STR("Datei laden","Load file"),STR("Datei schreiben","Write file")};
   static char * OKText[]={STR("Laden","Load"),STR("Speichern","Save")};

   FreqTags[0].ti_Data = (ULONG) Title[mode];
   FreqTags[1].ti_Data = (ULONG) win;
   FreqTags[5].ti_Data = (ULONG) OKText[mode];
   if(mode) FreqTags[7].ti_Data |= FILF_SAVE; else
            FreqTags[7].ti_Data &=~FILF_SAVE;

   if ( AslRequest( FReq, FreqTags )) {
      int len;
      strcpy( Buffer, FReq->rf_Dir );
      strcpy( Path, FReq->rf_Dir );
      strcpy( File, FReq->rf_File );
      strcpy( Patt, FReq->rf_Pat );
      c=Buffer[(len=strlen(Buffer))-1];
      if(c!='/' && c!=':' && len) strcat( Buffer,"/" );
      strcat( Buffer, FReq->rf_File );

   } else {
      result=0;
   }

   return(result);
}

