From 8b1484e7bcb6490bb29bf5f59fdcfeb741a59005 Mon Sep 17 00:00:00 2001 From: "Steffen (Daode) Nurpmeso" Date: Thu, 12 May 2016 16:56:06 +0200 Subject: [PATCH] Many: adhere to new automatic variable handling.. Long in TODO: if((shell = ok_vlook(SHELL)) == NULL) shell = XHSELL; is now only ok_vlook(SHELL)! And ditto some more! --- auxlily.c | 17 +++++++--------- cmd1.c | 13 ++++-------- cmd2.c | 3 +-- cmd3.c | 14 ++++--------- cmd_cnd.c | 10 +++++++-- collect.c | 14 +++---------- edit.c | 8 ++------ fio.c | 16 +++------------ lex_input.c | 6 +----- main.c | 68 +++++++++++++++++++++++++++++++++---------------------------- popen.c | 6 ++---- send.c | 10 ++------- sendout.c | 17 ++++++++-------- shexp.c | 22 +++++++++----------- spam.c | 5 +---- termcap.c | 2 +- urlcrecry.c | 8 ++------ 17 files changed, 96 insertions(+), 143 deletions(-) diff --git a/auxlily.c b/auxlily.c index 772518bb..fdcd1b33 100644 --- a/auxlily.c +++ b/auxlily.c @@ -188,21 +188,18 @@ screensize(void) } FL char const * -n_pager_get(char const **env_addon) -{ - char const *cp; +n_pager_get(char const **env_addon){ + char const *rv; NYD_ENTER; - cp = ok_vlook(PAGER); - if (cp == NULL || *cp == '\0') - cp = XPAGER; + rv = ok_vlook(PAGER); - if (env_addon != NULL) { + if(env_addon != NULL){ *env_addon = NULL; /* Update the manual upon any changes: * *colour-pager*, $PAGER */ if(strstr(rv, "less") != NULL){ - if(!env_blook("LESS", TRU1)) + if(getenv("LESS") == NULL) *env_addon = #ifdef HAVE_TERMCAP (pstate & PS_TERMCAP_CA_MODE) ? "LESS=Ri" @@ -210,12 +207,12 @@ n_pager_get(char const **env_addon) #endif "LESS=FRXi"; }else if(strstr(rv, "lv") != NULL){ - if(!env_blook("LV", TRU1)) + if(getenv("LV") == NULL) *env_addon = "LV=-c"; } } NYD_LEAVE; - return cp; + return rv; } FL void diff --git a/cmd1.c b/cmd1.c index 66d97436..6f06d984 100644 --- a/cmd1.c +++ b/cmd1.c @@ -135,7 +135,7 @@ _print_head(size_t yetprinted, size_t msgno, FILE *f, bool_t threaded) if (ok_blook(bsdcompat) || ok_blook(bsdflags)) { char const bsdattr[attrlen +1] = "NU *HMFAT+-$~"; memcpy(attrlist, bsdattr, sizeof bsdattr); - } else if (env_blook("SYSV3", FAL0)) { + } else if (ok_blook(SYSV3)) { char const bsdattr[attrlen +1] = "NU *HMFAT+-$~"; memcpy(attrlist, bsdattr, sizeof bsdattr); OBSOLETE(_("*SYSV3*: please use *bsdcompat* or *bsdflags*, " @@ -983,9 +983,7 @@ _type1(int *msgvec, bool_t doign, bool_t dopage, bool_t dopipe, } if (dopipe) { - if ((cp = ok_vlook(SHELL)) == NULL) - cp = XSHELL; - if ((obuf = Popen(cmd, "w", cp, NULL, 1)) == NULL) { + if ((obuf = Popen(cmd, "w", ok_vlook(SHELL), NULL, 1)) == NULL) { n_perr(cmd, 0); obuf = stdout; } @@ -1460,7 +1458,6 @@ FL int c_folders(void *v) { char dirname[PATH_MAX], *name, **argv = v; - char const *cmd; int rv = 1; NYD_ENTER; @@ -1474,10 +1471,8 @@ c_folders(void *v) } else name = dirname; - if ((cmd = ok_vlook(LISTER)) == NULL) - cmd = XLISTER; - run_command(cmd, 0, COMMAND_FD_PASS, COMMAND_FD_PASS, name, NULL, NULL, - NULL); + run_command(ok_vlook(LISTER), 0, COMMAND_FD_PASS, COMMAND_FD_PASS, name, + NULL, NULL, NULL); jleave: NYD_LEAVE; return rv; diff --git a/cmd2.c b/cmd2.c index cc21a455..752a10a7 100644 --- a/cmd2.c +++ b/cmd2.c @@ -94,8 +94,7 @@ save1(char *str, int domark, char const *cmd, struct ignoretab *ignoret, ++file; if (*file == '|') { ++file; - if ((shell = ok_vlook(SHELL)) == NULL) - shell = XSHELL; + shell = ok_vlook(SHELL); } } diff --git a/cmd3.c b/cmd3.c index 466ca676..1c6e6b8f 100644 --- a/cmd3.c +++ b/cmd3.c @@ -681,7 +681,6 @@ jleave: FL int c_shell(void *v) { - char const *sh = NULL; char *str = v, *cmd; size_t cmdsize; sigset_t mask; @@ -691,13 +690,11 @@ c_shell(void *v) cmd = smalloc(cmdsize = strlen(str) +1); memcpy(cmd, str, cmdsize); _bangexp(&cmd, &cmdsize); - if ((sh = ok_vlook(SHELL)) == NULL) - sh = XSHELL; sigint = safe_signal(SIGINT, SIG_IGN); sigemptyset(&mask); - run_command(sh, &mask, COMMAND_FD_PASS, COMMAND_FD_PASS, "-c", cmd, NULL, - NULL); + run_command(ok_vlook(SHELL), &mask, COMMAND_FD_PASS, COMMAND_FD_PASS, "-c", + cmd, NULL, NULL); safe_signal(SIGINT, sigint); printf("!\n"); @@ -710,15 +707,12 @@ FL int c_dosh(void *v) { sighandler_type sigint; - char const *sh; NYD_ENTER; UNUSED(v); - if ((sh = ok_vlook(SHELL)) == NULL) - sh = XSHELL; - sigint = safe_signal(SIGINT, SIG_IGN); - run_command(sh, 0, COMMAND_FD_PASS, COMMAND_FD_PASS, NULL, NULL, NULL, NULL); + run_command(ok_vlook(SHELL), 0, COMMAND_FD_PASS, COMMAND_FD_PASS, NULL, + NULL, NULL, NULL); safe_signal(SIGINT, sigint); putchar('\n'); NYD_LEAVE; diff --git a/cmd_cnd.c b/cmd_cnd.c index 88d118ea..c2305342 100644 --- a/cmd_cnd.c +++ b/cmd_cnd.c @@ -132,7 +132,10 @@ jesyn: else goto jesyn; } - lhv = noop ? NULL : vok_vlook(cp); + if(noop) + lhv = NULL; + else if((lhv = vok_vlook(cp)) == NULL) + lhv = getenv(cp); /* Single argument, "implicit boolean" form? */ if (argc == 1) { @@ -180,7 +183,10 @@ jesyn: goto jesyn; } } - rhv = noop ? NULL : vok_vlook(rhv); + if(noop) + rhv = NULL; + else if((rhv = vok_vlook(cp = rhv)) == NULL) + rhv = getenv(cp); } /* A null value is treated as the empty string */ diff --git a/collect.c b/collect.c index c1c457af..91bced9f 100644 --- a/collect.c +++ b/collect.c @@ -222,15 +222,10 @@ static void insertcommand(FILE *fp, char const *cmd) { FILE *ibuf = NULL; - char const *cp; int c; NYD_ENTER; - cp = ok_vlook(SHELL); - if (cp == NULL) - cp = XSHELL; - - if ((ibuf = Popen(cmd, "r", cp, NULL, 0)) != NULL) { + if ((ibuf = Popen(cmd, "r", ok_vlook(SHELL), NULL, 0)) != NULL) { while ((c = getc(ibuf)) != EOF) /* XXX bytewise, yuck! */ putc(c, fp); Pclose(ibuf, TRU1); @@ -432,7 +427,6 @@ mespipe(char *cmd) { FILE *nf; sighandler_type sigint; - char const *sh; NYD_ENTER; sigint = safe_signal(SIGINT, SIG_IGN); @@ -443,11 +437,9 @@ mespipe(char *cmd) } /* stdin = current message. stdout = new message */ - if ((sh = ok_vlook(SHELL)) == NULL) - sh = XSHELL; fflush(_coll_fp); - if (run_command(sh, 0, fileno(_coll_fp), fileno(nf), "-c", cmd, NULL, NULL) - < 0) { + if (run_command(ok_vlook(SHELL), 0, fileno(_coll_fp), fileno(nf), "-c", + cmd, NULL, NULL) < 0) { Fclose(nf); goto jout; } diff --git a/edit.c b/edit.c index 0b258bf3..4efeba83 100644 --- a/edit.c +++ b/edit.c @@ -145,7 +145,6 @@ run_editor(FILE *fp, off_t size, int viored, int readonly, struct header *hp, int t; time_t modtime; off_t modsize; - char const *ed; char *tempEdit; NYD_ENTER; @@ -198,12 +197,9 @@ run_editor(FILE *fp, off_t size, int viored, int readonly, struct header *hp, if (t != 0) goto jleave; - ed = (viored == 'e') ? ok_vlook(EDITOR) : ok_vlook(VISUAL); - if (ed == NULL) - ed = (viored == 'e') ? "ed" : "vi"; /* XXX no magics, -> nail.h */ - sigemptyset(&cset); - if (run_command(ed, (oldint != SIG_IGN ? &cset : NULL), + if (run_command((viored == 'e' ? ok_vlook(EDITOR) : ok_vlook(VISUAL)), + (oldint != SIG_IGN ? &cset : NULL), COMMAND_FD_PASS, COMMAND_FD_PASS, tempEdit, NULL, NULL, NULL) < 0) goto jleave; diff --git a/fio.c b/fio.c index 85ec47f8..902e88c5 100644 --- a/fio.c +++ b/fio.c @@ -433,22 +433,12 @@ jleave: FL char const * getdeadletter(void) /* XXX should that be in auxlily.c? */ { - char const *cp; + char const *cp_base, *cp; NYD_ENTER; - if ((cp = ok_vlook(DEAD)) == NULL || (cp = fexpand(cp, FEXP_LOCAL)) == NULL) - cp = fexpand("~/dead.letter", FEXP_LOCAL | FEXP_SHELL); - else if (*cp != '/') { - size_t sz = strlen(cp) + 2 +1; - char *buf = ac_alloc(sz); - - snprintf(buf, sz, "~/%s", cp); - cp = fexpand(buf, FEXP_LOCAL | FEXP_SHELL); - ac_free(buf); - } - + cp = fexpand(cp_base = ok_vlook(DEAD), FEXP_LOCAL | FEXP_NSHELL); if (cp == NULL) - cp = "dead.letter"; /* XXX magic -> nail.h (POSIX thing though) */ + cp = cp_base; NYD_LEAVE; return cp; } diff --git a/lex_input.c b/lex_input.c index 571b1e6e..358037d7 100644 --- a/lex_input.c +++ b/lex_input.c @@ -853,12 +853,8 @@ a_lex_source_file(char const *file, bool_t silent_error){ /* Being a command argument file is space-trimmed */ if((ispipe = (!silent_error && (nlen = strlen(file)) > 0 && file[--nlen] == '|'))){ - char const *sh; - - if((sh = ok_vlook(SHELL)) == NULL) - sh = XSHELL; if((fip = Popen(nbuf = savestrbuf(file, nlen), "r", - sh, NULL, COMMAND_FD_NULL)) == NULL){ + ok_vlook(SHELL), NULL, COMMAND_FD_NULL)) == NULL){ if(!silent_error || (options & OPT_D_V)) n_perr(nbuf, 0); goto jleave; diff --git a/main.c b/main.c index 5219df70..93c1d334 100644 --- a/main.c +++ b/main.c @@ -296,47 +296,57 @@ _grow_cpp(char const ***cpp, size_t newsize, size_t oldcnt) } static void -_setup_vars(void) -{ - /* Before spreserve(): use our string pool instead of LibC heap */ - /* XXX further check paths? */ - char const *cp; - uid_t uid; +_setup_vars(void){ + /* XXX furtherly check paths? */ struct passwd *pwuid, *pw; + uid_t uid; + char const *cp; + bool_t doset; NYD_ENTER; /* Verify and fixate user identification */ - if (myname != NULL) + if(myname != NULL){ cp = myname; - else if ((cp = env_vlook("LOGNAME", TRU1)) == NULL) - cp = env_vlook("USER", TRU1); + doset = TRU1; + }else if((doset = ((cp = ok_vlook(LOGNAME)) == NULL))) + cp = ok_vlook(USER); group_id = getgid(); user_id = uid = getuid(); - if ((pwuid = getpwuid(uid)) == NULL) + if((pwuid = getpwuid(uid)) == NULL) n_panic(_("Cannot associate a name with uid %u"), user_id); - if (cp == NULL || *cp == '\0') { - myname = pwuid->pw_name; + if(cp == NULL || *cp == '\0'){ + cp = pwuid->pw_name; pw = NULL; - } else if ((pw = getpwnam(cp)) == NULL) { + doset = TRU1; + }else if((pw = getpwnam(cp)) == NULL){ n_alert(_("\"%s\" is not a user of this system"), cp); exit(EXIT_NOUSER); - } else { - myname = pw->pw_name; - if (pw->pw_uid != uid) + }else{ + cp = pw->pw_name; + if(pw->pw_uid != uid) options |= OPT_u_FLAG; + doset = TRU1; } - myname = savestr(myname); + + if(doset){ + pstate |= PS_STARTED; + ok_vset(LOGNAME, cp); + pstate &= ~PS_STARTED; + } + /* XXX myfullname = pw->pw_gecos[OPTIONAL!] -> GUT THAT; TODO pw_shell */ /* */ - if ((cp = env_vlook("HOME", TRU1)) == NULL) + if((cp = ok_vlook(HOME)) == NULL){ cp = (pw != NULL) ? pw->pw_dir : pwuid->pw_dir; - homedir = savestr(cp); + pstate |= PS_STARTED; + ok_vset(HOME, cp); + pstate &= ~PS_STARTED; + } - tempdir = ((cp = env_vlook("TMPDIR", TRU1)) != NULL) - ? savestr(cp) : TMPDIR_FALLBACK; + (void)ok_vlook(TMPDIR); NYD_LEAVE; } @@ -365,10 +375,10 @@ _setscreensize(int is_sighdl) /* TODO global policy; int wraps; minvals! */ if (options & OPT_INTERACTIVE) pstate |= PS_SIGWINCH_PEND; - if ((cp = env_vlook("LINES", FAL0)) != NULL && + if ((cp = ok_vlook(LINES)) != NULL && (i = strtol(cp, NULL, 10)) > 0 && i < INT_MAX) scrnheight = realscreenheight = (int)i; - if ((cp = env_vlook("COLUMNS", FAL0)) != NULL && + if ((cp = ok_vlook(COLUMNS)) != NULL && (i = strtol(cp, NULL, 10)) > 0 && i < INT_MAX) scrnwidth = (int)i; @@ -900,15 +910,11 @@ jgetopt_done: if(resfiles & a_RF_ALL){ /* *expand() returns a savestr(), but load only uses the file name for * fopen(), so it's safe to do this */ - if((resfiles & a_RF_SYSTEM) && !env_blook("NAIL_NO_SYSTEM_RC", TRU1)) + if((resfiles & a_RF_SYSTEM) && !ok_blook(NAIL_NO_SYSTEM_RC)) n_load(SYSCONFDIR "/" SYSCONFRC); - if(resfiles & a_RF_USER){ - if((cp = env_vlook("MAILRC", TRU1)) == NULL) - cp = UNCONST(MAILRC); - n_load(file_expand(cp)); - } - if(env_vlook("NAIL_EXTRA_RC", TRU1) == NULL && - (cp = ok_vlook(NAIL_EXTRA_RC)) != NULL) + if(resfiles & a_RF_USER) + n_load(file_expand(ok_vlook(MAILRC))); + if((cp = ok_vlook(NAIL_EXTRA_RC)) != NULL) n_load(file_expand(cp)); } diff --git a/popen.c b/popen.c index b2e093cd..b1ebed6e 100644 --- a/popen.c +++ b/popen.c @@ -223,8 +223,7 @@ _file_save(struct fp *fpp) default: cmd[0] = "cat"; cmd[1] = NULL; break; case FP_HOOK: - if ((cmd[0] = ok_vlook(SHELL)) == NULL) - cmd[0] = XSHELL; + cmd[0] = ok_vlook(SHELL); cmd[1] = "-c"; cmd[2] = fpp->save_cmd; } @@ -251,8 +250,7 @@ _file_load(int flags, int infd, int outfd, char const *load_cmd) case FP_XZ: cmd[0] = "xz"; cmd[1] = "-cd"; break; default: cmd[0] = "cat"; cmd[1] = NULL; break; case FP_HOOK: - if ((cmd[0] = ok_vlook(SHELL)) == NULL) - cmd[0] = XSHELL; + cmd[0] = ok_vlook(SHELL); cmd[1] = "-c"; cmd[2] = load_cmd; break; diff --git a/send.c b/send.c index c75e1aef..f3e207f7 100644 --- a/send.c +++ b/send.c @@ -236,8 +236,7 @@ _pipefile(struct mime_handler *mhp, struct mimepart const *mpp, FILE **qbuf, env_addon[7] = NULL; } - if ((sh = ok_vlook(SHELL)) == NULL) - sh = XSHELL; + sh = ok_vlook(SHELL); if (mhp->mh_flags & MIME_HDL_NEEDSTERM) { sigset_t nset; @@ -1187,12 +1186,7 @@ jgetname: } if (*f == '|') { - char const *cp; - - cp = ok_vlook(SHELL); - if (cp == NULL) - cp = XSHELL; - fp = Popen(f + 1, "w", cp, NULL, 1); + fp = Popen(f + 1, "w", ok_vlook(SHELL), NULL, 1); if (!(*ispipe = (fp != NULL))) n_perr(f, 0); } else { diff --git a/sendout.c b/sendout.c index c9b8aee6..f0e11496 100644 --- a/sendout.c +++ b/sendout.c @@ -792,8 +792,7 @@ _outof(struct name *names, FILE *fo, bool_t *senderror) fda = salloc(sizeof(int) * pipecnt); for (i = 0; i < pipecnt; ++i) fda[i] = -1; - if ((sh = ok_vlook(SHELL)) == NULL) - sh = XSHELL; + sh = ok_vlook(SHELL); } for (np = names; np != NULL; np = np->n_flink) { @@ -1145,11 +1144,12 @@ __mta_start(struct sendbundle *sbp) NYD_ENTER; if ((smtp = ok_vlook(smtp)) == NULL) { - if ((mta = ok_vlook(sendmail)) != NULL) { - if ((mta = file_expand(mta)) == NULL) - goto jstop; - } else - mta = SENDMAIL; + char const *mta_base; + + if((mta = file_expand(mta_base = ok_vlook(sendmail))) == NULL){ + n_err(_("*sendmail* variable expansion failure: \"%s\""), mta_base); + goto jstop; + } args = __mta_prepare_args(sbp->sb_to, sbp->sb_hp); if (options & OPT_DEBUG) { @@ -1252,8 +1252,7 @@ __mta_prepare_args(struct name *to, struct header *hp) i = 4 + smopts_cnt + vas_cnt + 4 + 1 + count(to) + 1; args = salloc(i * sizeof(char*)); - if ((args[0] = ok_vlook(sendmail_progname)) == NULL || *args[0] == '\0') - args[0] = SENDMAIL_PROGNAME; + args[0] = ok_vlook(sendmail_progname); if ((snda = ok_blook(sendmail_no_default_arguments))) i = 1; diff --git a/shexp.c b/shexp.c index 4caaab67..1e0c72e9 100644 --- a/shexp.c +++ b/shexp.c @@ -164,7 +164,7 @@ jleave: #else /* HAVE_WORDEXP */ struct stat sbuf; char xname[PATH_MAX +1], cmdbuf[PATH_MAX +1], /* also used for files */ - *shellp, *cp = NULL; + cp = NULL; int pivec[2], pid, l, waits; NYD_ENTER; @@ -173,9 +173,7 @@ jleave: goto jleave; } snprintf(cmdbuf, sizeof cmdbuf, "echo %s", name); - if ((shellp = ok_vlook(SHELL)) == NULL) - shellp = UNCONST(XSHELL); - pid = start_command(shellp, NULL, COMMAND_FD_NULL, pivec[1], + pid = start_command(ok_vlook(SHELL), NULL, COMMAND_FD_NULL, pivec[1], "-c", cmdbuf, NULL, NULL); if (pid < 0) { close(pivec[0]); @@ -293,8 +291,12 @@ _sh_exp_var(struct shvar_stack *shsp) } shsp->shs_len = i; - if ((cp = vok_vlook(savestrbuf(shsp->shs_dat, i))) != NULL) - shsp->shs_len = strlen(shsp->shs_dat = cp); + /* Check getenv(3) shall no internal variable exist! */ + if ((rv = vok_vlook(cp = savestrbuf(shsp->shs_dat, i))) != NULL || + (rv = getenv(cp)) != NULL) + shsp->shs_len = strlen(shsp->shs_dat = rv); + else + shsp->shs_len = 0, shsp->shs_dat = UNCONST(""); } if (c != '\0') goto jrecurse; @@ -374,12 +376,8 @@ jnext: res = prevfile; goto jislocal; case '&': - if (res[1] == '\0') { - if ((res = ok_vlook(MBOX)) == NULL) - res = UNCONST("~/mbox"); /* XXX no magics (POSIX though) */ - else if (res[0] != '&' || res[1] != '\0') - goto jnext; - } + if (res[1] == '\0') + res = ok_vlook(MBOX); break; } diff --git a/spam.c b/spam.c index 1adbf4e8..b7f5ddbf 100644 --- a/spam.c +++ b/spam.c @@ -913,16 +913,13 @@ _spam_cf_setup(struct spam_vc *vcp, bool_t useshell) { struct str s; struct spam_cf *scfp; - char const *cp; NYD2_ENTER; LCTA(3 < NELEM(scfp->cf_env)); scfp = &vcp->vc_t.cf; if ((scfp->cf_useshell = useshell)) { - if ((cp = ok_vlook(SHELL)) == NULL) - cp = XSHELL; - scfp->cf_acmd = cp; + scfp->cf_acmd = ok_vlook(SHELL); scfp->cf_a0 = "-c"; } diff --git a/termcap.c b/termcap.c index 971e9c51..3a4f5173 100644 --- a/termcap.c +++ b/termcap.c @@ -617,7 +617,7 @@ n_termcap_init(void){ if(ok_blook(termcap_disable)) pstate |= PS_TERMCAP_DISABLE; #ifdef HAVE_TERMCAP - else if((ccp = env_vlook("TERM", FAL0)) == NULL){ + else if((ccp = ok_vlook(TERM)) == NULL){ n_err(_("Environment variable $TERM is not set, using only *termcap*\n")); pstate |= PS_TERMCAP_DISABLE; }else if(!a_termcap_load(ccp)) diff --git a/urlcrecry.c b/urlcrecry.c index fa29bcf8..a1f7738e 100644 --- a/urlcrecry.c +++ b/urlcrecry.c @@ -119,9 +119,7 @@ _nrc_init(void) *nrc = NRC_NODE_ERR; NYD_ENTER; - if ((netrc_load = env_vlook("NETRC", FAL0)) == NULL) - netrc_load = UNCONST(NETRC); - if ((netrc_load = file_expand(netrc_load)) == NULL) + if ((netrc_load = file_expand(ok_vlook(NETRC))) == NULL) goto j_leave; if ((fi = Fopen(netrc_load, "r")) == NULL) { @@ -510,9 +508,7 @@ _agent_shell_lookup(struct url *urlp, char const *comm) env_addon[6] = NULL; - if ((u.cp = ok_vlook(SHELL)) == NULL) - u.cp = XSHELL; - if ((pbuf = Popen(comm, "r", u.cp, env_addon, -1)) == NULL) { + if ((pbuf = Popen(comm, "r", ok_vlook(SHELL), env_addon, -1)) == NULL) { n_err(_("*agent-shell-lookup* startup failed (`%s')\n"), comm); goto jleave; } -- 2.11.4.GIT