summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2017-05-31 13:56:44 +0300
committerSergey Poznyakoff <gray@gnu.org>2017-05-31 14:05:23 +0300
commit744c4a9c94064a0dae7d2ed8237ac8129e65510c (patch)
tree8fd02a623f6ce0ac49eefc5fb9dddb37520c7483
parenta79ec559859084cfe8a357bf9076d472fefbeeee (diff)
downloadmailutils-744c4a9c94064a0dae7d2ed8237ac8129e65510c.tar.gz
mailutils-744c4a9c94064a0dae7d2ed8237ac8129e65510c.tar.bz2
Fix MH initialization order
Calls to mh_global_profile_get and similar functions must appear only after a call to mh_getopt (more properly, after mh_init and mh_init2 are callead). This sequence was inadvertently changed by commit e267ac86, due to which comp, forw, repl and burst stopped reading important information from .mh_profile. Bug spotted by Pierre-Jean. * mh/burst.c: Make sure profile variables are accessed after the profile is read. * mh/comp.c: Likewise. * mh/forw.c: Likewise. * mh/repl.c: Likewise. * mh/mh.h (mh_whatnow_env_from_environ): Split into two functions: mh_whatnow_env_from_environ_early, to be called before mh_getopt, and mh_whatnow_env_from_environ_late, to be called after it. * mh/whatnowenv.c: Ditto. * mh/whatnow.c: Call these two in the right order. * THANKS: Update.
-rw-r--r--THANKS1
-rw-r--r--mh/burst.c6
-rw-r--r--mh/comp.c9
-rw-r--r--mh/forw.c6
-rw-r--r--mh/mh.h3
-rw-r--r--mh/repl.c9
-rw-r--r--mh/whatnow.c4
-rw-r--r--mh/whatnowenv.c12
8 files changed, 34 insertions, 16 deletions
diff --git a/THANKS b/THANKS
index 8153e2723..a9367700e 100644
--- a/THANKS
+++ b/THANKS
@@ -24,6 +24,7 @@ Matthew Whitworth <matthew@okcomputer.org>
maks <maksqwe1@ukr.net>
Neil R. Ormos <ormos@ormos.org>
Olivier Bornet <Olivier.Bornet@smartdata.ch>
+Pierre-Jean <lists@utroff.org>
Robby Villegas <robby.villegas@gmail.com>
Ronan KERYELL <Ronan.Keryell@enstb.org>
Sam Roberts <sroberts@uniserve.com>
diff --git a/mh/burst.c b/mh/burst.c
index 156764544..a31b5c822 100644
--- a/mh/burst.c
+++ b/mh/burst.c
@@ -650,10 +650,12 @@ main (int argc, char **argv)
int rc;
mu_mailbox_t mbox;
mu_msgset_t msgset;
- const char *tempfolder = mh_global_profile_get ("Temp-Folder", ".temp");
-
+ const char *tempfolder = NULL;
+
mh_getopt (&argc, &argv, options, MH_GETOPT_DEFAULT_FOLDER,
args_doc, prog_doc, NULL);
+ if (!tempfolder)
+ tempfolder = mh_global_profile_get ("Temp-Folder", ".temp");
if (eb_min_length == 0)
eb_min_length = 1;
diff --git a/mh/comp.c b/mh/comp.c
index d42f453db..075bb4516 100644
--- a/mh/comp.c
+++ b/mh/comp.c
@@ -130,10 +130,13 @@ copy_message (mu_mailbox_t mbox, size_t n, const char *file)
int
main (int argc, char **argv)
{
- draftfolder = mh_global_profile_get ("Draft-Folder", NULL);
- whatnowproc = mh_global_profile_get ("whatnowproc", NULL);
-
mh_getopt (&argc, &argv, options, 0, args_doc, prog_doc, NULL);
+
+ if (!draftfolder)
+ draftfolder = mh_global_profile_get ("Draft-Folder", NULL);
+ if (!whatnowproc)
+ whatnowproc = mh_global_profile_get ("whatnowproc", NULL);
+
if (use_draft)
draftmessage = "cur";
if (!formfile)
diff --git a/mh/forw.c b/mh/forw.c
index d0f6e7f85..5e0e08b97 100644
--- a/mh/forw.c
+++ b/mh/forw.c
@@ -382,10 +382,12 @@ main (int argc, char **argv)
{
int rc;
- draftfolder = mh_global_profile_get ("Draft-Folder", NULL);
- whatnowproc = mh_global_profile_get ("whatnowproc", NULL);
mh_getopt (&argc, &argv, options, MH_GETOPT_DEFAULT_FOLDER,
args_doc, prog_doc, NULL);
+ if (!draftfolder)
+ draftfolder = mh_global_profile_get ("Draft-Folder", NULL);
+ if (!whatnowproc)
+ whatnowproc = mh_global_profile_get ("whatnowproc", NULL);
if (!formfile)
mh_find_file ("forwcomps", &formfile);
diff --git a/mh/mh.h b/mh/mh.h
index 4984d483c..65921e37d 100644
--- a/mh/mh.h
+++ b/mh/mh.h
@@ -387,5 +387,6 @@ char *mh_safe_make_file_name (const char *dir, const char *file);
void mh_mailbox_get_cur (mu_mailbox_t mbox, size_t *pcur);
void mh_mailbox_set_cur (mu_mailbox_t mbox, size_t cur);
-void mh_whatnow_env_from_environ (struct mh_whatnow_env *wh);
+void mh_whatnow_env_from_environ_early (struct mh_whatnow_env *wh);
+void mh_whatnow_env_from_environ_late (struct mh_whatnow_env *wh);
void mh_whatnow_env_to_environ (struct mh_whatnow_env *wh);
diff --git a/mh/repl.c b/mh/repl.c
index 7d3108a81..1cc192971 100644
--- a/mh/repl.c
+++ b/mh/repl.c
@@ -294,12 +294,15 @@ main (int argc, char **argv)
{
int rc;
- draftfolder = mh_global_profile_get ("Draft-Folder", NULL);
- whatnowproc = mh_global_profile_get ("whatnowproc", NULL);
-
mh_getopt (&argc, &argv, options, MH_GETOPT_DEFAULT_FOLDER,
args_doc, prog_doc, NULL);
+ if (!draftfolder)
+ draftfolder = mh_global_profile_get ("Draft-Folder", NULL);
+ if (!whatnowproc)
+ whatnowproc = mh_global_profile_get ("whatnowproc", NULL);
+
+
if (!format_str)
format_str = default_format_str;
diff --git a/mh/whatnow.c b/mh/whatnow.c
index 541f3b37b..32b619835 100644
--- a/mh/whatnow.c
+++ b/mh/whatnow.c
@@ -52,9 +52,9 @@ static struct mu_option options[] = {
int
main (int argc, char **argv)
{
- mh_whatnow_env_from_environ (&wh_env);
-
+ mh_whatnow_env_from_environ_early (&wh_env);
mh_getopt (&argc, &argv, options, 0, args_doc, prog_doc, NULL);
+ mh_whatnow_env_from_environ_late (&wh_env);
if (argc)
wh_env.draftfile = argv[0];
diff --git a/mh/whatnowenv.c b/mh/whatnowenv.c
index 9a7984cf1..fdcfc64b7 100644
--- a/mh/whatnowenv.c
+++ b/mh/whatnowenv.c
@@ -25,10 +25,8 @@ _add_to_list (size_t num, mu_message_t msg, void *data)
}
void
-mh_whatnow_env_from_environ (struct mh_whatnow_env *wh)
+mh_whatnow_env_from_environ_early (struct mh_whatnow_env *wh)
{
- char *folder = getenv ("mhfolder");
-
memset (wh, 0, sizeof (*wh));
wh->file = getenv ("mhdraft");
@@ -36,6 +34,14 @@ mh_whatnow_env_from_environ (struct mh_whatnow_env *wh)
wh->draftfile = wh->file;
wh->editor = getenv ("mheditor");
wh->prompt = getenv ("mhprompt"); /* extension */
+}
+
+
+void
+mh_whatnow_env_from_environ_late (struct mh_whatnow_env *wh)
+{
+ char *folder = getenv ("mhfolder");
+
if (folder)
{
wh->anno_field = getenv ("mhannotate");

Return to:

Send suggestions and report system problems to the System administrator.