Author: bdrewery
Date: Tue Dec  6 23:43:04 2016
New Revision: 309659
URL: https://svnweb.freebsd.org/changeset/base/309659

Log:
  Support spaces in group names.
  
  MFC after:    2 weeks
  Sponsored by: Dell EMC Isilon

Modified:
  head/lib/libc/tests/nss/getgr_test.c

Modified: head/lib/libc/tests/nss/getgr_test.c
==============================================================================
--- head/lib/libc/tests/nss/getgr_test.c        Tue Dec  6 22:52:45 2016        
(r309658)
+++ head/lib/libc/tests/nss/getgr_test.c        Tue Dec  6 23:43:04 2016        
(r309659)
@@ -176,7 +176,7 @@ sdump_group(struct group *grp, char *buf
        char **cp;
        int written;
 
-       written = snprintf(buffer, buflen, "%s %s %d",
+       written = snprintf(buffer, buflen, "%s:%s:%d:",
                grp->gr_name, grp->gr_passwd, grp->gr_gid);
        buffer += written;
        if (written > buflen)
@@ -186,7 +186,8 @@ sdump_group(struct group *grp, char *buf
        if (grp->gr_mem != NULL) {
                if (*(grp->gr_mem) != '\0') {
                        for (cp = grp->gr_mem; *cp; ++cp) {
-                               written = snprintf(buffer, buflen, " %s",*cp);
+                               written = snprintf(buffer, buflen, "%s%s",
+                                   cp == grp->gr_mem ? "" : ",", *cp);
                                buffer += written;
                                if (written > buflen)
                                        return;
@@ -196,9 +197,9 @@ sdump_group(struct group *grp, char *buf
                                        return;
                        }
                } else
-                       snprintf(buffer, buflen, " nomem");
+                       snprintf(buffer, buflen, "nomem");
        } else
-               snprintf(buffer, buflen, " (null)");
+               snprintf(buffer, buflen, "(null)");
 }
 
 static int
@@ -206,6 +207,7 @@ group_read_snapshot_func(struct group *g
 {
        StringList *sl;
        char *s, *ps, *ts;
+       const char *sep;
        int i;
 
        printf("1 line read from snapshot:\n%s\n", line);
@@ -213,8 +215,9 @@ group_read_snapshot_func(struct group *g
        i = 0;
        sl = NULL;
        ps = line;
+       sep = ":";
        memset(grp, 0, sizeof(struct group));
-       while ((s = strsep(&ps, " ")) != NULL) {
+       while ((s = strsep(&ps, sep)) != NULL) {
                switch (i) {
                case 0:
                        grp->gr_name = strdup(s);
@@ -235,6 +238,8 @@ group_read_snapshot_func(struct group *g
                                grp->gr_passwd = NULL;
                                return (-1);
                        }
+                       /* Change to parsing groups. */
+                       sep = ",";
                        break;
 
                default:
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to