From: Richard Russon Date: Fri, 30 Mar 2018 12:25:20 +0000 (+0100) Subject: refactor: nntp config X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73e5e8d5500e889e5e196cb7955fed828869e71c;p=neomutt refactor: nntp config Precedence: command line, environment, config file, system file --- diff --git a/init.c b/init.c index e6c4ea207..6ce49378c 100644 --- 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 e8359daf4..ddc57f7cd 100644 --- 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();