Annotation of 43BSD/contrib/rn/head.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.