;/*  GDir v2.0 -  Mark Weller (Aug 2000)
;    Copies dir/file name selected from ASL file requester to ClipBoard

dcc -o GDir gdir.c clipftxt.c
quit
*/

#include <exec/types.h>
#include <exec/ports.h>
#include <exec/io.h>
#include <exec/memory.h>
#include <exec/exec.h>
#include <devices/clipboard.h>
#include <libraries/dosextens.h>
#include <libraries/dos.h>
#include <libraries/asl.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <intuition/intuition.h>

char *version = "$VER: GDir v(02-08-2000)2.0";

/* struct IntuitionBase *IntuitionBase; */

/*--Functions--*/

extern int WriteLong(struct IOClipReq *,long *);
extern struct IOClipReq *CBOpen(ULONG);
extern int CBWFTXT(struct IOClipReq *,char *);
extern void CBClose(struct IOClipReq *);

int GDirectory(char *);

main(int argc, char *argv[])
{
struct IOClipReq *ClipIO;
int    error = '0';
int    err = 0;
char   dirname[200];

/* if(!(IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0L)))
     { exit(0); }  */

   err = GDirectory(dirname);

   if(err == 1) {  printf("Gdir -: ERROR?\n"); }
   else {
         /* Open clipboard.device unit 0 */
         if(!(ClipIO=CBOpen(0L)))
           {
            printf("exit error - Can't open ClipBoard\n");
           }
         else
           {
            CBWFTXT(ClipIO,dirname);
            CBClose(ClipIO);
           }
        }
  /* if(IntuitionBase)     CloseLibrary((struct Library *)IntuitionBase); */

   exit(0);
}

int GDirectory(char *dirbuff)
{
struct Library *AslBase = NULL;

struct TagItem frtags[] =
{
    ASL_Hail,       (ULONG)"GDir v2.0    Mark Weller (c)2000",
    ASL_Height,     200,
    ASL_Width,      400,
    ASL_LeftEdge,   50,
    ASL_TopEdge,    25,
    ASL_OKText,     (ULONG)"OK",
    ASL_CancelText, (ULONG)"Cancel",
 /* ASL_File,       (ULONG)"my file", */
 /* ASL_Dir,        (ULONG)"RAM:",    */
    TAG_DONE
};

struct FileRequester *fr;
int err = 0;
char filebuff[50];


    if(AslBase=(struct Library *)OpenLibrary("asl.library",0L))
      {
       if(fr = (struct FileRequester *)AllocAslRequest(ASL_FileRequest, frtags))
         {
            if (AslRequest(fr, NULL))
            {
                sprintf(dirbuff,"%s",fr->rf_Dir);
                sprintf(filebuff,"%s",fr->rf_File);
                AddPart(dirbuff,filebuff,200);
            }
            FreeAslRequest(fr);
         }
        else  err = 1;

        CloseLibrary(AslBase);
      }

  return(err);
}

