From: Alejandro Colomar Date: Fri, 6 Dec 2024 00:59:23 +0000 (+0100) Subject: lib/, src/: Use !streq() instead of its pattern X-Git-Tag: 4.17.0~5 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=c39305569bb47dbe15be1bd6686a96f06bdde483;p=thirdparty%2Fshadow.git lib/, src/: Use !streq() instead of its pattern Except for the added (and sorted) includes, the removal of redundant parentheses, and a few non-string cases that I've left out of the change, this patch can be approximated with the following semantic patch: $ cat ~/tmp/spatch/strneq.sp @@ expression s; @@ - '\0' != *s + !streq(s, "") @@ expression s; @@ - '\0' != s[0] + !streq(s, "") @@ expression s; @@ - *s != '\0' + !streq(s, "") @@ expression s; @@ - s[0] != '\0' + !streq(s, "") $ find contrib/ lib* src/ -type f \ | xargs spatch --in-place --sp-file ~/tmp/spatch/strneq.sp; Signed-off-by: Alejandro Colomar --- diff --git a/lib/chkname.c b/lib/chkname.c index 8bde7a2d9..98f791706 100644 --- a/lib/chkname.c +++ b/lib/chkname.c @@ -33,6 +33,7 @@ #include "defines.h" #include "chkname.h" +#include "string/strcmp/streq.h" int allow_bad_names = false; @@ -85,7 +86,7 @@ is_valid_name(const char *name) numeric = isdigit(*name); - while ('\0' != *++name) { + while (!streq(++name, "")) { if (!((*name >= 'a' && *name <= 'z') || (*name >= 'A' && *name <= 'Z') || (*name >= '0' && *name <= '9') || diff --git a/lib/fields.c b/lib/fields.c index b4aa868c8..ada6726e7 100644 --- a/lib/fields.c +++ b/lib/fields.c @@ -18,6 +18,7 @@ #include "prototypes.h" #include "string/strchr/stpspn.h" #include "string/strchr/strrspn.h" +#include "string/strcmp/streq.h" #include "string/strtok/stpsep.h" @@ -47,7 +48,7 @@ int valid_field (const char *field, const char *illegal) } /* Search if there are non-printable or control characters */ - for (cp = field; '\0' != *cp; cp++) { + for (cp = field; !streq(cp, ""); cp++) { unsigned char c = *cp; if (!isprint (c)) { err = 1; @@ -86,7 +87,7 @@ change_field(char *buf, size_t maxsize, const char *prompt) if (stpsep(newf, "\n") == NULL) return; - if ('\0' != newf[0]) { + if (!streq(newf, "")) { /* * Remove leading and trailing whitespace. This also * makes it possible to change the field to empty, by diff --git a/lib/fputsx.c b/lib/fputsx.c index a43c2ac13..96aea2789 100644 --- a/lib/fputsx.c +++ b/lib/fputsx.c @@ -14,8 +14,7 @@ #include "defines.h" #include "prototypes.h" - -#ident "$Id$" +#include "string/strcmp/streq.h" /*@null@*/char * @@ -48,7 +47,7 @@ int fputsx (const char *s, FILE * stream) { int i; - for (i = 0; '\0' != *s; i++, s++) { + for (i = 0; !streq(s, ""); i++, s++) { if (putc (*s, stream) == EOF) { return EOF; } diff --git a/lib/getdate.y b/lib/getdate.y index 9a7e1d36f..a6f9bc674 100644 --- a/lib/getdate.y +++ b/lib/getdate.y @@ -627,7 +627,7 @@ static int LookupWord (char *buff) bool abbrev; /* Make it lowercase. */ - for (p = buff; '\0' != *p; p++) + for (p = buff; !streq(p, ""); p++) if (isupper (*p)) *p = tolower (*p); @@ -720,7 +720,7 @@ static int LookupWord (char *buff) } /* Drop out any periods and try the timezone table again. */ - for (i = 0, p = q = buff; '\0' != *q; q++) + for (i = 0, p = q = buff; !streq(q, ""); q++) if (*q != '.') *p++ = *q; else diff --git a/lib/gshadow.c b/lib/gshadow.c index 16c432b65..e66704a2f 100644 --- a/lib/gshadow.c +++ b/lib/gshadow.c @@ -42,7 +42,7 @@ build_list(char *s) l = XMALLOC(strchrcnt(s, ',') + 2, char *); - for (i = 0; s != NULL && *s != '\0'; i++) + for (i = 0; s != NULL && !streq(s, ""); i++) l[i] = strsep(&s, ","); l[i] = NULL; diff --git a/lib/limits.c b/lib/limits.c index e1c3b1797..9fb1a1ffb 100644 --- a/lib/limits.c +++ b/lib/limits.c @@ -203,7 +203,7 @@ static int do_user_limits (const char *buf, const char *name) pp = "A- C- D- F- I- L- M- N- O- P- R- S- T- U-"; } - while ('\0' != *pp) { + while (!streq(pp, "")) { switch (*pp++) { case 'a': case 'A': diff --git a/lib/myname.c b/lib/myname.c index 1b0261791..fab5d6b52 100644 --- a/lib/myname.c +++ b/lib/myname.c @@ -15,9 +15,13 @@ #ident "$Id$" -#include "defines.h" #include + +#include "defines.h" #include "prototypes.h" +#include "string/strcmp/streq.h" + + /*@null@*/ /*@only@*/struct passwd *get_my_pwent (void) { struct passwd *pw; @@ -34,7 +38,7 @@ * XXX - when running from su, will return the current user (not * the original user, like getlogin() does). Does this matter? */ - if ((NULL != cp) && ('\0' != *cp)) { + if ((NULL != cp) && !streq(cp, "")) { pw = xgetpwnam (cp); if ((NULL != pw) && (pw->pw_uid == ruid)) { return pw; diff --git a/lib/nss.c b/lib/nss.c index 9373bba33..f1cf1351b 100644 --- a/lib/nss.c +++ b/lib/nss.c @@ -87,7 +87,7 @@ nss_init(const char *nsswitch_path) { continue; p = &line[6]; p = stpspn(p, " \t\n"); - if (*p != '\0') + if (!streq(p, "")) break; p = NULL; } diff --git a/lib/obscure.c b/lib/obscure.c index 66b2361c3..d508200f4 100644 --- a/lib/obscure.c +++ b/lib/obscure.c @@ -82,7 +82,7 @@ static char *str_lower (/*@returned@*/char *string) { char *cp; - for (cp = string; '\0' != *cp; cp++) { + for (cp = string; !streq(cp, ""); cp++) { *cp = tolower (*cp); } return string; diff --git a/lib/port.c b/lib/port.c index 4f5d06066..b19ecd6be 100644 --- a/lib/port.c +++ b/lib/port.c @@ -39,7 +39,7 @@ static int portcmp (const char *pattern, const char *port) { const char *orig = port; - while (('\0' != *pattern) && (*pattern == *port)) { + while (!streq(pattern, "") && (*pattern == *port)) { pattern++; port++; } @@ -215,7 +215,7 @@ next: * Get the next comma separated entry */ - for (j = 0; ('\0' != *cp) && (j < PORT_TIMES); j++) { + for (j = 0; !streq(cp, "") && (j < PORT_TIMES); j++) { /* * Start off with no days of the week diff --git a/lib/strtoday.c b/lib/strtoday.c index 056fa931e..01f2e9b7e 100644 --- a/lib/strtoday.c +++ b/lib/strtoday.c @@ -54,7 +54,7 @@ long strtoday (const char *str) s++; } s = stpspn(s, " "); - while (isnum && ('\0' != *s)) { + while (isnum && !streq(s, "")) { if (!isdigit (*s)) { isnum = false; } diff --git a/lib/ttytype.c b/lib/ttytype.c index fbe71ee00..740510421 100644 --- a/lib/ttytype.c +++ b/lib/ttytype.c @@ -58,7 +58,7 @@ void ttytype (const char *line) break; } } - if ((feof (fp) == 0) && (ferror (fp) == 0) && (type[0] != '\0')) { + if ((feof(fp) == 0) && (ferror(fp) == 0) && !streq(type, "")) { addenv ("TERM", type); } diff --git a/lib/utmp.c b/lib/utmp.c index 2b59dc6d9..6dc1f5df2 100644 --- a/lib/utmp.c +++ b/lib/utmp.c @@ -254,7 +254,7 @@ prepare_utmp(const char *name, const char *line, const char *host, - if (NULL != host && '\0' != host[0]) + if (NULL != host && !streq(host, "")) hostname = xstrdup(host); #if defined(HAVE_STRUCT_UTMPX_UT_HOST) else if (NULL != ut && '\0' != ut->ut_host[0]) diff --git a/src/chfn.c b/src/chfn.c index 2bb246382..4c96fba28 100644 --- a/src/chfn.c +++ b/src/chfn.c @@ -225,7 +225,7 @@ static char *copy_field (char *in, char *out, char *extra) break; if (NULL != extra) { - if ('\0' != extra[0]) { + if (!streq(extra, "")) { strcat (extra, ","); } @@ -543,7 +543,7 @@ static void get_old_fields (const char *gecos) * Anything left over is "slop". */ if ((NULL != cp) && !oflg) { - if ('\0' != slop[0]) { + if (!streq(slop, "")) { strcat (slop, ","); } @@ -702,7 +702,7 @@ int main (int argc, char **argv) } SNPRINTF(new_gecos, "%s,%s,%s,%s%s%s", fullnm, roomno, workph, homeph, - ('\0' != slop[0]) ? "," : "", slop); + (!streq(slop, "")) ? "," : "", slop); /* Rewrite the user's gecos in the passwd file */ update_gecos (user, new_gecos); diff --git a/src/gpasswd.c b/src/gpasswd.c index d129aca21..560b0ea79 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -179,7 +179,7 @@ static bool is_valid_user_list (const char *users) tmpusers = dup = xstrdup(users); - while (NULL != tmpusers && '\0' != *tmpusers) { + while (NULL != tmpusers && !streq(tmpusers, "")) { const char *u; u = strsep(&tmpusers, ","); diff --git a/src/login.c b/src/login.c index 9cd1688c9..eafd498dd 100644 --- a/src/login.c +++ b/src/login.c @@ -422,7 +422,7 @@ static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *use const char *failent_user = "UNKNOWN"; bool log_unkfail_enab = getdef_bool("LOG_UNKFAIL_ENAB"); - if ((NULL != user) && ('\0' != user[0])) { + if ((NULL != user) && !streq(user, "")) { if ( log_unkfail_enab || (getpwnam (user) != NULL)) { failent_user = user; @@ -589,13 +589,13 @@ int main (int argc, char **argv) if (hflg) { cp = hostname; - } else if ((host != NULL) && (host[0] != '\0')) { + } else if ((host != NULL) && !streq(host, "")) { cp = host; } else { cp = ""; } - if ('\0' != *cp) { + if (!streq(cp, "")) { SNPRINTF(fromhost, " on '%.100s' from '%.200s'", tty, cp); } else { SNPRINTF(fromhost, " on '%.100s'", tty); @@ -925,7 +925,7 @@ int main (int argc, char **argv) failed = true; } if ( !failed - && !login_access (username, ('\0' != *hostname) ? hostname : tty)) { + && !login_access(username, (!streq(hostname, "")) ? hostname : tty)) { SYSLOG ((LOG_WARN, "LOGIN '%s' REFUSED %s", username, fromhost)); failed = true; diff --git a/src/login_nopam.c b/src/login_nopam.c index fd058a656..65e8c06d9 100644 --- a/src/login_nopam.c +++ b/src/login_nopam.c @@ -320,7 +320,7 @@ static bool from_match (const char *tok, const char *string) if (strchr (string, '.') == NULL) { return true; } - } else if ( (tok[0] != '\0' && tok[(tok_len = strlen (tok)) - 1] == '.') /* network */ + } else if ( (!streq(tok, "") && tok[(tok_len = strlen(tok)) - 1] == '.') /* network */ && (strncmp (tok, resolve_hostname (string), tok_len) == 0)) { return true; } diff --git a/src/newgrp.c b/src/newgrp.c index 17f961126..f73508663 100644 --- a/src/newgrp.c +++ b/src/newgrp.c @@ -150,7 +150,7 @@ static void check_perms (const struct group *grp, spw_free (spwd); } - if (streq(pwd->pw_passwd, "") && (grp->gr_passwd[0] != '\0')) { + if (streq(pwd->pw_passwd, "") && !streq(grp->gr_passwd, "")) { needspasswd = true; } @@ -786,7 +786,7 @@ int main (int argc, char **argv) cp = getenv ("SHELL"); if (!initflag && (NULL != cp)) { prog = cp; - } else if ((NULL != pwd->pw_shell) && ('\0' != pwd->pw_shell[0])) { + } else if ((NULL != pwd->pw_shell) && !streq(pwd->pw_shell, "")) { prog = pwd->pw_shell; } else { prog = SHELL; diff --git a/src/newusers.c b/src/newusers.c index 32d224d20..5e78dd976 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -282,7 +282,7 @@ static int add_group (const char *name, const char *gid, gid_t *ngid, uid_t uid) /* * Now I have all of the fields required to create the new group. */ - if (('\0' != gid[0]) && (!isdigit (gid[0]))) { + if (!streq(gid, "") && (!isdigit(gid[0]))) { grent.gr_name = xstrdup (gid); } else { grent.gr_name = xstrdup (name); @@ -355,7 +355,7 @@ static int get_user_id (const char *uid, uid_t *nuid) { return -1; } } else { - if ('\0' != uid[0]) { + if (!streq(uid, "")) { const struct passwd *pwd; /* local, no need for xgetpwnam */ pwd = getpwnam (uid); @@ -1222,19 +1222,19 @@ int main (int argc, char **argv) Prog, line); fail_exit (EXIT_FAILURE); } - if ('\0' != fields[4][0]) { + if (!streq(fields[4], "")) { newpw.pw_gecos = fields[4]; } - if ('\0' != fields[5][0]) { + if (!streq(fields[5], "")) { newpw.pw_dir = fields[5]; } - if ('\0' != fields[6][0]) { + if (!streq(fields[6], "")) { newpw.pw_shell = fields[6]; } - if ( ('\0' != fields[5][0]) + if ( !streq(fields[5], "") && (access (newpw.pw_dir, F_OK) != 0)) { /* FIXME: should check for directory */ mode_t mode = getdef_num ("HOME_MODE", diff --git a/src/passwd.c b/src/passwd.c index be038172c..cc79960a5 100644 --- a/src/passwd.c +++ b/src/passwd.c @@ -194,7 +194,7 @@ static int new_password (const struct passwd *pw) * password. */ - if (!amroot && ('\0' != crypt_passwd[0])) { + if (!amroot && !streq(crypt_passwd, "")) { clear = agetpass (_("Old password: ")); if (NULL == clear) { return -1; diff --git a/src/pwck.c b/src/pwck.c index 271a2c21b..ae7ddaddf 100644 --- a/src/pwck.c +++ b/src/pwck.c @@ -533,7 +533,7 @@ static void check_pw_file (int *errors, bool *changed) * Make sure the login shell is executable */ if ( !quiet - && ('\0' != pwd->pw_shell[0]) + && !streq(pwd->pw_shell, "") && (access (pwd->pw_shell, F_OK) != 0)) { /* diff --git a/src/su.c b/src/su.c index 653b58beb..b90b6f400 100644 --- a/src/su.c +++ b/src/su.c @@ -1087,8 +1087,8 @@ int main (int argc, char **argv) sulog (caller_tty, true, caller_name, name); /* save SU information */ if (getdef_bool ("SYSLOG_SU_ENAB")) { SYSLOG ((LOG_INFO, "+ %s %s:%s", caller_tty, - ('\0' != caller_name[0]) ? caller_name : "???", - ('\0' != name[0]) ? name : "???")); + (!streq(caller_name, "")) ? caller_name : "???", + (!streq(name, "")) ? name : "???")); } #ifdef USE_PAM @@ -1143,7 +1143,7 @@ int main (int argc, char **argv) AUDIT_USER_ROLE_CHANGE, NULL, /* Prog. name */ "su", - ('\0' != caller_name[0]) ? caller_name : "???", + (!streq(caller_name, "")) ? caller_name : "???", AUDIT_NO_ID, "localhost", NULL, /* addr */ diff --git a/src/useradd.c b/src/useradd.c index a9944eef6..7623dabd4 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -177,7 +177,7 @@ static bool Uflg = false; /* create a group having the same name as the user */ #ifdef WITH_SELINUX -#define Zflg ('\0' != *user_selinux) +#define Zflg (!streq(user_selinux, "")) #endif /* WITH_SELINUX */ static bool home_added = false; @@ -1268,7 +1268,7 @@ static void process_flags (int argc, char **argv) Dflg = true; break; case 'e': - if ('\0' != *optarg) { + if (!streq(optarg, "")) { user_expire = strtoday (optarg); if (user_expire < -1) { fprintf (stderr, @@ -1403,7 +1403,7 @@ static void process_flags (int argc, char **argv) break; case 's': if ( ( !VALID (optarg) ) - || ( ('\0' != optarg[0]) + || ( !streq(optarg, "") && ('/' != optarg[0]) && ('*' != optarg[0]) )) { fprintf (stderr, @@ -1411,7 +1411,7 @@ static void process_flags (int argc, char **argv) Prog, optarg); exit (E_BAD_ARG); } - if ( '\0' != optarg[0] + if (!streq(optarg, "") && '*' != optarg[0] && !streq(optarg, "/sbin/nologin") && ( stat(optarg, &st) != 0 diff --git a/src/usermod.c b/src/usermod.c index 69a19ff27..24c5a4d23 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -1154,7 +1154,7 @@ process_flags(int argc, char **argv) break; case 's': if ( ( !VALID (optarg) ) - || ( ('\0' != optarg[0]) + || ( !streq(optarg, "") && ('/' != optarg[0]) && ('*' != optarg[0]) )) { fprintf (stderr, @@ -1162,7 +1162,7 @@ process_flags(int argc, char **argv) Prog, optarg); exit (E_BAD_ARG); } - if ( '\0' != optarg[0] + if (!streq(optarg, "") && '*' != optarg[0] && !streq(optarg, "/sbin/nologin") && ( stat(optarg, &st) != 0 @@ -2334,7 +2334,7 @@ int main (int argc, char **argv) #ifdef WITH_SELINUX if (Zflg) { - if ('\0' != *user_selinux) { + if (!streq(user_selinux, "")) { if (set_seuser (user_name, user_selinux, user_selinux_range) != 0) { fprintf (stderr, _("%s: warning: the user name %s to %s SELinux user mapping failed.\n"),