X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=h%2Fmh.h;h=ced6c77a848ce843cdce60c06de5a45c18a6dc6c;hp=58d1e1de69da74929497f3d312b1c7a913eb4cd7;hb=068380df11432a5341882e658ec9cf5c0b54721d;hpb=18017df38ebb626f6eed6f339641fd1298c326e7 diff --git a/h/mh.h b/h/mh.h index 58d1e1d..ced6c77 100644 --- a/h/mh.h +++ b/h/mh.h @@ -1,12 +1,12 @@ /* - * mh.h -- main header file for all of nmh - */ +** mh.h -- main header file for all of nmh +*/ #include /* - * Well-used constants - */ +** Well-used constants +*/ #define NOTOK (-1) /* syscall()s return this on error */ #define OK 0 /* ditto on success */ #define DONE 1 /* trinary logic */ @@ -27,8 +27,8 @@ typedef unsigned char boolean; /* not int so we can pack in a structure */ /* If we're using gcc then give it some information about - * functions that abort. - */ +** functions that abort. +*/ #if __GNUC__ > 2 # define NORETURN __attribute__((__noreturn__)) #else @@ -36,8 +36,8 @@ typedef unsigned char boolean; /* not int so we can pack in a structure */ #endif /* - * user context/profile structure - */ +** user context/profile structure +*/ struct node { char *n_name; /* key */ char *n_field; /* value */ @@ -46,69 +46,64 @@ struct node { }; /* - * switches structure - */ +** switches structure +*/ #define AMBIGSW (-2) /* from smatch() on ambiguous switch */ #define UNKWNSW (-1) /* from smatch() on unknown switch */ struct swit { char *sw; /* - * The minchars field is apparently used like this: - * - * -# : Switch can be abbreviated to # chars; switch hidden in -help. - * 0 : Switch can't be abbreviated; switch shown in -help. - * # : Switch can be abbreviated to # chars; switch shown in -help. - */ + ** The minchars field is apparently used like this: + ** + ** -# : Switch can be abbreviated to # chars; switch hidden in -help. + ** 0 : Switch can't be abbreviated; switch shown in -help. + ** # : Switch can be abbreviated to # chars; switch shown in -help. + */ int minchars; }; extern struct swit anoyes[]; /* standard yes/no switches */ -#define ATTACHFORMATS 3 /* Number of send attach formats. */ - /* - * general folder attributes - */ -#define READONLY (1<<0) /* No write access to folder */ -#define SEQMOD (1<<1) /* folder's sequences modifed */ -#define ALLOW_NEW (1<<2) /* allow the "new" sequence */ -#define OTHERS (1<<3) /* folder has other files */ +** general folder attributes +*/ +#define READONLY (1<<0) /* No write access to folder */ +#define SEQMOD (1<<1) /* folder's sequences modifed */ +#define ALLOW_BEYOND (1<<2) /* allow the beyond sequence */ +#define OTHERS (1<<3) /* folder has other files */ -#define FBITS "\020\01READONLY\02SEQMOD\03ALLOW_NEW\04OTHERS" +#define FBITS "\020\01READONLY\02SEQMOD\03ALLOW_BEYOND\04OTHERS" /* - * type for holding the sequence set of a message - */ +** type for holding the sequence set of a message +*/ typedef unsigned int seqset_t; /* - * Determine the number of user defined sequences we - * can have. The first 5 sequence flags are for - * internal nmh message flags. - */ -#define NUMATTRS ((sizeof(seqset_t) * Nbby) - 5) +** internal messages attributes (sequences) +*/ +#define EXISTS (1<<0) /* exists */ +#define SELECTED (1<<1) /* selected for use */ +#define SELECT_UNSEEN (1<<2) /* inc/show "unseen" */ -/* - * first free slot for user defined sequences - * and attributes - */ -#define FFATTRSLOT 5 +#define MBITS "\020\01EXISTS\02SELECTED\03UNSEEN" /* - * internal messages attributes (sequences) - */ -#define EXISTS (1<<0) /* exists */ -#define DELETED (1<<1) /* deleted */ -#define SELECTED (1<<2) /* selected for use */ -#define SELECT_EMPTY (1<<3) /* "new" message */ -#define SELECT_UNSEEN (1<<4) /* inc/show "unseen" */ +** first free slot for user-defined sequences +*/ +#define FFATTRSLOT 3 -#define MBITS "\020\01EXISTS\02DELETED\03SELECTED\04NEW\05UNSEEN" +/* +** Determine the number of user defined sequences we +** can have. The first few sequence flags are for +** internal nmh message flags. +*/ +#define NUMATTRS ((sizeof(seqset_t) * Nbby) - FFATTRSLOT) /* - * Primary structure of folder/message information - */ +** Primary structure of folder/message information +*/ struct msgs { int lowmsg; /* Lowest msg number */ int hghmsg; /* Highest msg number */ @@ -124,44 +119,44 @@ struct msgs { char *foldpath; /* Pathname of folder */ /* - * Name of sequences in this folder. We add an - * extra slot, so we can NULL terminate the list. - */ + ** Name of sequences in this folder. We add an + ** extra slot, so we can NULL terminate the list. + */ char *msgattrs[NUMATTRS + 1]; /* - * bit flags for whether sequence - * is public (0), or private (1) - */ + ** bit flags for whether sequence + ** is public (0), or private (1) + */ seqset_t attrstats; /* - * These represent the lowest and highest possible - * message numbers we can put in the message status - * area, without calling folder_realloc(). - */ + ** These represent the lowest and highest possible + ** message numbers we can put in the message status + ** area, without calling folder_realloc(). + */ int lowoff; int hghoff; /* - * This is an array of seqset_t which we allocate dynamically. - * Each seqset_t is a set of bits flags for a particular message. - * These bit flags represent general attributes such as - * EXISTS, SELECTED, etc. as well as track if message is - * in a particular sequence. - */ + ** This is an array of seqset_t which we allocate dynamically. + ** Each seqset_t is a set of bits flags for a particular message. + ** These bit flags represent general attributes such as + ** EXISTS, SELECTED, etc. as well as track if message is + ** in a particular sequence. + */ seqset_t *msgstats; /* msg status */ }; /* - * Amount of space to allocate for msgstats. Allocate - * the array to have space for messages numbers lo to hi. - */ +** Amount of space to allocate for msgstats. Allocate +** the array to have space for messages numbers lo to hi. +*/ #define MSGSTATSIZE(mp,lo,hi) ((size_t) (((hi) - (lo) + 1) * sizeof(*(mp)->msgstats))) /* - * macros for message and sequence manipulation - */ +** macros for message and sequence manipulation +*/ #define clear_msg_flags(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] = 0) #define copy_msg_flags(mp,i,j) \ ((mp)->msgstats[(i) - mp->lowoff] = (mp)->msgstats[(j) - mp->lowoff]) @@ -176,10 +171,6 @@ struct msgs { #define unset_selected(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] &= ~SELECTED) #define set_selected(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] |= SELECTED) -#define is_select_empty(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] & SELECT_EMPTY) -#define set_select_empty(mp,msgnum) \ - ((mp)->msgstats[(msgnum) - mp->lowoff] |= SELECT_EMPTY) - #define is_unseen(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] & SELECT_UNSEEN) #define unset_unseen(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] &= ~SELECT_UNSEEN) #define set_unseen(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] |= SELECT_UNSEEN) @@ -202,8 +193,8 @@ struct msgs { ((mp)->attrstats = 0) /* - * macros for folder attributes - */ +** macros for folder attributes +*/ #define clear_folder_flags(mp) ((mp)->msgflags = 0) #define is_readonly(mp) ((mp)->msgflags & READONLY) @@ -215,19 +206,20 @@ struct msgs { #define NULLMP ((struct msgs *) 0) /* - * m_getfld() message parsing - */ - -#define NAMESZ 999 /* Limit on component name size. - * RFC 2822 limits line lengths to - * 998 characters, so a header name - * can be at most that long. - * m_getfld limits header names to 2 - * less than NAMESZ, which is fine, - * because header names must be - * followed by a colon. Add one for - * terminating NULL. - */ +** m_getfld() message parsing +*/ + +#define NAMESZ 999 /* + ** Limit on component name size. + ** RFC 2822 limits line lengths to + ** 998 characters, so a header name + ** can be at most that long. + ** m_getfld limits header names to 2 + ** less than NAMESZ, which is fine, + ** because header names must be + ** followed by a colon. Add one for + ** terminating NULL. + */ #define LENERR (-2) /* Name too long error from getfld */ #define FMTERR (-3) /* Message Format error */ @@ -239,12 +231,11 @@ struct msgs { #define FILEEOF 5 /* Reached end of input file */ /* - * Maildrop styles - */ +** Maildrop styles +*/ #define MS_DEFAULT 0 /* default (one msg per file) */ #define MS_UNKNOWN 1 /* type not known yet */ #define MS_MBOX 2 /* Unix-style "from" lines */ -#define MS_MMDF 3 /* string mmdlm2 */ extern int msg_count; /* m_getfld() indicators */ extern int msg_style; /* .. */ @@ -252,17 +243,13 @@ extern char *msg_delim; /* .. */ #define NOUSE 0 /* draft being re-used */ -#define TFOLDER 0 /* path() given a +folder */ -#define TFILE 1 /* path() given a file */ -#define TSUBCWF 2 /* path() given a @folder */ - #define OUTPUTLINELEN 72 /* default line length for headers */ /* - * miscellaneous macros - */ +** miscellaneous macros +*/ -#define pidXwait(pid,cp) pidstatus (pidwait (pid, NOTOK), stdout, cp) +#define pidXwait(pid,cp) pidstatus(pidwait(pid, NOTOK), stdout, cp) #ifndef max # define max(a,b) ((a) > (b) ? (a) : (b)) @@ -277,71 +264,80 @@ extern char *msg_delim; /* .. */ #endif /* - * GLOBAL VARIABLES - */ +** GLOBAL VARIABLES +*/ #define CTXMOD 0x01 /* context information modified */ #define DBITS "\020\01CTXMOD" extern char ctxflags; extern char *invo_name; /* command invocation name */ extern char *mypath; /* user's $HOME */ +extern char *mmhdir; +extern char *mmhpath; extern char *defpath; /* pathname of user's profile */ extern char *ctxpath; /* pathname of user's context */ extern struct node *m_defs; /* list of profile/context entries */ +extern char *mailstore; /* name of mail storage directory */ /* - * These standard strings are defined in config.c. They are the - * only system-dependent parameters in nmh, and thus by redefining - * their values and reloading the various modules, nmh will run - * on any system. - */ -extern char *buildmimeproc; +** These standard strings are defined in config.c. They are the +** only system-dependent parameters in nmh, and thus by redefining +** their values and reloading the various modules, nmh will run +** on any system. +*/ +extern char *attach_hdr; extern char *backup_prefix; extern char *altmsglink; -extern char *catproc; extern char *components; extern char *context; -extern char *current; +extern char *curfolder; extern char *defaulteditor; +extern char *defaultpager; extern char *defaultfolder; extern char *digestcomps; extern char *distcomps; -extern char *draft; -extern char *faceproc; +extern char *draftfolder; extern char *fileproc; extern char *foldprot; extern char *forwcomps; extern char *inbox; extern char *incproc; -extern char *installproc; extern char *lproc; +extern char *mhetcdir; extern char *mailproc; -extern char *mh_defaults; -extern char *mh_profile; +extern char *mailspool; extern char *mh_seq; extern char *mhlformat; -extern char *mhlforward; extern char *mhlproc; extern char *mhlreply; -extern char *moreproc; +extern char *mimetypequery; +extern char *mimetypequeryproc; extern char *msgprot; extern char *nmhaccessftp; extern char *nmhstorage; extern char *nmhcache; extern char *nmhprivcache; extern char *nsequence; -extern char *packproc; extern char *postproc; -extern char *pfolder; +extern char *profile; extern char *psequence; extern char *rcvdistcomps; +extern char *rcvpackproc; extern char *rcvstoreproc; extern char *replcomps; extern char *replgroupcomps; -extern char *rmfproc; extern char *rmmproc; extern char *sendmail; extern char *sendproc; +extern char *seq_all; +extern char *seq_beyond; +extern char *seq_cur; +extern char *seq_first; +extern char *seq_last; +extern char *seq_next; +extern char *seq_prev; +extern char *seq_unseen; +extern char *seq_neg; extern char *showmimeproc; extern char *showproc; extern char *usequence;