diff --git a/src/nnn.c b/src/nnn.c index 077aaa26..4c812863 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -6451,13 +6451,12 @@ int main(int argc, char *argv[]) #ifndef NOMOUSE mmask_t mask; #endif + const char* const env_opts = xgetenv(env_cfg[NNN_OPTS], NULL); + int env_opts_id = env_opts ? (int)strlen(env_opts) : -1; - const char* const env_opts = xgetenv(env_cfg[NNN_OPTS], NULL); - int env_opts_idx = (env_opts ? (int)strlen(env_opts) : -1); - while ((opt = (--env_opts_idx >= 0 ? env_opts[env_opts_idx] : getopt(argc, argv, "aAb:cdeEgHKnop:QrRs:St:vVxh"))) != -1) { - if (env_opts_idx >= 0) { - optarg = NULL; - } + while ((opt = (env_opts_id > 0 + ? env_opts[--env_opts_id] + : getopt(argc, argv, "aAb:cdeEgHKnop:QrRs:St:vVxh"))) != -1) { switch (opt) { case 'a': cfg.mtime = 0; @@ -6502,9 +6501,9 @@ int main(int argc, char *argv[]) cfg.nonavopen = 1; break; case 'p': - if (!optarg) { + if (env_opts_id >= 0) break; - } + cfg.picker = 1; if (optarg[0] == '-' && optarg[1] == '\0') cfg.pickraw = 1; @@ -6534,39 +6533,26 @@ int main(int argc, char *argv[]) cfg.rollover = 0; break; case 's': - if (!optarg) { - break; - } - session = optarg; + if (env_opts_id < 0) + session = optarg; break; case 't': - if (!optarg) { - break; - } - idletimeout = atoi(optarg); + if (env_opts_id < 0) + idletimeout = atoi(optarg); break; case 'v': namecmpfn = &xstrverscasecmp; break; case 'V': - if (env_opts_idx >= 0) { - break; - } fprintf(stdout, "%s\n", VERSION); return _SUCCESS; case 'x': cfg.x11 = 1; break; case 'h': - if (env_opts_idx >= 0) { - break; - } usage(); return _SUCCESS; default: - if (env_opts_idx >= 0) { - fprintf(stderr, "Error: Illegal option '%c' in env var '%s'\n\n", opt, env_cfg[NNN_OPTS]); - } usage(); return _FAILURE; }