|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T f
Length: 5556 (0x15b4) Types: TextFile Names: »filter.h«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦4fd8323b9⟧ »EurOpenD3/mail/elm2.3.tar.Z« └─⟦698c4f91f⟧ └─⟦this⟧ »hdrs/filter.h«
/* $Id: filter.h,v 4.1 90/04/28 22:42:09 syd Exp $ */ /******************************************************************************* * The Elm Mail System - $Revision: 4.1 $ $State: Exp $ * * Copyright (c) 1986, 1987 Dave Taylor * Copyright (c) 1988, 1989, 1990 USENET Community Trust ******************************************************************************* * Bug reports, patches, comments, suggestions should be sent to: * * Syd Weinstein, Elm Coordinator * elm@DSI.COM dsinc!elm * ******************************************************************************* * $Log: filter.h,v $ * Revision 4.1 90/04/28 22:42:09 syd * checkin of Elm 2.3 as of Release PL0 * * ******************************************************************************/ /** Headers for the filter program. **/ #ifdef BSD # undef tolower #endif /** define a few handy macros for later use... **/ #define the_same(a,b) (strncmp(a,b,strlen(b)) == 0) #define relationname(x) (x == 1?"<=":x==2?"<":x==3?">=":x==4?">":x==5?"!=":"=") #define quoteit(x) (x == LINES? "" : "\"") #define remove_return(s) { if (s[strlen(s)-1] == '\n') \ s[strlen(s)-1] = '\0'; \ } /** some of the files we'll be using, where they are, and so on... **/ #define filter_temp "/tmp/filter" #define filterfile ".elm/filter-rules" #define filterlog ".elm/filterlog" #define filtersum ".elm/filtersum" #define EMERGENCY_MAILBOX "EMERGENCY_MBOX" #define EMERG_MBOX "MBOX.EMERGENCY" /** and now the hardwired constraint of the program.. **/ #define MAXRULES 25 /* can't have more den dis, boss! */ /** some random defines for mnemonic stuff in the program... **/ #ifdef SUBJECT # undef SUBJECT #endif #define TO 1 #define FROM 2 #define LINES 3 #define SUBJECT 4 #define CONTAINS 5 #define ALWAYS 6 #define DELETE_MSG 7 #define SAVE 8 #define SAVECC 9 #define FORWARD 10 #define LEAVE 11 #define EXEC 12 #define FAILED_SAVE 20 /** Some conditionals... **/ #define LE 1 #define LT 2 #define GE 3 #define GT 4 #define NE 5 #define EQ 6 /** A funky way to open a file using open() to avoid file locking hassles **/ #define FOLDERMODE O_WRONLY | O_APPEND | O_CREAT | O_SYNCIO /** cheap but easy way to have two files share the same #include file **/ #ifdef MAIN_ROUTINE char home[SLEN], /* the users home directory */ hostname[SLEN], /* the machine name... */ username[SLEN]; /* the users login name... */ char to[VERY_LONG_STRING], from[LONG_STRING], subject[LONG_STRING]; /* from current message */ FILE *outfd; char outfname[SLEN]; int total_rules = 0, /* how many rules to check */ show_only = FALSE, /* just for show? */ long_summary = FALSE, /* what sorta summary?? */ verbose = FALSE, /* spit out lots of stuff */ lines = 0, /* lines in message.. */ clear_logs = FALSE, /* clear files after sum? */ already_been_forwarded = FALSE, /* has this been filtered? */ log_actions_only = FALSE, /* log actions | everything */ printing_rules = FALSE, /* are we just using '-r'? */ rule_choosen; /* which one we choose */ #else extern char home[SLEN], /* the users home directory */ hostname[SLEN], /* the machine name... */ username[SLEN]; /* the users login name... */ extern char to[VERY_LONG_STRING], from[LONG_STRING], subject[LONG_STRING]; /* from current message */ extern FILE *outfd; extern char outfname[SLEN]; extern int total_rules, /* how many rules to check */ show_only, /* just for show? */ long_summary, /* what sorta summary?? */ verbose, /* spit out lots of stuff */ lines, /* lines in message.. */ clear_logs, /* clear files after sum? */ already_been_forwarded, /* has this been filtered? */ log_actions_only, /* log actions | everything */ printing_rules, /* are we just using '-r'? */ rule_choosen; /* which one we choose */ #endif /** and our ruleset record structure... **/ struct condition_rec { int matchwhat; /* type of 'if' clause */ int relation; /* type of match (eq, etc) */ char argument1[SLEN]; /* match against this */ struct condition_rec *next; /* next condition... */ }; struct ruleset_record { char printable[SLEN]; /* straight from file... */ struct condition_rec *condition; int action; /* what action to take */ char argument2[SLEN]; /* argument for action */ }; #ifdef MAIN_ROUTINE struct ruleset_record rules[MAXRULES]; #else extern struct ruleset_record rules[MAXRULES]; #endif /** finally let's keep LINT happy with the return values of all these pups! ***/ char *itoa(); #ifdef _POSIX_SOURCE /*{_POSIX_SOURCE*/ #include <string.h> #include <unistd.h> #include <stdlib.h> #else /*}_POSIX_SOURCE{*/ unsigned short getuid(); unsigned long sleep(); char *malloc(), *strcpy(), *strcat(); void exit(); #ifdef BSD FILE *popen(); #ifdef MAIN_ROUTINE char _vbuf[5*BUFSIZ]; /* space for file buffering */ #else extern char _vbuf[5*BUFSIZ]; /* space for file buffering */ #endif #ifndef _IOFBF # define _IOFBF 0 /* doesn't matter - ignored */ #endif # define setvbuf(fd,a,b,c) setbuffer(fd, _vbuf, 5*BUFSIZ) #endif #endif /*}_POSIX_SOURCE*/