Subject: Re: bin/8706: inconsistent formatting in id output
To: None <nemo@red-bean.com>
From: Chris G. Demetriou <cgd@netbsd.org>
List: netbsd-bugs
Date: 10/29/1999 13:54:27
This issue has already been fixed in -current and on the 1.4 branch
(and will be fixed in 1.4.2, when that is released).

Based on the log of changes that's gone into 1.4.2, I believe that the
patch to fix it is enclosed below.  Please try that patch, then reply
to this message (being sure to cc: gnats-bugs@netbsd.org so the PR
will get a copy of your reply) indicating whether or not it solves the
problem for you.

Index: usr.bin/id/id.c
diff -c usr.bin/id/id.c:1.14 usr.bin/id/id.c:1.15
*** usr.bin/id/id.c:1.14	Sat Dec 19 08:55:21 1998
--- usr.bin/id/id.c	Tue Aug 17 10:37:32 1999
***************
*** 239,246 ****
  	}
  	if ((ngroups = getgroups(maxgroups, groups)) != NULL) {
  		for (fmt = " groups=%u", lastid = -1, cnt = 0; cnt < ngroups;
! 		    fmt = ", %u", lastid = id) {
! 			id = groups[cnt++];
  			if (lastid == id)
  				continue;
  			(void)printf(fmt, id);
--- 239,246 ----
  	}
  	if ((ngroups = getgroups(maxgroups, groups)) != NULL) {
  		for (fmt = " groups=%u", lastid = -1, cnt = 0; cnt < ngroups;
! 		    fmt = ",%u", lastid = id, cnt++) {
! 			id = groups[cnt];
  			if (lastid == id)
  				continue;
  			(void)printf(fmt, id);
***************
*** 266,280 ****
  		(void)printf("(%s)", gr->gr_name);
  	ngroups = maxgroups + 1;
  	(void) getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups);
! 	fmt = " groups=%u";
! 	for (lastid = -1, cnt = 0; cnt < ngroups; ++cnt) {
! 		if (lastid == (id = groups[cnt]))
  			continue;
  		(void)printf(fmt, id);
- 		fmt = " %u";
  		if ((gr = getgrgid(id)) != NULL)
  			(void)printf("(%s)", gr->gr_name);
- 		lastid = id;
  	}
  	(void)printf("\n");
  }
--- 266,279 ----
  		(void)printf("(%s)", gr->gr_name);
  	ngroups = maxgroups + 1;
  	(void) getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups);
! 	for (fmt = " groups=%u", lastid = -1, cnt = 0; cnt < ngroups;
! 	    fmt=",%u", lastid = id, cnt++) {
! 		id = groups[cnt];
! 		if (lastid == id)
  			continue;
  		(void)printf(fmt, id);
  		if ((gr = getgrgid(id)) != NULL)
  			(void)printf("(%s)", gr->gr_name);
  	}
  	(void)printf("\n");
  }

-- 
Chris Demetriou - cgd@netbsd.org - http://www.netbsd.org/People/Pages/cgd.html
Disclaimer: Not speaking for NetBSD, just expressing my own opinion.