]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/: Call strsep(3) instead of open-coding it
authorAlejandro Colomar <alx@kernel.org>
Mon, 15 Jan 2024 15:28:11 +0000 (16:28 +0100)
committerSerge Hallyn <serge@hallyn.com>
Thu, 14 Mar 2024 22:11:36 +0000 (17:11 -0500)
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/gshadow.c
lib/sgetgrent.c
lib/sgetpwent.c
lib/subordinateio.c

index 7b6f3520435fd7cc1ba7b51517e49d1bcfb5376e..3c71bea4cad9f6caed7621ebc86934f408fa64af 100644 (file)
@@ -40,15 +40,10 @@ static /*@null@*/char **build_list (char *s, char **list[], size_t * nlist)
                size = (nelem + 1) * sizeof (ptr);
                ptr = REALLOC(*list, size, char *);
                if (NULL != ptr) {
-                       ptr[nelem] = s;
+                       ptr[nelem] = strsep(&s, ",");
                        nelem++;
                        *list = ptr;
                        *nlist = nelem;
-                       s = strchr (s, ',');
-                       if (NULL != s) {
-                               *s = '\0';
-                               s++;
-                       }
                }
        }
        size = (nelem + 1) * sizeof (ptr);
@@ -109,13 +104,8 @@ void endsgent (void)
         * all 4 of them and save the starting addresses in fields[].
         */
 
-       for (cp = sgrbuf, i = 0; (i < FIELDS) && (NULL != cp); i++) {
-               fields[i] = cp;
-               cp = strchr (cp, ':');
-               if (NULL != cp) {
-                       *cp++ = '\0';
-               }
-       }
+       for (cp = sgrbuf, i = 0; (i < FIELDS) && (NULL != cp); i++)
+               fields[i] = strsep(&cp, ":");
 
        /*
         * If there was an extra field somehow, or perhaps not enough,
index 24764ecdd8886076b4d28670ebb37b04a2df9de5..6cde15c3fb52025d23d5ee67c19509a1fd9329db 100644 (file)
@@ -52,11 +52,7 @@ list(char *s)
                }
                if (!s || s[0] == '\0')
                        break;
-               members[i++] = s;
-               s = strchrnul(s, ',');
-               if ('\0' != *s) {
-                       *s++ = '\0';
-               }
+               members[i++] = strsep(&s, ",");
        }
        members[i] = NULL;
        return members;
@@ -90,14 +86,9 @@ struct group *sgetgrent (const char *buf)
                *cp = '\0';
        }
 
-       for (cp = grpbuf, i = 0; (i < NFIELDS) && (NULL != cp); i++) {
-               grpfields[i] = cp;
-               cp = strchr (cp, ':');
-               if (NULL != cp) {
-                       *cp = '\0';
-                       cp++;
-               }
-       }
+       for (cp = grpbuf, i = 0; (i < NFIELDS) && (NULL != cp); i++)
+               grpfields[i] = strsep(&cp, ":");
+
        if (i < (NFIELDS - 1) || *grpfields[2] == '\0' || cp != NULL) {
                return NULL;
        }
index d60a7fe1919f172fe7e7b1f62293a26463855373..75c91770b080eaca356bfd36e7c691d44d88733c 100644 (file)
@@ -61,17 +61,8 @@ sgetpwent(const char *buf)
         * field.  The fields are converted into NUL terminated strings.
         */
 
-       for (cp = pwdbuf, i = 0; (i < NFIELDS) && (NULL != cp); i++) {
-               fields[i] = cp;
-               cp = strchrnul(cp, ':');
-
-               if ('\0' != *cp) {
-                       *cp = '\0';
-                       cp++;
-               } else {
-                       cp = NULL;
-               }
-       }
+       for (cp = pwdbuf, i = 0; (i < NFIELDS) && (NULL != cp); i++)
+               fields[i] = strsep(&cp, ":");
 
        /* something at the end, columns over shot */
        if ( cp != NULL ) {
index 85bc0adc58e0e1a7f2507a8e7427086d960fc705..b1080f822ca5a8dcc8343a28e21c6450512962cd 100644 (file)
@@ -97,17 +97,8 @@ subordinate_parse(const char *line)
         * field.  The fields are converted into NUL terminated strings.
         */
 
-       for (cp = rangebuf, i = 0; (i < SUBID_NFIELDS) && (NULL != cp); i++) {
-               fields[i] = cp;
-               cp = strchrnul(cp, ':');
-
-               if ('\0' != *cp) {
-                       *cp = '\0';
-                       cp++;
-               } else {
-                       cp = NULL;
-               }
-       }
+       for (cp = rangebuf, i = 0; (i < SUBID_NFIELDS) && (NULL != cp); i++)
+               fields[i] = strsep(&cp, ":");
 
        /*
         * There must be exactly SUBID_NFIELDS colon separated fields or