[hackers] [sbase] curproc() isn't needed in id(1) || Rob Pilling

From: <git_AT_suckless.org>
Date: Sun, 01 Dec 2013 15:29:14 +0100

commit fd8c3b643864c2e4be9fbb67c39bd5804ddcb245
Author: Rob Pilling <robpilling_AT_gmail.com>
Date: Sun Dec 1 11:31:36 2013 +0000

    curproc() isn't needed in id(1)

diff --git a/id.c b/id.c
index ce72e70..ce618fd 100644
--- a/id.c
+++ b/id.c
_AT_@ -10,7 +10,6 @@
 #include "util.h"
 
 static void user(struct passwd *pw);
-static void curproc(void);
 
 static void
 usage(void)
_AT_@ -28,12 +27,17 @@ main(int argc, char *argv[])
                 usage();
         } ARGEND;
 
+ errno = 0;
         switch (argc) {
         case 0:
- curproc();
+ pw = getpwuid(getuid());
+ if (errno != 0)
+ eprintf("getpwuid %d:", getuid());
+ else if (!pw)
+ eprintf("getpwuid %d: no such user
", getuid());
+ user(pw);
                 break;
         case 1:
- errno = 0;
                 pw = getpwnam(argv[0]);
                 if (errno != 0)
                         eprintf("getpwnam %s:", argv[0]);
_AT_@ -73,53 +77,3 @@ user(struct passwd *pw)
         }
         putchar('
');
 }
-
-static void
-curproc(void)
-{
- struct passwd *pw;
- struct group *gr;
- uid_t uid, euid;
- gid_t gid, egid, groups[NGROUPS_MAX];
- int ngroups;
- int i;
-
- /* Print uid/euid info */
- uid = getuid();
- printf("uid=%u", uid);
- if (!(pw = getpwuid(uid)))
- eprintf("getpwuid:");
- printf("(%s)", pw->pw_name);
- if ((euid = geteuid()) != uid) {
- printf(" euid=%u", euid);
- if (!(pw = getpwuid(euid)))
- eprintf("getpwuid:");
- printf("(%s)", pw->pw_name);
- }
-
- /* Print gid/egid info */
- gid = getgid();
- printf(" gid=%u", gid);
- if (!(gr = getgrgid(gid)))
- eprintf("getgrgid:");
- printf("(%s)", gr->gr_name);
- if ((egid = getegid()) != gid) {
- printf(" egid=%u", egid);
- if (!(gr = getgrgid(egid)))
- eprintf("getgrgid:");
- printf("(%s)", gr->gr_name);
- }
-
- /* Print groups */
- ngroups = getgroups(NGROUPS_MAX, groups);
- if (ngroups < 0)
- eprintf("getgroups:");
- for (i = 0; i < ngroups; i++) {
- gid = groups[i];
- printf("%s%u", !i ? " groups=" : ",", gid);
- if (!(gr = getgrgid(gid)))
- eprintf("getgrgid:");
- printf("(%s)", gr->gr_name);
- }
- putchar('
');
-}
Received on Sun Dec 01 2013 - 15:29:14 CET

This archive was generated by hypermail 2.3.0 : Sun Dec 01 2013 - 15:36:19 CET