/* ** Find - AmigaDOS 2.04 commodities utility ** ** Copyright © 1991-1992 by Olaf `Olsen' Barthel ** All Rights Reserved */ /* A couple of handy gadtools object macros. */ #define GT_CHECKED(G) ((((struct Gadget *)(G)) -> Flags & GFLG_SELECTED) ? TRUE : FALSE) #define GT_STRING(G) (((struct StringInfo *)(((struct Gadget *)(G)) -> SpecialInfo)) -> Buffer) /* A macro to set the wait mouse pointer. */ #define SetWait(Window) SetPointer((Window),&Stopwatch[0],16,16,-6,0) /* Various signal bits. */ #define SIG_REPLY (1 << ReplySignal) #define SIG_CLIP (1 << ClipPort -> mp_SigBit) #define SIG_WORKBENCH (WorkbenchPort ? (1 << WorkbenchPort -> mp_SigBit) : NULL) #define SIG_ICON (1 << IconPort -> mp_SigBit) #define SIG_WINDOW (1 << Window -> UserPort -> mp_SigBit) #define SIG_CX (CxPort ? (1 << CxPort -> mp_SigBit) : NULL) #define SIG_KILL SIGBREAKF_CTRL_C /* Shell argument IDs. */ enum { ARG_AREA,ARG_PATTERN,ARG_NOWILDCARDS,ARG_POPKEY,ARG_PRI,ARG_POPUP }; /* Menu IDs. */ enum { MEN_FULL=1,MEN_FILE,MEN_LIST,MEN_ABOUT,MEN_QUIT,MEN_COPY, MEN_SELECTAREA,MEN_ICONIFY }; /* Gadget IDs. */ enum { GAD_NONE_ICONIFY=-2,GAD_NONE,GAD_SEARCHAREA,GAD_SEARCHFOR,GAD_WILDCARDS,GAD_START,GAD_TEXT,GAD_SCROLLER,GAD_FILELIST }; /* Filetype IDs. */ enum { TYPE_FILE,TYPE_DIR,TYPE_ICON, TYPE_TEXT, TYPE_C,TYPE_H, TYPE_ASM,TYPE_I, TYPE_MOD, TYPE_REXX, TYPE_BASIC, TYPE_AMIGAGUIDE, TYPE_TEX,TYPE_METAFONT,TYPE_GF,TYPE_TEXFONT,TYPE_TEXDVI,TYPE_FLIB, TYPE_OLDMANX,TYPE_NEWMANX,TYPE_OLDMANXLIB,TYPE_NEWMANXLIB, TYPE_OBJECT,TYPE_LIB, TYPE_EXECUTABLE, TYPE_LIBRARY,TYPE_DEVICE,TYPE_FILESYS,TYPE_HANDLER, TYPE_GIF,TYPE_DEGAS,TYPE_MACPAINT,TYPE_SUPERPAINT,TYPE_PICT,TYPE_SUNRASTER,TYPE_POSTSCRIPT,TYPE_PCX,TYPE_TIFF,TYPE_BMP,TYPE_JFIF,TYPE_ILBM, TYPE_ANIM,TYPE_8SVX,TYPE_SMUS,TYPE_FTXT,TYPE_PREFS,TYPE_TERM,TYPE_AMIGAVISION,TYPE_IFF, TYPE_IMPLODER,TYPE_POWERPACKER,TYPE_LHPAK,TYPE_LHASFX, TYPE_ARC,TYPE_ARJ,TYPE_COMPRESSED,TYPE_CPIO,TYPE_MACCOMPRESS,TYPE_COMPACT,TYPE_DIAMOND,TYPE_LHARC,TYPE_LHA,TYPE_ZOO,TYPE_ZIP,TYPE_STUFFIT,TYPE_PACKIT,TYPE_DMS,TYPE_WARP,TYPE_ZOOM, TYPE_SPARCOBJECT,TYPE_SPARCEXECUTABLE, TYPE_MSDOSEXECUTABLE, TYPE_ATARIEXECUTABLE, TYPE_MACEXECUTABLE, TYPE_LINK }; /* The NameString structure. */ struct NameString { UBYTE *NamePart; ULONG Protection; LONG Size; LONG Blocks; struct DateStamp Date; UBYTE Type; BYTE Selected; UBYTE Name[1]; }; /* An extended node structure. */ struct FatNode { struct Node VanillaNode; UBYTE Name[40]; }; /* Find.c */ VOID __regargs DisableWindow(BYTE IncludeStart); VOID EnableWindow(VOID); VOID __saveds __asm EditRoutine(register __a0 struct Hook *Hook,register __a1 ULONG *Msg,register __a2 struct SGWork *Work); VOID __saveds ClipServer(VOID); BYTE __regargs SaveClip(UBYTE *Buffer,LONG Size); LONG __regargs LoadClip(UBYTE *Buffer,LONG Size); VOID __stdargs ShowMessage(UBYTE *Text,...); BOOL __stdargs ShowRequest(UBYTE *Text,UBYTE *Gadgets,...); UBYTE * __regargs BuildBits(ULONG Protection); VOID __regargs BuildDate(struct DateStamp *Stamp); VOID __regargs BuildList(UBYTE *String); VOID __regargs ClearRect(WORD Len,WORD Top); VOID RefreshList(VOID); BYTE SelectSearchArea(VOID); VOID RefreshFile(VOID); VOID RefreshGfx(VOID); BYTE __regargs Iconify(BYTE Complain); VOID ClearFileInfo(VOID); VOID __stdargs DrawFileInfo(WORD X,WORD Y,BYTE Cut,UBYTE *Format,...); VOID FreeNameList(VOID); struct NameString * __regargs AddNameList(UBYTE *Name); VOID __regargs MatchSetup(UBYTE *Pattern,BYTE Wildcards); BYTE __regargs MatchString(UBYTE *String); BYTE CheckAbort(VOID); VOID __regargs StartSearch(BPTR Dir,UBYTE *Name,UBYTE Levels); LONG __stdargs Compare(struct NameString **A,struct NameString **B); BYTE __regargs IsAssign(UBYTE *Name); VOID __regargs MultiSearch(UBYTE *Name,UBYTE *TempName); VOID ShowInfo(VOID); VOID FindFile(VOID); struct Gadget * __regargs CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge); VOID CloseGfx(VOID); VOID __regargs CentreWindow(struct Screen *Screen,WORD *LeftEdge,WORD *TopEdge,WORD Left,WORD Top); BYTE OpenGfx(VOID); VOID __regargs CloseAll(LONG ReturnCode); VOID OpenAll(VOID); VOID ShutdownCx(VOID); BYTE SetupCx(VOID); VOID SetupWindow(VOID); VOID __regargs HandleCxMsg(CxMsg *Message); LONG __regargs ListName(BPTR File,LONG Index); VOID __regargs SaveList(LONG Mode); VOID __saveds FindServer(VOID); VOID __stdargs main(int argc,char **argv); /* Identify.c */ UBYTE __regargs Identify(UBYTE *Name); /* QuickSort.asm. */ VOID __stdargs qsort(APTR,LONG,LONG,APTR); /* External data declarations. */ extern struct ExecBase *SysBase; extern struct DosLibrary *DOSBase; extern struct IntuitionBase *IntuitionBase; extern struct GfxBase *GfxBase; extern struct Library *WorkbenchBase; extern struct Library *IconBase; extern struct Library *IFFParseBase; extern struct Library *GadToolsBase; extern struct Library *UtilityBase; extern struct Library *AslBase; extern struct Library *CxBase; extern struct Process *MainProcess; extern struct Process *FindProcess; extern BYTE ReplySignal; extern struct Process *ClipProcess; extern struct MsgPort *ClipPort; extern struct MsgPort *WorkbenchPort; extern struct AppWindow *WorkbenchWindow; extern struct Hook StringHook; extern struct WBStartup *WBenchMsg; extern APTR VisualInfo; extern struct Gadget *GadgetList; extern struct Gadget *GadgetArray[7]; extern struct Screen *DefaultScreen; extern struct Window *Window; extern UBYTE WindowTitle[300]; extern struct Gadget *LastActiveGadget; extern UWORD WindowWidth, WindowHeight; extern struct RastPort *RPort; extern struct DrawInfo *DrawInfo; extern BYTE SelectWhich; extern WORD ListTopLine, PathTopLine, ListRightColumn; extern struct NameString **NameList; extern LONG NumNames, MaxNames; extern struct List FileList; extern struct FatNode FileNames[10]; extern struct List EmptyList; extern UBYTE FullFileName[512],LastFileName[32]; extern LONG MaxNameLen; extern UBYTE MaxNameFormat[50]; extern LONG NumFiles, NumDirs, NumLinks; extern UBYTE AreaName[256], SearchString[256], MessageBuffer[256]; extern UWORD __chip Stopwatch[(2 + 16) * 2]; extern struct TextFont *DefaultFont; extern struct TextAttr SystemFont; extern UBYTE SystemFontName[256]; extern UWORD SystemFontWidth, SystemFontHeight, SystemFontBase; extern struct TextAttr BigSystemFont; extern UBYTE BigSystemFontName[256]; extern struct IBox ZoomBox; extern UBYTE *FileTypes[]; extern struct FileRequester *FileRequest, *SaveFileRequest; extern struct NewMenu FindMenuConfig[]; extern struct Menu *FindMenu; extern struct NewBroker NewBroker; extern struct MsgPort *CxPort; extern CxObj *Broker; extern UBYTE HotkeyBuffer[256]; extern LONG CxPriority; extern UBYTE **ToolTypes; extern UBYTE MatchData[256],NewPattern[256],PatternDistance[256]; extern WORD PatternWidth; extern BYTE UseWildcards; extern BYTE Aborted, Scanning, WasIconified, NewLook, Terminated, IconTerminated, DoIconify; extern LONG ListTop, LastSelected; extern UBYTE Date[20], Time[20];