X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=init.c;h=079ecc7a0261e990a07f2aa04263000e93b9500c;hp=7ffb37cb98abce7da0bcacba489ce8a022e4d31c;hb=2c522cac0278dd774896f25048da2c5cc1d9cf99;hpb=98ccd0a3050f3dda6c8995e1894b46b8cb7f6ba5 diff --git a/init.c b/init.c index 7ffb37c..079ecc7 100644 --- a/init.c +++ b/init.c @@ -32,6 +32,7 @@ #include "lib/intl.h" #include "lib/str.h" #include "lib/rx.h" +#include "lib/list.h" #include "lib/debug.h" #include @@ -2325,3 +2326,50 @@ int mutt_get_hook_type (const char *name) return c->data; return 0; } + +static int opt_cmp (const void* a, const void* b) { + return (mutt_strcmp ((*(struct option_t**) a)->option, + (*(struct option_t**) b)->option)); +} + +/* dump out the value of all the variables we have */ +int mutt_dump_variables (void) { + int i; + + char errbuff[STRING]; + char command[STRING]; + list2_t* tmp = NULL; + + BUFFER err, token; + + memset (&err, 0, sizeof (err)); + memset (&token, 0, sizeof (token)); + + err.data = errbuff; + err.dsize = sizeof (errbuff); + + /* get all non-synonyms into list... */ + for (i = 0; MuttVars[i].option; i++) { + if (MuttVars[i].type == DT_SYN) + continue; + list_push_back (&tmp, &MuttVars[i]); + } + if (!list_empty(tmp)) { + /* ...and dump list sorted */ + qsort (tmp->data, tmp->length, sizeof (void*), opt_cmp); + for (i = 0; i < tmp->length; i++) { + snprintf (command, sizeof (command), "set ?%s\n", + ((struct option_t*) tmp->data[i])->option); + if (mutt_parse_rc_line (command, &token, &err) == -1) { + fprintf (stderr, "%s\n", err.data); + FREE (&token.data); + list_del (&tmp, NULL); + return 1; + } + printf("%s\n", err.data); + } + } + FREE (&token.data); + list_del (&tmp, NULL); + return 0; +}