/*
 *  Source machine generated by GadToolsBox V1.4
 *  which is (c) Copyright 1991,92 Jaba Development
 */

#include <clib/alib_protos.h>
#include <exec/exec.h>
#include <stdio.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <libraries/asl.h>
#include <libraries/commodities.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <dos.h>
#include <dos/dos.h>
#include <proto/dos.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/gadtools.h>
#include <proto/graphics.h>
#include <proto/utility.h>
#include <proto/icon.h>
#include <proto/wb.h>
#include <proto/asl.h>
#include <proto/rexxsyslib.h>
#include <proto/commodities.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <workbench/startup.h>
#include <workbench/icon.h>
#include <pragmas/dos_pragmas.h>
#include <pragmas/icon_pragmas.h>
#include <pragmas/wb_pragmas.h>
#include <pragmas/exec_pragmas.h>
#include <pragmas/intuition_pragmas.h>
#include <pragmas/gadtools_pragmas.h>
#include <pragmas/graphics_pragmas.h>
#include <pragmas/utility_pragmas.h>
#include <pragmas/commodities_pragmas.h>
#include <pragmas/rexxsyslib_pragmas.h>
#include <pragmas/asl_pragmas.h>
#include <rexx/rxslib.h>
#include <rexx/rexxio.h>
#include <rexx/storage.h>
#include <ctype.h>

#define GD_Gadget00                            0
#define GD_pattern                             1
#define GD_insert                              2
#define GD_sub                                 3
#define GD_del                                 4
#define GD_filter                              5
#define GD_output                              6
#define GD_outfilename                         7
#define GD_flag_wnum                           8
#define GD_flag_linenumber                     9
#define GD_flag_distance                       10
#define GD_flag_word                           11
#define GD_start                               12
#define GD_size                                13
#define GD_stop                                14
#define GD_filestring                          15
#define GD_requestfile                         16
#define GD_delim                               17
#define GD_errors                              18
#define GD_fromline                            19
#define GD_toline                              20

#define GDX_Gadget00                           0
#define GDX_pattern                            1
#define GDX_insert                             2
#define GDX_sub                                3
#define GDX_del                                4
#define GDX_filter                             5
#define GDX_output                             6
#define GDX_outfilename                        7
#define GDX_flag_wnum                          8
#define GDX_flag_linenumber                    9
#define GDX_flag_distance                      10
#define GDX_flag_word                          11
#define GDX_start                              12
#define GDX_size                               13
#define GDX_stop                               14
#define GDX_filestring                         15
#define GDX_requestfile                        16
#define GDX_delim                              17
#define GDX_errors                             18
#define GDX_fromline                           19
#define GDX_toline                             20


#define Project0_CNT 21 

#define GetString( g )      ((( struct StringInfo * )g->SpecialInfo )->Buffer  )
#define GetNumber( g )      ((( struct StringInfo * )g->SpecialInfo )->LongInt )
#define GetUndo( g )      ((( struct StringInfo * )g->SpecialInfo )->UndoBuffer  )


#define MODE_LOADCONFIG      1
#define MODE_SAVECONFIG_ENV  2
#define MODE_SAVECONFIG_ARC  3
#define MODE_SAVEREQUEST     4
#define MODE_LOADREQUEST     5
#define MODE_INSERTNAME      6
#define MODE_SAVEOLD         7
#define STRINGSIZE           256

extern struct Screen        *Scr;
extern UBYTE                 *PubScreenName;
extern APTR                  VisualInfo;
extern struct Window        *Project0Wnd;
extern struct Gadget        *Project0GList;
extern struct Menu          *Project0Menus;
extern struct IntuiMessage   Project0Msg;
extern struct Gadget        *Project0Gadgets[21];
extern UWORD                 Project0Left;
extern UWORD                 Project0Top;
extern UWORD                 Project0Width;
extern UWORD                 Project0Height;
extern UBYTE                *Project0Wdt;
extern struct TextAttr      *Font, Attr;
extern UWORD                 FontX, FontY;
extern UWORD                 OffX, OffY;
extern struct GfxBase       *GfxBase;
extern UBYTE                *output0Labels[];
extern struct NewMenu        Project0NewMenu[];
extern UWORD                 Project0GTypes[];
extern struct NewGadget      Project0NGad[];
extern ULONG                 Project0GTags[];

extern int Gadget00Clicked( void );
extern int patternClicked( void );
extern int insertClicked( void );
extern int subClicked( void );
extern int delClicked( void );
extern int filterClicked( void );
extern int outputClicked( void );
extern int outfilenameClicked( void );
extern int flag_wordClicked( void );
extern int flag_linenumberClicked( void );
extern int flag_distClicked( void );
extern int flag_wnumClicked( void );
extern int startClicked( void );
extern int sizeClicked( void );
extern int stopClicked( void );
extern int filestringClicked( void );
extern int requestfileClicked( void );
extern int delimClicked( void );
extern int fromlineClicked(void);
extern int tolineClicked(void);
extern int Project0loadconfig( void );
extern int Project0saveconfig( void );
extern int Project0saveasconfig( void );
extern int Project0savedefault( void );
extern int Project0about( void );
extern int Project0quit( void );
extern int Project0writeicons( void );
extern int Project0resetdef( void );
extern int Project0reset(void);

