*/
#include <h/mh.h>
-
-extern char *mhlibdir;
+#include <h/mts.h>
+
+#define MHPARAM_SWITCHES \
+ X("components", 0, COMPSW) \
+ X("nocomponents", 0, NCOMPSW) \
+ X("all", 0, ALLSW) \
+ X("version", 0, VERSIONSW) \
+ X("help", 0, HELPSW) \
+ X("debug", 5, DEBUGSW) \
+
+#define X(sw, minchars, id) id,
+DEFINE_SWITCH_ENUM(MHPARAM);
+#undef X
+
+#define X(sw, minchars, id) { sw, minchars, id },
+DEFINE_SWITCH_ARRAY(MHPARAM, switches);
+#undef X
+
+extern char *mhbindir;
+extern char *mhlibexecdir;
extern char *mhetcdir;
-
-char *sbackup = BACKUP_PREFIX;
-
-static struct swit switches[] = {
-#define COMPSW 0
- { "components", 0 },
-#define NCOMPSW 1
- { "nocomponents", 0 },
-#define ALLSW 2
- { "all", 0 },
-#define VERSIONSW 3
- { "version", 0 },
-#define HELPSW 4
- { "help", 0 },
-#define DEBUGSW 5
- { "debug", -5 },
- { NULL, 0 }
-};
+extern char *mhdocdir;
+
+static char *sbackup = BACKUP_PREFIX;
+
+static char *datalocking = "fcntl";
+static char *localmbox = "";
+static int localmbox_primed = 0;
+
+extern char *spoollocking;
+
+static char *sasl =
+#ifdef CYRUS_SASL
+ "cyrus_sasl";
+#else
+ "";
+#endif
+
+static char *tls =
+#ifdef TLS_SUPPORT
+ "tls";
+#else
+ "";
+#endif
+
+static char *mimetypeproc =
+#ifdef MIMETYPEPROC
+ MIMETYPEPROC;
+#else
+ "";
+#endif
+
+static char *mimeencodingproc =
+#ifdef MIMEENCODINGPROC
+ MIMEENCODINGPROC;
+#else
+ "";
+#endif
+
+static char *iconv =
+#ifdef HAVE_ICONV
+ "iconv";
+#else
+ "";
+#endif
+
+static char *oauth =
+#ifdef OAUTH_SUPPORT
+ "oauth";
+#else
+ "";
+#endif
struct proc {
char *p_name;
};
static struct proc procs [] = {
- { "context", &context },
- { "mh-sequences", &mh_seq },
- { "buildmimeproc", &buildmimeproc },
- { "fileproc", &fileproc },
- { "foldprot", &foldprot },
- { "formatproc", &formatproc },
- { "incproc", &incproc },
- { "installproc", &installproc },
- { "lproc", &lproc },
- { "mailproc", &mailproc },
- { "mhlproc", &mhlproc },
- { "moreproc", &moreproc },
- { "msgprot", &msgprot },
- { "mshproc", &mshproc },
- { "packproc", &packproc },
- { "postproc", &postproc },
- { "rmmproc", &rmmproc },
- { "sendproc", &sendproc },
- { "showmimeproc", &showmimeproc },
- { "showproc", &showproc },
- { "version", &version_num },
- { "vmhproc", &vmhproc },
- { "whatnowproc", &whatnowproc },
- { "whomproc", &whomproc },
- { "etcdir", &mhetcdir },
- { "libdir", &mhlibdir },
- { "sbackup", &sbackup },
- { NULL, NULL },
+ { "context", &context },
+ { "mh-sequences", &mh_seq },
+ { "buildmimeproc", &buildmimeproc },
+ { "fileproc", &fileproc },
+ { "foldprot", &foldprot },
+ { "formatproc", &formatproc },
+ { "incproc", &incproc },
+ { "lproc", &lproc },
+ { "mailproc", &mailproc },
+ { "mhlproc", &mhlproc },
+ { "mimetypeproc", &mimetypeproc },
+ { "mimeencodingproc", &mimeencodingproc },
+ { "moreproc", &moreproc },
+ { "msgprot", &msgprot },
+ { "packproc", &packproc },
+ { "postproc", &postproc },
+ { "rmmproc", &rmmproc },
+ { "sendproc", &sendproc },
+ { "showmimeproc", &showmimeproc },
+ { "showproc", &showproc },
+ { "version", &version_num },
+ { "whatnowproc", &whatnowproc },
+ { "whomproc", &whomproc },
+ { "bindir", &mhbindir },
+ { "libexecdir", &mhlibexecdir },
+ { "libdir", &mhlibexecdir },
+ { "etcdir", &mhetcdir },
+ { "docdir", &mhdocdir },
+ { "localmbox", &localmbox },
+ { "sbackup", &sbackup },
+ { "datalocking", &datalocking },
+ { "spoollocking", &spoollocking },
+ { "iconv", &iconv },
+ { "oauth", &oauth },
+ { "sasl", &sasl },
+ { "tls", &tls },
+ { NULL, NULL },
};
char *cp, buf[BUFSIZ], **argp;
char **arguments, *comps[MAXARGS];
- invo_name = r1bindex (argv[0], '/');
-
- /* read user profile/context */
- context_read();
+ if (nmh_init(argv[0], 2)) { return 1; }
arguments = getarguments (invo_name, argc, argv, 1);
argp = arguments;
}
} else {
comps[compp++] = cp;
+ if (strcmp("localmbox", cp) == 0 && ! localmbox_primed) {
+ localmbox = getlocalmbox();
+ localmbox_primed = 1;
+ }
}
}
advise(NULL, "-%scomponents ignored with -all",
components ? "" : "no");
- /* print all entries in context/profile list */
+ /* Print all entries in context/profile list. That does not
+ include entries in mts.conf, such as spoollocking. */
for (np = m_defs; np; np = np->n_next)
printf("%s: %s\n", np->n_name, np->n_field);
} else if (debug) {
struct proc *ps;
+ /* In case datalocking was set in profile. */
+ if ((cp = context_find("datalocking"))) { datalocking = cp; }
+
+ /* In case spoollocking was set in mts.conf. */
+ mts_init();
+
+ /* Also set localmbox here */
+ if (! localmbox_primed) {
+ localmbox = getlocalmbox();
+ localmbox_primed = 1;
+ }
+
/*
* Print the current value of everything in
* procs array. This will show their current
components = compp > 1;
for (i = 0; i < compp; i++) {
- register char *value;
+ char *value;
+
+ if (! strcmp ("spoollocking", comps[i])) {
+ /* In case spoollocking was set in mts.conf. */
+ mts_init();
+ }
value = context_find (comps[i]);
if (!value)
missed++;
}
}
-
+
done (missed);
return 1;
}
struct proc *ps;
for (ps = procs; ps->p_name; ps++)
- if (!mh_strcasecmp (ps->p_name, str))
+ if (!strcasecmp (ps->p_name, str ? str : ""))
return (*ps->p_field);
return NULL;