-
/*
* mh.h -- main header file for all of nmh
*/
/*
* Well-used constants
*/
-#define NOTOK (-1) /* syscall()s return this on error */
-#define OK 0 /* ditto on success */
-#define DONE 1 /* trinary logic */
+#define NOTOK (-1) /* syscall()s return this on error */
+#define OK 0 /* ditto on success */
+#define DONE 1 /* trinary logic */
#define ALL ""
-#define Nbby 8 /* number of bits/byte */
+#define Nbby 8 /* number of bits/byte */
-#define MAXARGS 1000 /* max arguments to exec */
-#define NFOLDERS 1000 /* max folder arguments on command line */
-#define DMAXFOLDER 4 /* typical number of digits */
-#define MAXFOLDER 1000 /* message increment */
+#define MAXARGS 1000 /* max arguments to exec */
+#define NFOLDERS 1000 /* max folder arguments on command line */
+#define DMAXFOLDER 4 /* typical number of digits */
+#define MAXFOLDER 1000 /* message increment */
#ifndef FALSE
-#define FALSE 0
+# define FALSE 0
#endif
#ifndef TRUE
-#define TRUE 1
+# define TRUE 1
#endif
typedef unsigned char boolean; /* not int so we can pack in a structure */
* functions that abort.
*/
#if __GNUC__ > 2
-#define NORETURN __attribute__((__noreturn__))
+# define NORETURN __attribute__((__noreturn__))
#else
-#define NORETURN
+# define NORETURN
#endif
/*
* user context/profile structure
*/
struct node {
- char *n_name; /* key */
- char *n_field; /* value */
- char n_context; /* context, not profile */
- struct node *n_next; /* next entry */
+ char *n_name; /* key */
+ char *n_field; /* value */
+ char n_context; /* context, not profile */
+ struct node *n_next; /* next entry */
};
/*
* switches structure
*/
-#define AMBIGSW (-2) /* from smatch() on ambiguous switch */
-#define UNKWNSW (-1) /* from smatch() on unknown switch */
+#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 # characters; switch hidden in -help.
- 0 : Switch can't be abbreviated; switch shown in -help.
- # : Switch can be abbreviated to # characters; switch shown in -help. */
- int minchars;
+ 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.
+ */
+ int minchars;
};
-extern struct swit anoyes[]; /* standard yes/no switches */
+extern struct swit anoyes[]; /* standard yes/no switches */
-#define ATTACHFORMATS 3 /* Number of send attach formats. */
+#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 */
+#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 */
-#define FBITS "\020\01READONLY\02SEQMOD\03ALLOW_NEW\04OTHERS"
+#define FBITS "\020\01READONLY\02SEQMOD\03ALLOW_NEW\04OTHERS"
/*
* type for holding the sequence set of a message
* can have. The first 5 sequence flags are for
* internal nmh message flags.
*/
-#define NUMATTRS ((sizeof(seqset_t) * Nbby) - 5)
+#define NUMATTRS ((sizeof(seqset_t) * Nbby) - 5)
/*
* first free slot for user defined sequences
* and attributes
*/
-#define FFATTRSLOT 5
+#define FFATTRSLOT 5
/*
* 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" */
+#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" */
-#define MBITS "\020\01EXISTS\02DELETED\03SELECTED\04NEW\05UNSEEN"
+#define MBITS "\020\01EXISTS\02DELETED\03SELECTED\04NEW\05UNSEEN"
/*
* Primary structure of folder/message information
*/
struct msgs {
- int lowmsg; /* Lowest msg number */
- int hghmsg; /* Highest msg number */
- int nummsg; /* Actual Number of msgs */
-
- int lowsel; /* Lowest selected msg number */
- int hghsel; /* Highest selected msg number */
- int numsel; /* Number of msgs selected */
-
- int curmsg; /* Number of current msg if any */
-
- int msgflags; /* Folder attributes (READONLY, etc) */
- char *foldpath; /* Pathname of folder */
-
- /*
- * 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)
- */
- seqset_t attrstats;
-
- /*
- * 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.
- */
- seqset_t *msgstats; /* msg status */
+ int lowmsg; /* Lowest msg number */
+ int hghmsg; /* Highest msg number */
+ int nummsg; /* Actual Number of msgs */
+
+ int lowsel; /* Lowest selected msg number */
+ int hghsel; /* Highest selected msg number */
+ int numsel; /* Number of msgs selected */
+
+ int curmsg; /* Number of current msg if any */
+
+ int msgflags; /* Folder attributes (READONLY, etc) */
+ char *foldpath; /* Pathname of folder */
+
+ /*
+ * 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)
+ */
+ seqset_t attrstats;
+
+ /*
+ * 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.
+ */
+ seqset_t *msgstats; /* msg status */
};
/*
*/
#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])
+ ((mp)->msgstats[(i) - mp->lowoff] = (mp)->msgstats[(j) - mp->lowoff])
#define get_msg_flags(mp,ptr,msgnum) (*(ptr) = (mp)->msgstats[(msgnum) - mp->lowoff])
#define set_msg_flags(mp,ptr,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] = *(ptr))
-#define does_exist(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] & EXISTS)
-#define unset_exists(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] &= ~EXISTS)
-#define set_exists(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] |= EXISTS)
+#define does_exist(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] & EXISTS)
+#define unset_exists(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] &= ~EXISTS)
+#define set_exists(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] |= EXISTS)
-#define is_selected(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] & SELECTED)
-#define unset_selected(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] &= ~SELECTED)
-#define set_selected(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] |= SELECTED)
+#define is_selected(mp,msgnum) ((mp)->msgstats[(msgnum) - mp->lowoff] & SELECTED)
+#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 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)
+ ((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)
+#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)
#define in_sequence(mp,seqnum,msgnum) \
*/
#define clear_folder_flags(mp) ((mp)->msgflags = 0)
-#define is_readonly(mp) ((mp)->msgflags & READONLY)
-#define set_readonly(mp) ((mp)->msgflags |= READONLY)
+#define is_readonly(mp) ((mp)->msgflags & READONLY)
+#define set_readonly(mp) ((mp)->msgflags |= READONLY)
-#define other_files(mp) ((mp)->msgflags & OTHERS)
-#define set_other_files(mp) ((mp)->msgflags |= OTHERS)
+#define other_files(mp) ((mp)->msgflags & OTHERS)
+#define set_other_files(mp) ((mp)->msgflags |= OTHERS)
-#define NULLMP ((struct msgs *) 0)
+#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. */
-
-#define LENERR (-2) /* Name too long error from getfld */
-#define FMTERR (-3) /* Message Format error */
-#define FLD 0 /* Field returned */
-#define FLDPLUS 1 /* Field returned with more to come */
-#define FLDEOF 2 /* Field returned ending at eom */
-#define BODY 3 /* Body returned with more to come */
-#define BODYEOF 4 /* Body returned ending at eom */
-#define FILEEOF 5 /* Reached end of input file */
+#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 */
+#define FLD 0 /* Field returned */
+#define FLDPLUS 1 /* Field returned with more to come */
+#define FLDEOF 2 /* Field returned ending at eom */
+#define BODY 3 /* Body returned with more to come */
+#define BODYEOF 4 /* Body returned ending at eom */
+#define FILEEOF 5 /* Reached end of input file */
/*
* 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 */
+#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; /* .. */
-extern char *msg_delim; /* .. */
+extern int msg_count; /* m_getfld() indicators */
+extern int msg_style; /* .. */
+extern char *msg_delim; /* .. */
-#define NOUSE 0 /* draft being re-used */
+#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 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 */
+#define OUTPUTLINELEN 72 /* default line length for headers */
/*
* 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))
/*
* GLOBAL VARIABLES
*/
-#define CTXMOD 0x01 /* context information modified */
-#define DBITS "\020\01CTXMOD"
+#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 *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 *invo_name; /* command invocation name */
+extern char *mypath; /* user's $HOME */
+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 */
/*
* These standard strings are defined in config.c. They are the
extern void (*done) (int) NORETURN;
#include <h/prototypes.h>
-