/* Per Lattice C, facilmente adattabile ad AZTEC.
   compilare così:
   lc -v FileRequest
   BLink lib:arpc.o FileRequest.o LIB lib:lc.lib lib:arp.lib nd
*/

#include <exec/types.h>
#include <libraries/arpbase.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/arp.h>

struct ArpBase *ArpBase;

main()
{
struct FileRequester *freq;
char                 *file;
char                 *path;

/* tentiamo di aprire ARP, versione 39 */
ArpBase=(struct ArpBase *)OpenLibrary("arp.library",39L);
if (!ArpBase)
   {
   Write(Output(),"necessaria \"arp.library\" versione 39 o superiore!\n",51L);
   exit(5);
   }

/* allochiamo memoria struttura FileRequester e stringa con tracciamento
   risorse (ci penserà ARP a liberare la memoria) */
if ((freq=(struct FileRequester *)ArpAllocFreq()) && (path=(char *)ArpAlloc(256)))
   {
   freq->fr_Hail="ArpFromC!";                /* titolo requester */
   if (file = (char *)FileRequest(freq))     /* passiamo il controllo al requester */
      {
      strcpy(path,freq->fr_Dir);
      TackOn(path,file);                     /* colleghiamo dir+file */
      if (path[0]=='\0') strcpy(path,"NIENTE");
      Printf("Hai selezionato: %s.\n",path); /* printf di ARP (iniziale maiuscola) */
      }
   else
      Puts("Hai selezionato CANCEL");        /* puts di ARP (come sopra) */
   }
else
   Puts("Memoria insufficiente!");

CloseLibrary((struct Library *)ArpBase);
}
