Split nmh dir into mmh dir (~/.mmh) and mail storage (~/Mail).
[mmh] / h / mh.h
diff --git a/h/mh.h b/h/mh.h
index 35c8b41..0c0d81f 100644 (file)
--- 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 <h/nmh.h>
 
 /*
- * 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,20 +46,20 @@ 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;
 };
 
@@ -68,8 +68,8 @@ extern struct swit anoyes[];   /* standard yes/no switches */
 #define ATTACHFORMATS 3        /* Number of send attach formats. */
 
 /*
- * general folder attributes
- */
+** 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     */
@@ -78,26 +78,26 @@ extern struct swit anoyes[];   /* standard yes/no switches */
 #define FBITS  "\020\01READONLY\02SEQMOD\03ALLOW_NEW\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.
- */
+** 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)
 
 /*
- * first free slot for user defined sequences
- * and attributes
- */
+** first free slot for user defined sequences
+** and attributes
+*/
 #define FFATTRSLOT  5
 
 /*
- * internal messages attributes (sequences)
- */
+** internal messages attributes (sequences)
+*/
 #define EXISTS        (1<<0)    /* exists            */
 #define DELETED       (1<<1)    /* deleted           */
 #define SELECTED      (1<<2)    /* selected for use  */
@@ -107,8 +107,8 @@ typedef unsigned int seqset_t;
 #define MBITS "\020\01EXISTS\02DELETED\03SELECTED\04NEW\05UNSEEN"
 
 /*
- * 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 +124,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])
@@ -202,8 +202,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 +215,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,8 +240,8 @@ 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    */
@@ -252,17 +253,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,30 +274,34 @@ 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.
- */
+** 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;
 extern char *backup_prefix;
 extern char *altmsglink;
 extern char *catproc;
 extern char *components;
 extern char *context;
+extern char *curfolder;
 extern char *current;
 extern char *defaulteditor;
 extern char *defaultfolder;
@@ -315,9 +316,8 @@ 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 *mh_seq;
 extern char *mhlformat;
 extern char *mhlforward;
@@ -332,7 +332,7 @@ 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 *rcvstoreproc;