home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / useful / util / moni / snoopdos / source / snoopdos.h < prev    next >
C/C++ Source or Header  |  1994-09-17  |  41KB  |  1,123 lines

  1. /*
  2.  *        SNOOPDOS.H                                                vi:ts=4
  3.  *
  4.  *      Copyright (c) Eddy Carroll, September 1994.
  5.  *
  6.  *        This header file defines all the global variables and structures
  7.  *        used by the various SnoopDos code modules.
  8.  *
  9.  *        Exactly one module should #define MAIN before including this file,
  10.  *        to ensure that the variables are defined (as opposed to declared).
  11.  */
  12.  
  13. #undef GLOBAL
  14. #undef INIT
  15.  
  16. #ifdef MAIN
  17. #  define GLOBAL
  18. #  define INIT(x)    = x
  19. #else
  20. #  define GLOBAL    extern
  21. #  define INIT(x)
  22. #endif
  23.  
  24. #ifndef SNOOPTEXT_H
  25. #define CATCOMP_NUMBERS
  26. #include "snooptext.h"
  27. #endif
  28.  
  29. #define MSG(x)        TextTable[x]
  30.  
  31. #define MAX(x,y)    ((x) > (y) ? (x) : (y))
  32. #define MIN(x,y)    ((x) < (y) ? (x) : (y))
  33.  
  34. #define BTOC(addr)    ((void *)(((ULONG)(addr)) << 2))
  35.  
  36. #define SETTINGS_BASENAME    "SnoopDos.prefs"
  37. #define LOGFILE_NAME        "SnoopDos.log"
  38. #define PORT_NAME            "SNOOPDOS"
  39. // #define PATCHES_NAME        "SnoopDos Patches"        /* Up to beta 11           */
  40. #define PATCHES_NAME        "SnoopDos Patchlist"    /* Beta 12 onwards       */
  41. #define HELP_BASENAME        "SnoopDos"
  42. #define HELP_AREXX_PORT        "SNOOPDOS_HELP"
  43. #define APPICON_NAME        "SnoopDos"
  44. #define BACKGROUND_NAME        "SnoopDos Support Process"
  45.  
  46. #define MINSTACKSIZE        12288    /* Minimum stack size we can run with    */
  47.  
  48. /*
  49.  *        Global constants
  50.  */
  51. #define MAX_STR_LEN            200        /* Max. string length for misc stuff    */
  52. #define MAX_SHORT_LEN        40        /* Max. short string len for misc stuff    */
  53. #define MAX_LOCK_LEN        100        /* Max. length of a lock string            */
  54. #define MIN_BUF_SIZE        4096    /* Min. size of history buffer            */
  55. #define PC_NAMELEN            40        /* Max. length of cached task names        */
  56. #define MAX_SEGTRACKER_LEN    50        /* Max. len of segtracker module name    */
  57. #define MAX_FORM_LEN        50        /* Max number of format %'s in form str    */
  58. #define NUM_PCACHE_ENTRIES    16        /* No. of task IDs to cache                */
  59. #define NUM_PACKET_ENTRIES    5        /* No. of outstanding packets to cache    */
  60. #define NUM_CACHED_TASKS    10        /* No. of task entries to cache            */
  61. #define MAX_DOS_DEVICES        100        /* Maximum no of DOS devs we recognise    */
  62. #define LOGBUFFER_SIZE        8192    /* Size of buffer for file logging        */
  63. #define SAVEBUFFER_SIZE        4096    /* Size of i/o buffer for saving buffer    */
  64. #define MAX_LOAD_NESTING    3        /* Only 3 levels of nested config files    */
  65. #define MAX_FIELD_LEN        99        /* Maximum width of a format field        */
  66.  
  67. /*
  68.  *        Constants associated with specific functions
  69.  */
  70. #define SETBUF_KEEPOLD        0        /* Keep old buffer when allocating new    */
  71. #define SETBUF_FORCENEW        1        /* Force new, even if means losing old    */
  72.  
  73.                                     /*       --- for ShowBuffer() ---       */
  74. #define DISPLAY_QUICK        1        /* Redraw buffer using quickest method    */
  75. #define DISPLAY_ALL            2        /* Force redraw of all lines in buffer    */
  76. #define DISPLAY_NONE        4        /* Only update vars, don't refresh        */
  77.  
  78.                                     /*      --- for CreateEvent() ---        */
  79. #define NO_EXPAND            0        /* Don't expand filenames to full paths    */
  80. #define EXPAND_NAME            1        /* Do expand filenames to full paths    */
  81.  
  82.                                     /*    --- for InstallNewFormat() ---    */
  83. #define NEW_LISTVIEW        0        /* Indicates new listview format        */
  84. #define NEW_STRING            1        /* Indicates new string format            */
  85.  
  86.                                     /*      -- for MainLoop() --            */
  87. #define DEFAULT_WIDTH        832        /* Default window width                    */
  88. #define DEFAULT_HEIGHT        300        /* Default window height                */
  89.  
  90.                                     /*      -- CurrentLogType --            */
  91. #define LT_FILE                0        /* Currently logging to a file            */
  92. #define LT_DEVICE            1        /* Currently logging to a device        */
  93. #define LT_DEBUG            2        /* Currently logging to debug device    */
  94.  
  95.                                     /*      -- MonitorMode --               */
  96. #define MONITOR_NORMAL        0        /* Monitoring normal activity           */
  97. #define MONITOR_PAUSED        1        /* Currently paused                        */
  98. #define MONITOR_DISABLED    2        /* Currently disabled                    */
  99.  
  100.                                     /*         -- ShowGadget() --            */
  101. #define GADGET_DOWN           0        /* Show gadget in selected state        */
  102. #define GADGET_UP             1        /* Show gadget in unselected state        */
  103.  
  104.                                     /*         -- SelectFont() --            */
  105. #define FONTSEL_WINDOW        0        /* Request new window font                */
  106. #define FONTSEL_BUFFER        1        /* Request new buffer font                */
  107.  
  108.                                     /*         -- SelectFile() --            */
  109. #define FILESEL_LOADCONFIG    0        /* Request name of existing config file    */
  110. #define FILESEL_SAVECONFIG    1        /* Request name of new config file        */
  111. #define FILESEL_DEFLOGNAME    2        /* Request name of default log file        */
  112. #define FILESEL_NEWLOGNAME    3        /* Request name of new log file            */
  113. #define FILESEL_SAVEBUFFER    4        /* Request name of save buffer file        */
  114. #define FILESEL_SAVEWINDOW    5        /* Request name of save window file        */
  115.  
  116.                                     /*         -- SaveConfig() --           */
  117. #define SAVE_NOICON         0        /* Don't save icon with settings file     */
  118. #define SAVE_ICON             1        /* Try and save icon with settings file    */
  119.  
  120.                                     /*        -- SetLogGadget() --          */
  121. #define LG_NOREFRESH        0        /* Don't refresh main log mode gadgets    */
  122. #define LG_REFRESH            1        /* Do refresh main win log mode gadgets    */
  123.  
  124.                                     /*      -- RecalcMainWindow() --        */
  125. #define NOREDRAW_GADGETS    0        /* Don't redraw gadgets after recalc    */
  126. #define REDRAW_GADGETS        1        /* Do redraw gadgets after recalc        */
  127.  
  128.                                     /*      -- UpdateDeviceList() --        */
  129. #define SCANDEV_DELAY        0        /* Wait before checking for new devices    */
  130. #define SCANDEV_IMMEDIATE    1        /* Check for new devices immediately    */
  131.  
  132.                                     /*      -- CreateCustomImage() --        */
  133. #define IMAGE_FONT            0        /* Request image for font button        */
  134. #define IMAGE_FILE            1        /* Request image for file button        */
  135.  
  136.                                     /*         -- SaveBuffer() --            */
  137. #define SAVEBUF_WINDOW        0        /* Save only visible portion of buffer    */
  138. #define SAVEBUF_ALL            1        /* Save entire buffer                    */
  139. #define SAVEBUF_CLIPBOARD    ((char *)(-1)) /* Indicates saving to clipboard    */
  140.  
  141. #define SAVEBUF_PROMPT        0        /* Prompt user before overwriting file    */
  142. #define SAVEBUF_OVERWRITE    1        /* Always verwrite existing file        */
  143.  
  144. #define KB_SHORTCUT_SIZE    256        /* Size of array for keyboard shortcuts    */
  145.  
  146. /*
  147.  *        Macro (courtesy of Doug Walker) used to allocate longword-aligned
  148.  *        data on the stack. We can't use __aligned inside our patches
  149.  *        because the caller may not have a longword-aligned stack.
  150.  */
  151. #define D_S(name, type) char c_##name[sizeof(type)+3];\
  152.                         type *name = (type *)((long)(c_##name+3) & ~3)
  153.  
  154. /*
  155.  *        This is the template used to match tasks, when we exclude the
  156.  *        Workbench and Shell tasks from the list. %s refers to the user's
  157.  *        chosen pattern. We really want to use a pattern of (A & B) where
  158.  *        A is the pattern that excludes Workbench/Shell and B is the
  159.  *        user pattern. Since AmigaDOS doesn't support an & operator, we
  160.  *        need to use boolean logic to transform this to ~(~A | ~B) which
  161.  *        produces the string below.
  162.  *
  163.  *        PAT_EASY_EXCLUDE is used when there is no match string -- it's a
  164.  *        slightly simpler (and hopefully faster) version of the exclude
  165.  *        system tasks string.
  166.  */
  167. #define PAT_COMPLEX_EXCLUDE    "~((Workbench|Shell Process|Background CLI)|~(%s))"
  168. #define PAT_EASY_EXCLUDE    "~(Workbench|Shell Process|Background CLI)"
  169.  
  170. /*
  171.  *        Some list stuff
  172.  */
  173. typedef struct List                List;
  174. typedef struct MsgPort            MsgPort;
  175. typedef struct Node                Node;
  176. typedef struct SignalSemaphore    Semaphore;
  177. typedef struct Task                Task;
  178. typedef struct Process            Process;
  179. typedef struct Requester        Requester;
  180.  
  181. #define HeadNode(list)        ((void *)((list)->lh_Head))
  182. #define TailNode(list)        ((void *)((list)->lh_TailPred))
  183. #define NextNode(node)        ((void *)((Node *)(node))->ln_Succ)
  184. #define PrevNode(node)        ((void *)((Node *)(node))->ln_Pred)
  185.  
  186. #define FORLIST(list,p)        for ((p) = (void *)(list)->lh_Head;            \
  187.                                  ((Node *)(p))->ln_Succ;                \
  188.                                  (p) = (void *)((Node *)(p))->ln_Succ)
  189.  
  190.  
  191. /*
  192.  *        Now our gadget IDs
  193.  *
  194.  *        If you're changing the order of the first 20-30 boolean gadgets,
  195.  *        then be sure to make corresponding changes to the tables contained
  196.  *        in PATCHES.C and SETTINGS.C.
  197.  */
  198. typedef enum {
  199.     GID_DUMMY,            /* Make sure gadget ID never equals zero */
  200.  
  201. #define FIRST_BOOL_GADGET    GID_FINDPORT
  202.  
  203. #define FIRST_SYS_GADGET    GID_FINDPORT
  204.  
  205.     GID_FINDPORT,        
  206.     GID_FINDRESIDENT,    
  207.     GID_FINDSEMAPHORE,    
  208.     GID_FINDTASK,        
  209.     GID_LOCKSCREEN,        
  210.     GID_OPENDEVICE,        
  211.     GID_OPENFONT,        
  212.     GID_OPENLIBRARY,    
  213.     GID_OPENRESOURCE,    
  214.     GID_READTOOLTYPES,    
  215.     GID_SENDREXX,    
  216.  
  217. #define LAST_SYS_GADGET        GID_SENDREXX