]> granicus.if.org Git - neomutt/commitdiff
refactor: nntp config
authorRichard Russon <rich@flatcap.org>
Fri, 30 Mar 2018 12:25:20 +0000 (13:25 +0100)
committerRichard Russon <rich@flatcap.org>
Tue, 3 Apr 2018 02:38:52 +0000 (03:38 +0100)
Precedence: command line, environment, config file, system file

init.c
main.c

diff --git a/init.c b/init.c
index e6c4ea207e1a1460369a8558d081016b8a085fde..6ce49378c2586e5ff593905177f9227eb3811c3b 100644 (file)
--- a/init.c
+++ b/init.c
@@ -3745,20 +3745,6 @@ int mutt_init(int skip_sys_rc, struct ListHead *commands)
   snprintf(AttachmentMarker, sizeof(AttachmentMarker), "\033]9;%" PRIu64 "\a",
            mutt_rand64());
 
-#ifdef USE_NNTP
-  p = mutt_str_getenv("NNTPSERVER");
-  if (p)
-  {
-    FREE(&NewsServer);
-    NewsServer = mutt_str_strdup(p);
-  }
-  else
-  {
-    p = mutt_file_read_keyword(SYSCONFDIR "/nntpserver", buffer, sizeof(buffer));
-    NewsServer = mutt_str_strdup(p);
-  }
-#endif
-
   p = mutt_str_getenv("MAIL");
   if (p)
     SpoolFile = mutt_str_strdup(p);
diff --git a/main.c b/main.c
index e8359daf4f5b602cdb5f6a4a11b76780cfada75a..ddc57f7cdd063ef6708eb97d264b6bcece336f1e 100644 (file)
--- a/main.c
+++ b/main.c
@@ -242,6 +242,9 @@ int main(int argc, char *argv[], char *envp[])
   char *new_magic = NULL;
   char *dlevel = NULL;
   char *dfile = NULL;
+#ifdef USE_NNTP
+  char *cli_nntp = NULL;
+#endif
   struct Header *msg = NULL;
   struct ListHead attach = STAILQ_HEAD_INITIALIZER(attach);
   struct ListHead commands = STAILQ_HEAD_INITIALIZER(commands);
@@ -360,7 +363,7 @@ int main(int argc, char *argv[], char *envp[])
           break;
 #ifdef USE_NNTP
         case 'g': /* Specify a news server */
-          set_default_value("news_server", (intptr_t) mutt_str_strdup(optarg));
+          cli_nntp = optarg;
           /* fallthrough */
         case 'G': /* List of newsgroups */
           flags |= MUTT_SELECT | MUTT_NEWS;
@@ -544,6 +547,23 @@ int main(int argc, char *argv[], char *envp[])
 
   mutt_list_free(&commands);
 
+#ifdef USE_NNTP
+  /* "$news_server" precedence: command line, environment, config file, system file */
+  const char *env_nntp = NULL;
+  if (cli_nntp)
+    mutt_str_replace(&NewsServer, cli_nntp);
+  else if ((env_nntp = mutt_str_getenv("NNTPSERVER")))
+    mutt_str_replace(&NewsServer, env_nntp);
+  else if (!NewsServer)
+  {
+    char buffer[1024];
+    char *server = mutt_file_read_keyword(SYSCONFDIR "/nntpserver", buffer, sizeof(buffer));
+    NewsServer = mutt_str_strdup(server);
+  }
+  if (NewsServer)
+    set_default_value("news_server", (intptr_t) mutt_str_strdup(NewsServer));
+#endif
+
   /* Initialize crypto backends.  */
   crypt_init();