extern int SetupScreen( void );
extern void CloseDownScreen( void );
extern void Project0Render( void );
extern int HandleProject0IDCMP( void );
extern int Project0CloseWindow( void );
extern int Project0VanillaKey( void );
extern int OpenProject0Window( void );
extern void CloseProject0Window( void );


/*--------------------------------------------------------*/


struct find_info
       {
        struct {
                struct MsgPort        *port;
                struct AppMenuItem    *men_w;
                struct AppMenuItem    *men_q;
                struct AppWindow      *awd;
                struct AppMessage     *amsg;
               }App;
        struct {
                struct MsgPort        *Port;
                struct MsgPort        *Reply;
                struct RexxMsg        *rmsg; 
                struct RexxMsg         ourmsg;
                ULONG                  msg_out;               
               }Rx;      
        struct {
                ULONG          ins;
                ULONG          del;
                ULONG          sub;
               }weight; 
        struct {
                ULONG          size;
                ULONG          bytes;
                ULONG         *data;
               }data;    
        struct {
                unsigned       dist    : 1;
                unsigned       linenum : 1;
                unsigned       word    : 1;
                unsigned       wnum    : 1;
               }flags;
        struct {
                UBYTE         save_dir[STRINGSIZE];
                UBYTE         save_file[STRINGSIZE];
                UBYTE         load_dir[STRINGSIZE];
                UBYTE         load_file[STRINGSIZE];
                UBYTE         outfile[STRINGSIZE];
                UBYTE         search[STRINGSIZE];
                UBYTE         filename[STRINGSIZE];
                UBYTE         delim[STRINGSIZE];
                UBYTE         error[STRINGSIZE];
                UBYTE         buffer[STRINGSIZE + STRINGSIZE];
               }strings;  
        struct {
                struct List   list;
                ULONG         filter;
                ULONG         count;
               }match;      
        struct {
                ULONG         waitsig;
                FILE         *inp;
                FILE         *outp;
                struct List   lines;
                ULONG         from_rx;
                ULONG         lasterror;
                ULONG         out;
                ULONG         disable;
                ULONG         fromline;
                ULONG         toline;
                ULONG         writeicon;
               }misc;               
        struct {
                struct NewBroker  nbrk;
                CxObj            *broker;  
                CxObj            *key;
                CxObj            *sender;
                CxObj            *translate;
                UBYTE             hotkey[STRINGSIZE];           
               }broker;
        UBYTE  title[STRINGSIZE];
       };
       
struct RxCmd
       {
        UBYTE *cmd;
        ULONG  code;
       };
       
union wbstart
      {
       char **args;
       struct WBStartup *msg;
      };

/*--------------------------------------------------------*/


extern struct IntuitionBase *IntuitionBase;
extern struct GfxBase       *GfxBase;
extern struct Library       *UtilityBase;
extern struct Library       *IconBase;
extern struct Library       *WorkbenchBase;
extern struct Library       *GadToolsBase;
extern struct Library       *AslBase;
extern struct Library       *CxBase;
extern struct Library       *RexxSysBase;
extern struct find_info     info;

extern void __stdargs main(int argc,union wbstart argv);
extern int InitInfo(void);
extern void FreeInfo(void);
extern int  SetDefaults(void);
extern void SetSignals(void);
extern int  HandleApp(void);
extern int ReqFile(ULONG mode);
extern void putmsg(ULONG msg);
extern int OpenBroker(int argc,char **argv);
extern void CloseBroker(void);
extern int HandleBroker(void);
extern void DisableAll(void);
extern void EnableAll(void);
extern void WLDMatch(void);
extern int  CheckPorts(void);
extern int Readfile(void);
extern void Freefile(void);
extern int CheckPorts(void);
extern ULONG wld_min(ULONG x,ULONG y, ULONG z);
extern ULONG compare(ULONG i,ULONG j);
extern BYTE wld(void);
extern void  Freematchlist(void);
extern void  outputlist(void);
extern void printheader(FILE *fp);
extern int OpenFRX(void);
extern void CloseFRX(void);
extern int HandleRx(void);
extern int addappmenus(void);
extern void remappmenus(void);
extern int CheckExist(ULONG mode);
extern void loadconfig(void);
extern void saveconfig(void);
extern void matchline(struct Node *node,ULONG line);
extern void LoadIcon(int argc, union wbstart argv);
extern void SendAClip(UBYTE *clip);
extern void FillClip(void);