home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / asm_programming / MJRDEVEL.ARC / MESSAGE.H < prev    next >
Text File  |  1989-03-17  |  14KB  |  226 lines

  1. /*        Header file for use with messages: E-Mail and SIGs               */
  2. /*   Copyright (C) 1988 GALACTICOMM, Inc.      All Rights Reserved.        */
  3.  
  4. #define SIGSTT       9        /* SIG and E-Mail state codes - don't change */
  5. #define EMLSTT      11        /*  unless also changing module struct names */
  6.  
  7. #define NSOFAR  20                 /* number of quickscan SIGs per user    */
  8. #define MAXSIG 200                 /* max number of SIGs total             */
  9. #define MXKWLN  25                 /* max keyword group length (incl. '\0')*/
  10. #define NQSKWG   5                 /* number of quickscan keyword groups   */
  11.  
  12. extern
  13. struct sofars {                    /* highest-msg-#-so-far quickscan info  */
  14.      char signo;                   /*   SIG number in quickscan            */
  15.      long msgno;                   /*   highest msg # read so far in SIG   */
  16. } *sfrptr;                         /* scratch ptr for scanning thru sofars */
  17.  
  18. extern
  19. struct qscfg {                     /* quickscan/config per-user data       */
  20.      char userid[UIDSIZ];          /* master key for lookups               */
  21.      struct sofars sofars[NSOFAR]; /* highest-msg-#-so-far quickscan info  */
  22.      char access[MAXSIG/2];        /* SIG access bits, 4/SIG/user (packed) */
  23.      char qskwds[NQSKWG][MXKWLN];  /* quickscan keywords                   */
  24.      char cursig;                  /* current SIG                          */
  25.      char flags;                   /* SIG-related account attributes       */
  26.      char spare[338-337];          /* spare space, decrease when adding on */
  27. } *sopqsc,                         /* singular SYSOP/SIG-Op scratch area   */
  28.   *qscfgs,                         /* base ptr to dynam allocated array    */
  29.   *qscptr;                         /* ptr to current user's qscfgs entry   */
  30.  
  31. extern
  32. struct usracc *sopusa;             /* singular SYSOP/SIG-Op scratch acct   */
  33.  
  34. extern
  35. char dftnlv[MAXSIG/2],       /* default non-live SIG access bits     */
  36.      dftliv[MAXSIG/2],       /* default live SIG access bits         */
  37.      maxnlv[MAXSIG/2];       /* maximum non-live SIG access bits     */
  38.  
  39.                                    /* SIG access level codes               */
  40. #define NOAXES 0                   /*   no access                          */
  41. #define RDAXES 2                   /*   read access                        */
  42. #define DLAXES 4                   /*   download access                    */
  43. #define WRAXES 6                   /*   write access                       */
  44. #define ULAXES 8                   /*   upload access                      */
  45. #define COAXES 10                  /*   Co-Op access                       */
  46. #define OPAXES 12                  /* (ret from readac() when SIG-Op)      */
  47. #define SYAXES 14                  /* (ret from readac() when Sysop)       */
  48. #define NOTSET 15                  /*   not set yet (use default)          */
  49.  
  50.                                    /* SIG-related account attributes       */
  51. #define QSCFGD 1                   /*   quickscan has been configured      */
  52.  
  53. #define TPCSIZ   41                /* topic field size (including the '\0')*/
  54. #define AXTSIZ   33                /* aux topic size   (including the '\0')*/
  55. #define TXTSIZ 1921                /* messge text size (including the '\0')*/
  56.  
  57.                                    /* esigs.dat message database key id's  */
  58. #define TOTOPIC   0                /*   compos "to" User-ID + topic field  */
  59. #define FROMNUM   1                /*   compos "from" User-ID + msg number */
  60. #define TONUM     2                /*   compos "to" User-ID + msg number   */
  61.  
  62. #define FIRSTM    0L               /* "first message" code, for searches   */
  63. #define LASTM  0x7FFFFFFFL         /* "last message" code, for searches    */
  64.  
  65. struct message {
  66.      long msgno;                   /* message number                       */
  67.      char from[UIDSIZ];            /* message originator                   */
  68.      char to[UIDSIZ];              /* recipient User-ID or SIG name        */
  69.      char topic[TPCSIZ];           /* main topic, editable, carried over   */
  70.      char auxtpc[AXTSIZ];          /* auxillary topic (reply to #88888,    */
  71.                                    /*   fw by Aaaaaaaaa, cc: of #99999)    */
  72.      int crdate;                   /* message creation date                */
  73.      int crtime;                   /* message creation time of day         */
  74.      int nreply;                   /* number of times replied to           */
  75.      char flags;                   /* message/attachment flag bits         */
  76.      char text[TXTSIZ];            /* message text                         */
  77.      char spare[2034-2026];        /* spare space, decrease when adding on */
  78. };
  79.                                    /* message flag bits                    */
  80. #define ISSHDR  0x01               /*   message is SIG header format       */
  81. #define RECREQ  0x10               /*   return-receipt requested when read */
  82. #define INDRCT  0x20               /*   "indirect" att, direct has filespec*/
  83. #define FILATT  0x40               /*   file is attached to this message   */
  84. #define APPVED  0x80               /*   file attached is ok to download    */
  85.  
  86. struct sighdr {
  87.      long msgno;                   /* message number                       */
  88.      char from[UIDSIZ];            /* SIG-Op User-ID                       */
  89.      char to[UIDSIZ];              /* SIG name (with leading slash)        */
  90.      char topic[TPCSIZ];           /* SIG short description                */
  91.  
  92.      char signo;                   /* SIG number                           */
  93.      int  nmsgs;                   /* number of messages in the SIG        */
  94.      int  nfiles;                  /* number of files in the SIG           */
  95.      int  nw4app;                  /* number of files waiting for apprvl   */
  96.      char ispare[AXTSIZ-13];       /* a little internal spare space here   */
  97.      int  dfnlv;                   /* default non-live access setting      */
  98.      int  dfliv;                   /* default live access setting          */
  99.      int  mxnlv;                   /* maximum non-live access setting      */
  100.  
  101.      int crdate;                   /* SIG creation date                    */
  102.      int crtime;                   /* SIG creation time of day             */
  103.      int nreply;                   /* number of times replied to           */
  104.      char flags;                   /* settable SIG options                 */
  105.      char text[TXTSIZ];            /* SIG introductory msg (w/"thoughts")  */
  106.      char spare[2034-2026];        /* spare space, decrease when adding on */
  107. };
  108.  
  109. #define SIGIDC '/'                 /* SIG identifier character             */
  110. #define NOSIG  255                 /* code for absence-of-SIG              */
  111. #define UPLTYPS 10                 /* addend for upload protocol type codes*/
  112. #define NPREVS   5                 /* previous-msg file pos's maintained   */
  113. #define FSPSIZ  64                 /* filespec size (including the '\0')   */
  114.  
  115. struct esgusr {               /* esigs user data                           */
  116.      long fpos;               /*   message file position                   */
  117.      long prethr;             /*   fpos in effect b4 starting to thread    */
  118.      int keynum;              /*   key number in use                       */
  119.      FILE *fp;                /*   attachment/source file handle           */
  120.      FILE *fpout;             /*   destination file handle when copying    */
  121.      int fxftyp;              /*   file transfer method type code          */
  122.      int blknum;              /*   block number in progress                */
  123.      int lstsiz;              /*   DL: last block size UL: last byte count */
  124.      long curpos;             /*   current position within download file   */
  125.      int (*whndun)();         /*   esgutl when-done "return address"       */
  126.      struct message msg;      /*   esigs message data block                */
  127.      int ccount;              /*   carbon copy count toward maximum allowed*/
  128.      char dftinp;             /*   default input letter if CR hit          */
  129.      char usigno;             /*   SIG number that user is in, or NOSIG    */
  130.      int sigtck;              /*   "ticks" (credits) per SIG msg in cursig */
  131.      int sattck;              /*   "ticks" (credits) per upload in cursig  */
  132.      char keywds[MXKWLN];     /*   keywords being searched for (input stg) */
  133.      int sflags;              /*   run-time control flags                  */
  134.      long prvpos[NPREVS];     /*   previous-message file positions         */
  135.      int pvpidx;              /*   index position now active in prvpos[]   */
  136. };
  137.                               /* run-time control flags                    */
  138. #define SCNNXT   1            /*   scan direction is forward ("next")      */
  139. #define SCNCIS   2            /*   scan continuing in SIG (!starting anew) */
  140. #define SCNQUI   4            /*   quickscan in progress                   */
  141. #define SCNCIQ   8            /*   continuing quickscan (!first qs pass)   */
  142. #define SCN4AT  16            /*   scanning for attachments (download)     */
  143. #define SCN4UA  32            /*   scanning for unapproved attachments     */
  144. #define SCNKWD  64            /*   scanning (searching) for keywords       */
  145. #define SCN2LT 128            /*   scanning (listing) in 2-line-title mode */
  146. #define SCNFTX 256            /*   scanning (listing) in full-text mode    */
  147. #define CPYIPG 512            /*   file-copy operation in progress         */
  148.  
  149. #define esgptr ((struct esgusr *)vdaptr)    /* volatile data pointer casts */
  150. #define esgarr(u) ((struct esgusr *)(vdarea+((long)(u)*vdasiz)))
  151.  
  152. extern
  153. struct compos {               /* composite user-id/msg# for searches       */
  154.      char userid[UIDSIZ];     /*   user-id to or from, or SIG name         */
  155.      long msgno;              /*   message number                          */
  156. } compos;
  157.  
  158. extern
  159. struct sigdat {               /* ram-resident SIG data tables              */
  160.      char sigop[UIDSIZ];      /*   User-ID of SIG-Op                       */
  161.      char signam[UIDSIZ];     /*   SIG name                                */
  162.      char descrp[TPCSIZ];     /*   SIG short description                   */
  163.      char signo;              /*   SIG number                              */
  164.      int  nmsgs;              /*   number of messages in the SIG           */
  165.      int  nfiles;             /*   number of files in the SIG              */
  166.      int  nw4app;             /*   number of files waiting for approval    */
  167. } *sigdat,                    /* base ptr to dynamically allocated array   */
  168.   *sdtptr;                    /* scratch ptr for scanning thru sigdat      */
  169.  
  170. extern
  171. FILE *esgmb;                  /* esigs named-message file block ptr        */
  172. extern
  173. BTVFILE *esgbb,               /* esigs btrieve message file block ptr      */
  174.         *qscbb;               /* esigs quickscan/config btrieve file ptr   */
  175. extern
  176. BTVFILE *accbb;               /* user account btrieve file block pointer   */
  177. extern
  178. long filen;                   /* length of attachment found, from opnatt() */
  179. extern
  180. int esgstt;                   /* current/new usrptr->substt hold register  */
  181.  
  182. extern
  183. char *accstg[];               /* names of access levels                    */
  184.  
  185. char *attfs(),                /* form attachment filespec for current msg  */
  186.      *attfsp(),               /* form just primary (non-INDRCT) filespec   */
  187.      *attfsd(),               /* form destination filespec for copy/fwd    */
  188.      *attfsu(),               /* utility for use by attfsp() and attfsd()  */
  189.      *formax(),               /* form auxillary topic phrase, using msg #  */
  190.      *axtstg(),               /* aux topic string, suitable for "%s" fill  */
  191.      *emlsig(),               /* string "E-Mail" or "SIG", dep'ing on cntxt*/
  192.      *findkw();               /* find quickscan keyword list in qscfg table*/
  193.  
  194. struct qscfg *getqsc();       /* get ptr to a user's config data           */
  195.  
  196. #define FOUND   1             /* return values for CYCLE-mediated activity */
  197. #define KEEPON -1
  198. #define DONE    0
  199.  
  200. /*--- OPTIONS FROM ESIGS.MSG ---*/
  201.  
  202. extern
  203. int emllif,                   /* lifetime of an E-Mail message, in days    */
  204.     nlveml,                   /* flag: may non-live users write E-Mail?    */
  205.     nlveat,                   /* flag: may non-live users make attachments?*/
  206.     nlvrrr,                   /* flag: may non-live users read RRR msgs?   */
  207.     emltck,                   /* "ticks" (credits) eaten per E-Mail msg    */
  208.     eattck,                   /* "ticks" (credits) eaten per attachment    */
  209.     rrrtck,                   /* "ticks" (credits) eaten per return receipt*/
  210.     ednaud,                   /* Do audit trail entry per E-Mail download? */
  211.     eupaud;                   /* Do audit trail entry per E-Mail upload?   */
  212.  
  213. extern
  214. int nsigs,                    /* number of SIGs allowed for                */
  215.     sigccr,                   /* default SIG credit consumption rate       */
  216.     siglif,                   /* default lifetime of a SIG message, in days*/
  217.     sigtck,                   /* default "ticks" (credits) per SIG msg     */
  218.     sattck,                   /* default "ticks" (credits) per file upload */
  219.     sdnaud,                   /* Do audit trail entry per SIG download?    */
  220.     supaud,                   /* Do audit trail entry per SIG upload?      */
  221.     sopmhd;                   /* allow SIG-Ops to modify SIG headers?      */
  222.  
  223. extern
  224. char dftsig[];                /* default SIG for new users etc.            */
  225.  
  226.