
#include <clib/alib_protos.h>
#include <exec/exec.h>
#include <exec/lists.h>
#include <exec/nodes.h>
#include <stdio.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <libraries/gadtools.h>
#include <libraries/asl.h>
#include <libraries/commodities.h>
#include <devices/input.h>
#include <dos.h>
#include <dos/dos.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/gadtools.h>
#include <proto/utility.h>
#include <proto/icon.h>
#include <proto/asl.h>
#include <proto/commodities.h>
#include <string.h>
#include <stdlib.h>
#include <workbench/startup.h>
#include <workbench/icon.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/icon_pragmas.h>
#include <pragmas/exec_pragmas.h>
#include <pragmas/intuition_pragmas.h>
#include <pragmas/gadtools_pragmas.h>
#include <pragmas/utility_pragmas.h>
#include <pragmas/commodities_pragmas.h>
#include <pragmas/asl_pragmas.h>


#define STRINGSIZE 256
#define ASCSEND_VERSION "$VER: ASC_SEND 1.14 "__DATE__" "__TIME__
#define HOTKEY_BASE  3
#define RETURN_QUIT  0
#define RETURN_STOP  1
#define RETURN_IS_OK 2

#define  MODE_CHANGE   0
#define  MODE_NEW      1
#define  GET_A_FILE    0
#define  GET_A_STRING  1

#define  my_AddIEvents(ie) {s_HandlerIO->io_Data    = (APTR)ie;  DoIO((struct IORequest *)s_HandlerIO);}



#define IE_COUNT       40

struct action 
       {
        CxObj            *key;
        CxObj            *sender;
        CxObj            *translate;
        UBYTE             hotkey[STRINGSIZE];           
        UBYTE             file [STRINGSIZE];
	LONG              id;
       };
       
struct a_node
       {
	struct Node   an_Node;
	struct action an_action;
       };
/*--------------------------------------------------------*/

extern  struct NewBroker  newbroker;
extern  CxObj            *broker;  
extern  struct List       actions; 

extern struct IntuitionBase *IntuitionBase;
extern struct GfxBase       *GfxBase;
extern struct Library       *UtilityBase;
extern struct Library       *IconBase;
extern struct Library       *AslBase;
extern struct Library       *CxBase;

extern void __stdargs main(int argc,char **argv);
extern int            OpenBroker(int argc, char **argv);
extern void           CloseBroker(void);
extern struct a_node *MakeActionNode(UBYTE *key,UBYTE *file, LONG id);
extern void           RemActionNode(struct a_node *node);
extern int            HandleBroker(void);
extern struct a_node *Findentry(LONG id);
extern int            showrequest(void);

extern UBYTE      __regargs *makemem(ULONG size);
extern void                  releasemem(void *mem);
extern UBYTE __regargs *getfilebuffer(UBYTE *filename,ULONG mode);
extern void  __regargs freefilebuffer(UBYTE *buffer,ULONG size);
extern BOOL  __regargs getnextchar(UBYTE *buffer,UBYTE *where);
extern long  __regargs  Sendfile(UBYTE *filename,ULONG mode);
extern LONG            makeIHandler(void);
extern void            remIHandler(void);