#include #include #include #include #include #include #ifdef USG #include #endif #include /* C News header(s) */ #include #define NEWSVERSION "B UNSW 1.1 19 Sep 1984, heavily hacked for C News" /* Things that very well may require local configuration */ /*#define UNSWMAIL 1*/ /* if you have UNSW "mail" which allows "-s subject -i include_file" arguments */ #define MAIL "/bin/mail" #if UNSWMAIL #define FASTMAIL "/bin/mail" #else #define FASTMAIL MAIL #endif /* Things you might want to change */ /* #define MANGRPS 1 /* if you have mandatory subscriptions tailored per-person (uses getclasses()) */ #define NEWSRC ".newsrc" /* name of .newsrc file */ #define PAGESIZE 24 /* lines on screen */ #define ARTICLES "articles" /* default place to save articles */ #define BUFLEN 256 /* standard buffer size */ /* Things you probably won't want to change */ #define NEGCHAR '!' /* newsgroup negation character */ #define NEGS "!" /* ditto (string) */ #define BADGRPCHARS "/#!" /* illegal chars in group name */ #define NGSEPCHAR ',' /* delimit character in news group line */ #define NGSEPS "," /* ditto */ #define PSEPS "!" /* separator in Path: */ #define PSEPCHAR '!' /* ditto */ #define TRUE 1 #define FALSE 0 #ifndef F_SETFD #ifdef F_SETFL #define F_SETFD F_SETFL /* SETFL becomes SETFD (close on exec arg to fcntl) */ #endif #endif typedef enum booltype { false = 0, true } bool; typedef enum applytype { stop, next, nextgroup, searchgroup } applycom; typedef applycom (*apcmfunc)(); typedef enum pheadtype { printing, passing, making } pheadcom; /* * header structure */ typedef struct header { /* mandatory fields */ char *h_relayversion; char *h_postversion; char *h_from; char *h_date; char *h_newsgroups; char *h_subject; char *h_messageid; char *h_path; /* optional fields */ char *h_replyto; char *h_sender; char *h_followupto; char *h_datereceived; char *h_expires; char *h_references; char *h_control; char *h_distribution; char *h_organisation; char *h_lines; /* any we don't recognise */ char *h_others; } header; /* * internal structure for active file */ typedef struct active active; struct active { char *a_name; long a_seq; long a_low; active *a_next; }; /* * internal struct for newsrc file */ typedef struct newsrc newsrc; struct newsrc { char *n_name; bool n_subscribe; long n_last; newsrc *n_next; }; /* some of these may not exist any more */ char *strrchr(), *strchr(), *strcat(), *strcpy(), *strpbrk(); char *itoa(), *ltoa(), *convg(), *ngsquash(), *ttoa(), *mgets(), *rconvg(); char *newstr(), *newstr2(), *newstr3(), *newstr4(), *newstr5(), *catstr(); char *catstr2(), *bsearch(), *mtempnam(), *newstr6(); char *getunique(), *getretaddr(), *getsubject(); FILE *fopenl(), *fopenf(); char *myalloc(), *myrealloc(); long time(), atol(), atot(); int strpcmp(); active *readactive(); char *getenv(); #define NIL(type) ((type *) 0) #define NEW(type) ((type *) myalloc(sizeof(type))) #define CMP(a, b) (*(a) != *(b) ? *(a) - *(b) : strcmp(a, b)) #define CMPN(a, b, n) (*(a) != *(b) ? *(a) - *(b) : strncmp(a, b, n)) extern char mailvia[];