1 #include <unistd.h>
2 #include <sys/types.h>
3 #include <pwd.h>
4 #include "strerr.h"
5 #include "fmt.h"
6 #include "buffer.h"
7 #include "exit.h"
8 
9 #define FATAL "getgid: fatal: "
10 
11 static char strnum[FMT_ULONG];
12 
13 const char *account;
14 struct passwd *pw;
15 
main(int argc,const char * const * argv)16 int main(int argc,const char *const *argv) {
17   account = *++argv;
18   if (account) {
19     pw = getpwnam(account);
20     if (!pw)
21       strerr_die3x(111,FATAL,"unknown account ",account);
22 
23     strnum[fmt_ulong(strnum,pw->pw_uid)] = 0;
24   }
25   else {
26     strnum[fmt_ulong(strnum,getgid())] = 0;
27   }
28   if (buffer_puts(buffer_1,strnum) == -1)
29     strerr_die2sys(111,FATAL,"cannot write uid: ");
30   if (buffer_putflush(buffer_1,"\n",1) == -1)
31     strerr_die2sys(111,FATAL,"cannot write uid: ");
32   _exit(0);
33 }
34