|
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 d
Length: 11336 (0x2c48) Types: TextFile Names: »defs.h«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦4fd8323b9⟧ »EurOpenD3/mail/elm2.3.tar.Z« └─⟦698c4f91f⟧ └─⟦this⟧ »hdrs/defs.h«
/* $Id: defs.h,v 4.1 90/04/28 22:42:06 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: defs.h,v $ * Revision 4.1 90/04/28 22:42:06 syd * checkin of Elm 2.3 as of Release PL0 * * ******************************************************************************/ /** define file for ELM mail system. **/ #include "../config.h" #include "sysdefs.h" /* system/configurable defines */ # define VERSION "2.3" /* Version number... */ # define VERS_DATE "May 1, 1990" /* for elm -v option */ # define WHAT_STRING \ "@(#) Version 2.3, USENET supported version, released May 1990" #define KLICK 25 #define SLEN 256 /* long for ensuring no overwrites... */ #define SHORT 10 /* super short strings! */ #define NLEN 48 /* name length for aliases */ #define WLEN 20 #define STRING 128 /* reasonable string length for most.. */ #define LONG_STRING 512 /* even longer string for group expansion */ #define VERY_LONG_STRING 2560 /* huge string for group alias expansion */ #define MAX_LINE_LEN 5120 /* even bigger string for "filter" prog.. */ #define BREAK '\0' /* default interrupt */ #define BACKSPACE '\b' /* backspace character */ #define TAB '\t' /* tab character */ #define RETURN '\r' /* carriage return char */ #define LINE_FEED '\n' /* line feed character */ #define FORMFEED '\f' /* form feed (^L) char */ #define COMMA ',' /* comma character */ #define SPACE ' ' /* space character */ #define DOT '.' /* period/dot character */ #define BANG '!' /* exclaimation mark! */ #define AT_SIGN '@' /* at-sign character */ #define PERCENT '%' /* percent sign char. */ #define COLON ':' /* the colon .. */ #define BACKQUOTE '`' /* backquote character */ #define TILDE_ESCAPE '~' /* escape character~ */ #define ESCAPE '\033' /* the escape */ #define NO_OP_COMMAND '\0' /* no-op for timeouts */ #define STANDARD_INPUT 0 /* file number of stdin */ #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #define NO 0 #define YES 1 #define MAYBE 2 /* a definite define, eh? */ #define FORM 3 /* <nevermind> */ #define PREFORMATTED 4 /* forwarded form... */ #define SAME_PAGE 1 /* redraw current only */ #define NEW_PAGE 2 /* redraw message list */ #define ILLEGAL_PAGE 0 /* error in page list, punt */ #define PAD 0 /* for printing name of */ #define FULL 1 /* the sort we're using */ #define OUTGOING 0 /* defines for lock file */ #define INCOMING 1 /* creation..see lock() */ #define SH 0 /* defines for system_call */ #define USER_SHELL 1 /* to work correctly! */ #define EXECUTE_ACCESS 01 /* These five are */ #define WRITE_ACCESS 02 /* for the calls */ #define READ_ACCESS 04 /* to access() */ #define ACCESS_EXISTS 00 /* <etc> */ #define EDIT_ACCESS 06 /* (this is r+w access) */ #define BIG_NUM 999999 /* big number! */ #define BIGGER_NUM 9999999 /* bigger number! */ #define START_ENCODE "[encode]" #define END_ENCODE "[clear]" #define DONT_SAVE "[no save]" #define DONT_SAVE2 "[nosave]" #define alias_file ".aliases" #define group_file ".groups" #define system_file ".systems" #define default_folders "Mail" #define default_recvdmail "=received" #define default_sentmail "=sent" /** some defines for the 'userlevel' variable... **/ #define RANK_AMATEUR 0 #define AMATEUR 1 #define OKAY_AT_IT 2 #define GOOD_AT_IT 3 #define EXPERT 4 #define SUPER_AT_IT 5 /** some defines for the "status" field of the header record **/ #define ACTION 1 /* bit masks, of course */ #define CONFIDENTIAL 2 #define DELETED 4 #define EXPIRED 8 #define FORM_LETTER 16 #define NEW 32 #define PRIVATE 64 #define TAGGED 128 #define URGENT 256 #define VISIBLE 512 #define UNREAD 1024 #define STATUS_CHANGED 2048 #define UNDELETE 0 /* purely for ^U function... */ /** values for headers exit_disposition field */ #define UNSET 0 #define KEEP 1 #define STORE 2 #define DELETE 3 /** some months... **/ #define JANUARY 0 /* months of the year */ #define FEBRUARY 1 #define MARCH 2 #define APRIL 3 #define MAY 4 #define JUNE 5 #define JULY 6 #define AUGUST 7 #define SEPTEMBER 8 #define OCTOBER 9 #define NOVEMBER 10 #define DECEMBER 11 #define equal(s,w) (strcmp(s,w) == 0) #define min(a,b) a < b? a : b #define ctrl(c) c - 'A' + 1 /* control character mapping */ #define plural(n) n == 1 ? "" : "s" #define lastch(s) s[strlen(s)-1] /* find tab stops preceding or following a given column position 'a', where * the column position starts counting from 1, NOT 0! * The external integer "tabspacing" must be declared to use this. */ #define prev_tab(a) (((((a-1)/tabspacing))*tabspacing)+1) #define next_tab(a) (((((a-1)/tabspacing)+1)*tabspacing)+1) #define movement_command(c) (c == 'j' || c == 'k' || c == ' ' || \ c == BACKSPACE || c == ESCAPE || c == '*' || \ c == '-' || c == '+' || c == '=' || \ c == '#' || c == '@' || c == 'x' || \ c == 'a' || c == 'q') #define no_ret(s) { register int xyz; /* varname is for lint */ \ for (xyz=strlen(s)-1; xyz >= 0 && \ (s[xyz] == '\r' || s[xyz] == '\n'); ) \ s[xyz--] = '\0'; \ } #define first_word(s,w) (strncmp(s,w, strlen(w)) == 0) #define ClearLine(n) MoveCursor(n,0); CleartoEOLN() #define whitespace(c) (c == ' ' || c == '\t') #define ok_rc_char(c) (isalnum(c) || c == '-' || c == '_') #define ok_alias_char(c) (isalnum(c) || c == '-' || c == '_' || c == '.') #define quote(c) (c == '"' || c == '\'') #define onoff(n) (n == 0 ? "OFF" : "ON") /** The next function is so certain commands can be processed from the showmsg routine without rewriting the main menu in between... **/ #define special(c) (c == 'j' || c == 'k') /** and a couple for dealing with status flags... **/ #define ison(n,mask) (n & mask) #define isoff(n,mask) (!ison(n, mask)) #define setit(n,mask) n |= mask #define clearit(n, mask) n &= ~mask /** a few for the usage of function keys... **/ #define f1 1 #define f2 2 #define f3 3 #define f4 4 #define f5 5 #define f6 6 #define f7 7 #define f8 8 #define MAIN 0 #define ALIAS 1 #define YESNO 2 #define CHANGE 3 #define READ 4 #define MAIN_HELP 0 #define OPTIONS_HELP 1 #define ALIAS_HELP 2 #define PAGER_HELP 3 /** types of folders **/ #define NO_NAME 0 /* variable contains no file name */ #define NON_SPOOL 1 /* mailfile not in mailhome */ #define SPOOL 2 /* mailfile in mailhome */ /* the following is true if the current mailfile is the user's spool file*/ #define USERS_SPOOL (strcmp(cur_folder, defaultfile) == 0) /** some possible sort styles... **/ #define REVERSE - /* for reverse sorting */ #define SENT_DATE 1 /* the date message was sent */ #define RECEIVED_DATE 2 /* the date message was received */ #define SENDER 3 /* the name/address of sender */ #define SIZE 4 /* the # of lines of the message */ #define SUBJECT 5 /* the subject of the message */ #define STATUS 6 /* the status (deleted, etc) */ #define MAILBOX_ORDER 7 /* the order it is in the file */ /* some stuff for our own malloc call - pmalloc */ #define PMALLOC_THRESHOLD 256 /* if greater, then just use malloc */ #define PMALLOC_BUFFER_SIZE 2048 /* internal [memory] buffer size... */ /** the following macro is as suggested by Larry McVoy. Thanks! **/ # ifdef DEBUG # define dprint(n,x) { \ if (debug >= n) { \ fprintf x ; \ fflush(debugfile); \ } \ } # else # define dprint(n,x) # endif /* some random structs... */ struct date_rec { int month; /** this record stores a **/ int day; /** specific date and **/ int year; /** time... **/ int hour; int minute; }; struct header_rec { int lines; /** # of lines in the message **/ int status; /** Urgent, Deleted, Expired? **/ int index_number; /** relative loc in file... **/ int encrypted; /** whether msg has encryption **/ int exit_disposition; /** whether to keep, store, delete **/ int status_chgd; /** whether became read or old, etc. **/ long offset; /** offset in bytes of message **/ struct date_rec received; /** when elm received here **/ char from[STRING]; /** who sent the message? **/ char to[STRING]; /** who it was sent to **/ char messageid[STRING]; /** the Message-ID: value **/ char dayname[8]; /** when the **/ char month[10]; /** message **/ char day[3]; /** was **/ char year[5]; /** sent **/ char time[NLEN]; /** to you! **/ char time_zone[12]; /** incl. tz */ long time_sent; /** gmt when sent for sorting **/ char subject[STRING]; /** The subject of the mail **/ char mailx_status[WLEN];/** mailx status flags (RO...) **/ }; struct alias_rec { char name[NLEN]; /* alias name */ long byte; /* offset into data file for address */ }; struct lsys_rec { char name[NLEN]; /* name of machine connected to */ struct lsys_rec *next; /* linked list pointer to next */ }; struct addr_rec { char address[NLEN]; /* machine!user you get mail as */ struct addr_rec *next; /* linked list pointer to next */ }; #ifdef SHORTNAMES /* map long names to shorter ones */ # include <shortname.h> #endif /** Let's make sure that we're not going to have any annoying problems with int pointer sizes versus char pointer sizes by guaranteeing that every- thing vital is predefined... (Thanks go to Detlev Droege for this one) **/ #ifdef STRINGS # include <strings.h> #else # include <string.h> #endif /* * Macros for network/external number representation conversion. */ #ifdef NETWORK_ORDER unsigned short ntohs(), htons(); unsigned long ntohl(), htonl(); #else #define ntohl(x) (x) #define ntohs(x) (x) #define htonl(x) (x) #define htons(x) (x) #endif char *argv_zero(); char *bounce_off_remote(); char *ctime(); char *error_description(); char *error_name(); char *error_number(); char *expand_address(); char *expand_domain(); char *expand_group(); char *expand_logname(); char *expand_system(); char *find_path_to(); char *format_long(); char *get_alias_address(); char *get_arpa_date(); char *get_ctime_date(); char *get_date(); char *get_token(); char *getenv(); char *getlogin(); char *level_name(); char *match_and_expand_domain(); char *shift_lower(); char *strip_commas(); char *strip_parens(); char *strpbrk(); char *strtok(); char *tail_of_string(); char *tgetstr(); char *pmalloc(); long lseek(); long times(); long ulimit();