From: Alejandro Colomar Date: Sun, 12 May 2024 23:02:59 +0000 (+0200) Subject: lib/, src/: Use strsep(3) instead of its pattern X-Git-Tag: 4.17.0-rc1~191 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=16cb664865541162c504a6f5ef5ca4b38b5e0c9a;p=thirdparty%2Fshadow.git lib/, src/: Use strsep(3) instead of its pattern Signed-off-by: Alejandro Colomar --- diff --git a/lib/sgetspent.c b/lib/sgetspent.c index 1d4b6f105..ef86e8e20 100644 --- a/lib/sgetspent.c +++ b/lib/sgetspent.c @@ -60,23 +60,14 @@ sgetspent(const char *string) * FIELDS different fields. */ - for (cp = spwbuf, i = 0; ('\0' != *cp) && (i < FIELDS); i++) { - fields[i] = cp; - cp = strchrnul(cp, ':'); - - if ('\0' != *cp) { - *cp = '\0'; - cp++; - } - } + for (cp = spwbuf, i = 0; cp != NULL && i < FIELDS; i++) + fields[i] = strsep(&cp, ":"); if (i == (FIELDS - 1)) fields[i++] = ""; - if ( ((NULL != cp) && ('\0' != *cp)) || - ((i != FIELDS) && (i != OFIELDS)) ) { + if (cp != NULL || (i != FIELDS && i != OFIELDS)) return NULL; - } /* * Start populating the structure. The fields are all in diff --git a/lib/shadow.c b/lib/shadow.c index 9b2a17df1..cb6c726ed 100644 --- a/lib/shadow.c +++ b/lib/shadow.c @@ -83,17 +83,13 @@ static struct spwd *my_sgetspent (const char *string) * FIELDS different fields. */ - for (cp = spwbuf, i = 0; *cp && i < FIELDS; i++) { - fields[i] = cp; - cp = strchrnul(cp, ':'); - if (*cp) - *cp++ = '\0'; - } + for (cp = spwbuf, i = 0; cp != NULL && i < FIELDS; i++) + fields[i] = strsep(&cp, ":"); if (i == (FIELDS - 1)) fields[i++] = empty; - if ((cp && *cp) || (i != FIELDS && i != OFIELDS)) + if (cp != NULL || (i != FIELDS && i != OFIELDS)) return 0; /* diff --git a/src/chfn.c b/src/chfn.c index 3c182e63e..e78037d36 100644 --- a/src/chfn.c +++ b/src/chfn.c @@ -214,32 +214,27 @@ static void new_fields (void) */ static char *copy_field (char *in, char *out, char *extra) { - char *cp = NULL; - while (NULL != in) { - cp = strchr (in, ','); - if (NULL != cp) { - *cp++ = '\0'; - } + char *f; - if (strchr (in, '=') == NULL) { + f = strsep(&in, ","); + + if (strchr(f, '=') == NULL) break; - } if (NULL != extra) { if ('\0' != extra[0]) { strcat (extra, ","); } - strcat (extra, in); + strcat(extra, f); } - in = cp; } if ((NULL != in) && (NULL != out)) { strcpy (out, in); } - return cp; + return in; } /* diff --git a/src/gpasswd.c b/src/gpasswd.c index 0f00118b0..0dc3a5f20 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -172,28 +172,22 @@ static void catch_signals (int killed) */ static bool is_valid_user_list (const char *users) { - const char *username; - char *end; bool is_valid = true; /*@owned@*/char *tmpusers = xstrdup (users); - for (username = tmpusers; - (NULL != username) && ('\0' != *username); - username = end) { - end = strchr (username, ','); - if (NULL != end) { - *end = '\0'; - end++; - } + while (NULL != tmpusers && '\0' != *tmpusers) { + const char *u; + + u = strsep(&tmpusers, ","); /* * This user must exist. */ /* local, no need for xgetpwnam */ - if (getpwnam (username) == NULL) { + if (getpwnam(u) == NULL) { fprintf (stderr, _("%s: user '%s' does not exist\n"), - Prog, username); + Prog, u); is_valid = false; } } diff --git a/src/newusers.c b/src/newusers.c index ad1723e54..f2bd71c09 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -1116,13 +1116,9 @@ int main (int argc, char **argv) * values aren't that particular. */ for (cp = buf, nfields = 0; nfields < 7; nfields++) { - fields[nfields] = cp; - cp = strchr (cp, ':'); + fields[nfields] = strsep(&cp, ":"); if (cp == NULL) break; - - *cp = '\0'; - cp++; } if (nfields != 6) { fprintf (stderr, _("%s: line %d: invalid line\n"), diff --git a/src/useradd.c b/src/useradd.c index 4c233c41c..52aed3ee0 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -757,7 +757,6 @@ err_free_new: */ static int get_groups (char *list) { - char *cp; struct group *grp; int errors = 0; int ngroups = 0; @@ -777,19 +776,18 @@ static int get_groups (char *list) * values for group identifiers is permitted. */ do { + char *g; + /* * Strip off a single name from the list */ - cp = strchr (list, ','); - if (NULL != cp) { - *cp++ = '\0'; - } + g = strsep(&list, ","); /* * Names starting with digits are treated as numerical * GID values, otherwise the string is looked up as is. */ - grp = get_local_group (list); + grp = get_local_group(g); /* * There must be a match, either by GID value or by @@ -800,10 +798,9 @@ static int get_groups (char *list) if (NULL == grp) { fprintf (stderr, _("%s: group '%s' does not exist\n"), - Prog, list); + Prog, g); errors++; } - list = cp; /* * If the group doesn't exist, don't dump core... diff --git a/src/usermod.c b/src/usermod.c index 2cc35d754..f05d54334 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -214,7 +214,6 @@ extern int allow_bad_names; */ static int get_groups (char *list) { - char *cp; struct group *grp; int errors = 0; int ngroups = 0; @@ -234,20 +233,18 @@ static int get_groups (char *list) * group identifiers is permitted. */ do { + char *g; + /* * Strip off a single name from the list */ - cp = strchr (list, ','); - if (NULL != cp) { - *cp = '\0'; - cp++; - } + g = strsep(&list, ","); /* * Names starting with digits are treated as numerical GID * values, otherwise the string is looked up as is. */ - grp = prefix_getgr_nam_gid (list); + grp = prefix_getgr_nam_gid(g); /* * There must be a match, either by GID value or by @@ -255,10 +252,9 @@ static int get_groups (char *list) */ if (NULL == grp) { fprintf (stderr, _("%s: group '%s' does not exist\n"), - Prog, list); + Prog, g); errors++; } - list = cp; /* * If the group doesn't exist, don't dump core. Instead,