home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 35 Internet
/
35-Internet.zip
/
trn_12.zip
/
src
/
head.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-12-04
|
5KB
|
158 lines
/* $Id: head.h,v 4.4.3.1 1992/02/01 03:09:32 sob PATCH_3 sob $
*
* $Log: head.h,v $
* Revision 4.4.3.1 1992/02/01 03:09:32 sob
* Release 4.4 Patchlevel 3
*
* Revision 4.4 1991/09/09 20:18:23 sob
* release 4.4
*
*
*
*/
/* This software is Copyright 1991 by Stan Barber.
*
* Permission is hereby granted to copy, reproduce, redistribute or otherwise
* use this software as long as: there is no monetary profit gained
* specifically from the use or reproduction of this software, it is not
* sold, rented, traded or otherwise marketed, and this copyright notice is
* included prominently in any copy made.
*
* The author make no claims as to the fitness or correctness of this software
* for any use whatsoever, and it is provided as is. Any use of this software
* is at the user's own risk.
*/
#define HEAD_FIRST 1
/* types of header lines (if only C really believed in enums)
* (These must stay in alphabetic order at least in the first letter.
* Within each letter it helps to arrange in increasing likelihood.)
*/
#define PAST_HEADER 0 /* body */
#define SOME_LINE 1 /* unrecognized */
#define ARTID_LINE 2 /* article-i.d. */
#define APPR_LINE 3 /* approved */
#define ACAT_LINE 4 /* ACategory (ClariNet) */
#define ANPA_LINE 5 /* ANPA (ClariNet) */
#define CODES_LINE 6 /* Codes (ClariNet) */
#define DIST_LINE 7 /* distribution */
#define DATE_LINE 8 /* date */
#define RECEIVED_LINE 9 /* date-received */
#define EXPIR_LINE 10 /* expires */
#define FOLLOW_LINE 11 /* followup-to */
#define FROM_LINE 12 /* from */
#define FORM_LINE 13 /* Format (ClariNet) */
#define KEYW_LINE 14 /* keywords */
#define LINES_LINE 15 /* lines */
#define MESSID_LINE 16 /* message-id */
#define NFFR_LINE 17 /* nf-from */
#define NFID_LINE 18 /* nf-id */
#define NGS_LINE 19 /* newsgroups */
#define NOTE_LINE 20 /* Note (ClariNet) */
#define ORG_LINE 21 /* organization */
#define PATH_LINE 22 /* path */
#define POSTED_LINE 23 /* posted */
#define PVER_LINE 24 /* posting-version */
#define PRI_LINE 25 /* Priority (ClariNet) */
#define REPLY_LINE 26 /* reply-to */
#define REFS_LINE 27 /* references */
#define RVER_LINE 28 /* relay-version */
#define SENDER_LINE 29 /* sender */
#define SUMRY_LINE 30 /* summary */
#define SUBJ_LINE 31 /* subject */
#define SLUG_LINE 32 /* Slugword (ClariNet) */
#define XREF_LINE 33 /* xref */
#define XSUP_LINE 34 /* X-Supersedes (ClariNet) */
#define HEAD_LAST 35 /* one more than the last one above */
struct headtype {
char *ht_name; /* header line identifier */
#ifdef pdp11
short ht_minpos;
short ht_maxpos;
#else
ART_POS ht_minpos; /* pointer to beginning of line in article */
ART_POS ht_maxpos; /* pointer to end of line in article */
#endif
char ht_length; /* could make these into nybbles but */
char ht_flags; /* it wouldn't save space normally */
}; /* due to alignment considerations */
#define HT_HIDE 1 /* -h on this line */
#define HT_MAGIC 2 /* do any special processing on this line */
/* This array must stay in the same order as the list above */
#ifndef DOINIT
EXT struct headtype htype[HEAD_LAST];
#else
struct headtype htype[HEAD_LAST] = {
/* name minpos maxpos length flag */
{"BODY", 0, 0, 4, 0 },
{"unrecognized", 0, 0, 12, 0 },
{"article-i.d.", 0, 0, 12, HT_HIDE },
{"approved", 0, 0, 8, HT_HIDE },
{"acategory", 0, 0, 9, HT_HIDE },
{"anpa", 0, 0, 4, HT_HIDE },
{"codes", 0, 0, 5, HT_HIDE },
{"distribution", 0, 0, 12, 0 },
#ifdef USETHREADS
{"date", 0, 0, 4, HT_MAGIC },
#else
{"date", 0, 0, 4, 0 },
#endif
{"date-received", 0, 0, 13, 0 },
{"expires", 0, 0, 7, HT_HIDE|HT_MAGIC},
{"followup-to", 0, 0, 11, 0 },
{"from", 0, 0, 4, HT_MAGIC },
{"format", 0, 0, 6, HT_HIDE },
{"keywords", 0, 0, 8, 0 },
{"lines", 0, 0, 5, 0 },
{"message-id", 0, 0, 10, HT_HIDE },
{"nf-from", 0, 0, 7, HT_HIDE },
{"nf-id", 0, 0, 5, HT_HIDE },
{"newsgroups", 0, 0, 10, HT_MAGIC|HT_HIDE},
{"note", 0, 0, 4, 0, },
{"organization", 0, 0, 12, 0 },
{"path", 0, 0, 4, HT_HIDE },
{"posted", 0, 0, 6, HT_HIDE },
{"posting-version", 0, 0, 15, HT_HIDE },
{"priority", 0, 0, 8, HT_HIDE },
{"reply-to", 0, 0, 8, HT_HIDE },
{"references", 0, 0, 10, HT_HIDE },
{"relay-version", 0, 0, 13, HT_HIDE },
{"sender", 0, 0, 6, HT_HIDE },
{"summary", 0, 0, 7, 0 },
{"subject", 0, 0, 7, HT_MAGIC },
{"slugword", 0, 0, 8, HT_HIDE },
{"xref", 0, 0, 4, HT_HIDE },
{"x-supersedes", 0, 0, 12, HT_HIDE }
};
#endif
#ifdef ASYNC_PARSE
EXT ART_NUM parsed_art INIT(0);
#endif
EXT char in_header INIT(0); /* are we decoding the header? */
#ifdef CACHESUBJ
EXT char **subj_list INIT(Null(char **));
#endif
void head_init ANSI((void));
int set_line_type ANSI((char *,char *));
void start_header ANSI((ART_NUM));
bool parseline ANSI((char *,int,int));
#ifdef ASYNC_PARSE
int parse_maybe ANSI((ART_NUM));
#endif
char *fetchsubj ANSI((ART_NUM,bool_int,bool_int));
char *fetchlines ANSI((ART_NUM,int));
#ifdef DEBUGGING
void dumpheader ANSI((char *));
#endif