home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume23 / trn / part01 / head.h < prev    next >
C/C++ Source or Header  |  1991-08-22  |  4KB  |  132 lines

  1. /* $Header: head.h,v 4.3.3.2 91/01/16 02:41:17 davison Trn $
  2.  *
  3.  * $Log:    head.h,v $
  4.  * Revision 4.3.3.2  91/01/16  02:41:17  davison
  5.  * Added optional prototyping.
  6.  * 
  7.  * Revision 4.3.3.1  90/06/20  22:37:18  davison
  8.  * Initial Trn Release
  9.  * 
  10.  * Revision 4.3  85/05/01  11:38:31  lwall
  11.  * Baseline for release with 4.3bsd.
  12.  * 
  13.  */
  14.  
  15. #define HEAD_FIRST 1
  16.  
  17. /* types of header lines (if only C really believed in enums)
  18.  * (These must stay in alphabetic order at least in the first letter.
  19.  * Within each letter it helps to arrange in increasing likelihood.)
  20.  */
  21.  
  22. #define PAST_HEADER    0    /* body */
  23. #define SOME_LINE    1    /* unrecognized */
  24. #define ARTID_LINE    2    /* article-i.d. */
  25. #define APPR_LINE    3    /* approved */
  26. #define DIST_LINE    4    /* distribution */
  27. #define DATE_LINE    5    /* date */
  28. #define RECEIVED_LINE    6    /* date-received */
  29. #define EXPIR_LINE    7    /* expires */
  30. #define FOLLOW_LINE    8    /* followup-to */
  31. #define FROM_LINE    9    /* from */
  32. #define KEYW_LINE    10    /* keywords */
  33. #define LINES_LINE    11    /* lines */
  34. #define MESSID_LINE    12    /* message-id */
  35. #define NFFR_LINE    13    /* nf-from */
  36. #define NFID_LINE    14    /* nf-id */
  37. #define NGS_LINE    15    /* newsgroups */
  38. #define ORG_LINE    16    /* organization */
  39. #define PATH_LINE    17    /* path */
  40. #define POSTED_LINE    18    /* posted */
  41. #define PVER_LINE    19    /* posting-version */
  42. #define REPLY_LINE    20    /* reply-to */
  43. #define REFS_LINE    21    /* references */
  44. #define RVER_LINE    22    /* relay-version */
  45. #define SENDER_LINE    23    /* sender */
  46. #define SUMRY_LINE    24    /* summary */
  47. #define SUBJ_LINE    25    /* subject */
  48. #define XREF_LINE    26    /* xref */
  49.  
  50. #define HEAD_LAST    27    /* one more than the last one above */
  51.  
  52. struct headtype {
  53.     char *ht_name;        /* header line identifier */
  54. #ifdef pdp11
  55.     short ht_minpos;
  56.     short ht_maxpos;
  57. #else
  58.     ART_POS ht_minpos;        /* pointer to beginning of line in article */
  59.     ART_POS ht_maxpos;        /* pointer to end of line in article */
  60. #endif
  61.     char ht_length;        /* could make these into nybbles but */
  62.     char ht_flags;        /* it wouldn't save space normally */
  63. };                /* due to alignment considerations */
  64.  
  65. #define HT_HIDE 1    /* -h on this line */
  66. #define HT_MAGIC 2    /* do any special processing on this line */
  67.  
  68. /* This array must stay in the same order as the list above */
  69.  
  70. #ifndef DOINIT
  71. EXT struct headtype htype[HEAD_LAST];
  72. #else
  73. struct headtype htype[HEAD_LAST] = {
  74.  /* name             minpos   maxpos  length   flag */
  75.     {"BODY",        0,    0,    4,    0        },
  76.     {"unrecognized",    0,    0,    12,    0        },
  77.     {"article-i.d.",    0,    0,    12,    HT_HIDE        },
  78.     {"approved",    0,    0,    8,    HT_HIDE        },
  79.     {"distribution",    0,    0,    12,    0        },
  80. #ifdef USETHREADS
  81.     {"date",        0,    0,    4,    HT_MAGIC    },
  82. #else
  83.     {"date",        0,    0,    4,    0        },
  84. #endif
  85.     {"date-received",    0,    0,    13,    0        },
  86.     {"expires",        0,    0,    7,    HT_HIDE|HT_MAGIC},
  87.     {"followup-to",    0,    0,    11,    0        },
  88.     {"from",        0,    0,    4,    HT_MAGIC    },
  89.     {"keywords",    0,    0,    8,    0        },
  90.     {"lines",        0,    0,    5,    0        },
  91.     {"message-id",    0,    0,    10,    HT_HIDE        },
  92.     {"nf-from",        0,    0,    7,    HT_HIDE        },
  93.     {"nf-id",        0,    0,    5,    HT_HIDE        },
  94.     {"newsgroups",    0,    0,    10,    HT_MAGIC|HT_HIDE},
  95.     {"organization",    0,    0,    12,    0        },
  96.     {"path",        0,    0,    4,    HT_HIDE        },
  97.     {"posted",        0,    0,    6,    HT_HIDE        },
  98.     {"posting-version",    0,    0,    15,    HT_HIDE        },
  99.     {"reply-to",    0,    0,    8,    HT_HIDE        },
  100.     {"references",    0,    0,    10,    HT_HIDE        },
  101.     {"relay-version",    0,    0,    13,    HT_HIDE        },
  102.     {"sender",        0,    0,    6,    HT_HIDE        },
  103.     {"summary",        0,    0,    7,    0        },
  104.     {"subject",        0,    0,    7,    HT_MAGIC    },
  105.     {"xref",        0,    0,    4,    HT_HIDE        }
  106. };
  107. #endif
  108.  
  109. #ifdef ASYNC_PARSE
  110. EXT ART_NUM parsed_art INIT(0);
  111. #endif
  112.  
  113. EXT char in_header INIT(0);        /* are we decoding the header? */
  114.  
  115. #ifdef CACHESUBJ
  116.     EXT char **subj_list INIT(Null(char **));
  117. #endif
  118.  
  119. void    head_init ANSI((void));
  120. int    set_line_type ANSI((char *,char *));
  121. void    start_header ANSI((ART_NUM));
  122. bool    parseline ANSI((char *,int,int));
  123. #ifdef ASYNC_PARSE
  124.     int        parse_maybe ANSI((ART_NUM));
  125. #endif
  126. char    *fetchsubj ANSI((ART_NUM,bool,bool));
  127. char    *fetchlines ANSI((ART_NUM,int));
  128.  
  129. #ifdef DEBUGGING
  130. int    dumpheader ANSI((char *));
  131. #endif
  132.