X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/2e768e3cc0ce768373d3320eca4cdd08b8cf646a..8ce0a681f1e9e68d0623a066fb485b7be1267028:/uip/mhparam.c diff --git a/uip/mhparam.c b/uip/mhparam.c index c4b0af2e..caf72c1d 100644 --- a/uip/mhparam.c +++ b/uip/mhparam.c @@ -1,6 +1,4 @@ - -/* - * mhparam.c -- print mh_profile values +/* mhparam.c -- print mh_profile values * * Originally contributed by * Jeffrey C Honig @@ -10,12 +8,16 @@ * complete copyright information. */ -#include - -extern char *mhlibdir; -extern char *mhetcdir; - -char *sbackup = BACKUP_PREFIX; +#include "h/mh.h" +#include "sbr/smatch.h" +#include "sbr/context_find.h" +#include "sbr/ambigsw.h" +#include "sbr/print_version.h" +#include "sbr/print_help.h" +#include "sbr/error.h" +#include "h/mts.h" +#include "h/done.h" +#include "h/utils.h" #define MHPARAM_SWITCHES \ X("components", 0, COMPSW) \ @@ -33,61 +35,124 @@ DEFINE_SWITCH_ENUM(MHPARAM); DEFINE_SWITCH_ARRAY(MHPARAM, switches); #undef X +extern char *mhbindir; +extern char *mhlibexecdir; +extern char *mhetcdir; +extern char *mhdocdir; + +static char *sbackup = BACKUP_PREFIX; + +static char *datalocking = "fcntl"; +static char *localmbox = ""; +static bool localmbox_primed; + +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; char **p_field; }; static struct proc procs [] = { - { "context", &context }, - { "mh-sequences", &mh_seq }, - { "buildmimeproc", &buildmimeproc }, - { "fileproc", &fileproc }, - { "foldprot", &foldprot }, - { "formatproc", &formatproc }, - { "incproc", &incproc }, - { "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 }, + { "etcdir", &mhetcdir }, + { "docdir", &mhdocdir }, + { "localmbox", &localmbox }, + { "sbackup", &sbackup }, + { "datalocking", &datalocking }, + { "spoollocking", &spoollocking }, + { "iconv", &iconv }, + { "oauth", &oauth }, + { "sasl", &sasl }, + { "tls", &tls }, + { NULL, NULL }, }; /* * static prototypes */ -static char *p_find(char *); +static char *p_find(char *) PURE; int main(int argc, char **argv) { - int i, compp = 0, missed = 0; - int all = 0, debug = 0; + int i, compp = 0; + bool missed; + bool all = false; + bool debug = false; int components = -1; 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], true, false)) { return 1; } arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -99,7 +164,7 @@ main(int argc, char **argv) ambigsw (cp, switches); done (1); case UNKWNSW: - adios (NULL, "-%s unknown", cp); + die("-%s unknown", cp); case HELPSW: snprintf (buf, sizeof(buf), "%s [profile-components] [switches]", @@ -118,15 +183,19 @@ main(int argc, char **argv) break; case ALLSW: - all = 1; + all = true; break; case DEBUGSW: - debug = 1; + debug = true; break; } } else { comps[compp++] = cp; + if (strcmp("localmbox", cp) == 0 && ! localmbox_primed) { + localmbox = getlocalmbox(); + localmbox_primed = true; + } } } @@ -134,33 +203,56 @@ main(int argc, char **argv) struct node *np; if (compp) - advise(NULL, "profile-components ignored with -all"); + inform("profile-components ignored with -all"); if (components >= 0) - advise(NULL, "-%scomponents ignored with -all", + inform("-%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) { + } + + 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 = true; + } + /* * Print the current value of everything in * procs array. This will show their current * value (as determined after context is read). */ for (ps = procs; ps->p_name; ps++) - printf ("%s: %s\n", ps->p_name, *ps->p_field ? *ps->p_field : ""); + printf ("%s: %s\n", ps->p_name, FENDNULL(*ps->p_field)); - } else { + } + + missed = false; + if (! all) { if (components < 0) 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) @@ -169,14 +261,13 @@ main(int argc, char **argv) if (components) printf("%s: ", comps[i]); - printf("%s\n", value); + puts(value); } else - missed++; + missed = true; } } - - done (missed); - return 1; + + done(missed); } @@ -186,8 +277,8 @@ p_find(char *str) struct proc *ps; for (ps = procs; ps->p_name; ps++) - if (!mh_strcasecmp (ps->p_name, str)) - return (*ps->p_field); + if (!strcasecmp (ps->p_name, str)) + return *ps->p_field; return NULL; }