id: do print the AFS-specific nameless group ID (called a PAG)
authorJim Meyering <meyering@redhat.com>
Wed, 23 Apr 2008 09:45:38 +0000 (11:45 +0200)
committerJim Meyering <meyering@redhat.com>
Wed, 23 Apr 2008 13:29:11 +0000 (15:29 +0200)
In 6.11, we mistakenly suppressed the printing of certain group IDs,
thinking they were useless AFS-specific artifacts.
This change reverts that, so now they are printed once again.
http://thread.gmane.org/gmane.org.fsf.announce/867/focus=13345
This also reverts the bug-fix that applied solely to the new code
used to avoid printing those IDs

Revert "id bug fix: don't point to potentially clobbered static storage"
This reverts commit f7d1c59c224f81a8bab5fa2afcaf815988f50467.
Revert "Work around AFS bug: id and groups would print invalid group number."
This reverts commit b7a836c0a3524cda8ef79c30c3fe7ea759ae4656.
Revert "* src/c99-to-c89.diff: Accommodate a C99-ism in id.c."
This reverts commit d44893c5dba4150b4ded9cf6aad316c1ef620c9f.

NEWS
src/c99-to-c89.diff
src/groups.c
src/id.c

diff --git a/NEWS b/NEWS
index 04893c6..5b4676d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,14 @@
 GNU coreutils NEWS                                    -*- outline -*-
 
+* Noteworthy changes in release 6.12 (????-??-??) [stable]
+
+** Bug fixes
+
+  id and groups once again print the AFS-specific nameless group-ID (PAG).
+  Printing of such large-numbered, kernel-only (not in /etc/group) group-IDs
+  was suppressed in 6.11 due to ignorance that they are useful.
+
+
 * Noteworthy changes in release 6.11 (2008-04-19) [stable]
 
 ** Bug fixes
index 8158019..b0594fd 100644 (file)
@@ -1,22 +1,3 @@
---- src/id.c   2008-03-04 18:50:55.000000000 +0100
-+++ src/id.c   2008-03-04 19:32:24.000000000 +0100
-@@ -196,6 +196,7 @@ of a different user"));
-     error (EXIT_FAILURE, 0,
-          _("cannot print only names or real IDs in default format"));
-
-+  {
-   char const *user_name;
-   if (argc - optind == 1)
-     {
-@@ -239,6 +240,7 @@ of a different user"));
-     {
-       print_full_info (user_name);
-     }
-+  }
-   putchar ('\n');
-
-   exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
-diff -upr src/remove.c src/remove.c
 --- src/remove.c       2007-07-23 12:56:20.000000000 +0200
 +++ src/remove.c       2007-07-23 13:03:12.000000000 +0200
 @@ -264,9 +264,10 @@ pop_dir (Dirstack_state *ds)
index c8e617b..baac7b9 100644 (file)
@@ -102,7 +102,7 @@ main (int argc, char **argv)
       egid = getegid ();
       rgid = getgid ();
 
-      if (!print_group_list (getlogin (), ruid, rgid, egid, true))
+      if (!print_group_list (NULL, ruid, rgid, egid, true))
         ok = false;
       putchar ('\n');
     }
index a178714..e4eda40 100644 (file)
--- a/src/id.c
+++ b/src/id.c
@@ -196,22 +196,17 @@ of a different user"));
     error (EXIT_FAILURE, 0,
           _("cannot print only names or real IDs in default format"));
 
-  char const *user_name;
   if (argc - optind == 1)
     {
-      struct passwd const *pwd = getpwnam (argv[optind]);
+      struct passwd *pwd = getpwnam (argv[optind]);
       if (pwd == NULL)
        error (EXIT_FAILURE, 0, _("%s: No such user"), argv[optind]);
-      user_name = argv[optind];
       ruid = euid = pwd->pw_uid;
       rgid = egid = pwd->pw_gid;
     }
   else
     {
-      struct passwd const *pwd;
       euid = geteuid ();
-      pwd = getpwuid (euid);
-      user_name = pwd ? xstrdup (pwd->pw_name) : NULL;
       ruid = getuid ();
       egid = getegid ();
       rgid = getgid ();
@@ -228,7 +223,7 @@ of a different user"));
     }
   else if (just_group_list)
     {
-      if (!print_group_list (user_name, ruid, rgid, egid, use_name))
+      if (!print_group_list (argv[optind], ruid, rgid, egid, use_name))
        ok = false;
     }
   else if (just_context)
@@ -237,7 +232,7 @@ of a different user"));
     }
   else
     {
-      print_full_info (user_name);
+      print_full_info (argv[optind]);
     }
   putchar ('\n');