1/*- 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 25 unchanged lines hidden (view full) --- 34#endif /* not lint */ 35 36#ifndef lint 37#if 0 38static char sccsid[] = "@(#)id.c 8.2 (Berkeley) 2/16/94"; 39#endif 40#endif /* not lint */ 41#include <sys/cdefs.h> |
42__FBSDID("$FreeBSD: head/usr.bin/id/id.c 219304 2011-03-05 12:40:35Z trasz $"); |
43 44#include <sys/param.h> 45#include <sys/mac.h> 46 47#ifdef USE_BSM_AUDIT 48#include <bsm/audit.h> 49#endif 50 --- 18 unchanged lines hidden (view full) --- 69int isgroups, iswhoami; 70 71int 72main(int argc, char *argv[]) 73{ 74 struct group *gr; 75 struct passwd *pw; 76 int Gflag, Mflag, Pflag, ch, gflag, id, nflag, pflag, rflag, uflag; |
77 int Aflag, cflag; 78 int error; |
79 const char *myname; |
80 char loginclass[MAXLOGNAME]; |
81 82 Gflag = Mflag = Pflag = gflag = nflag = pflag = rflag = uflag = 0; |
83 Aflag = cflag = 0; |
84 85 myname = strrchr(argv[0], '/'); 86 myname = (myname != NULL) ? myname + 1 : argv[0]; 87 if (strcmp(myname, "groups") == 0) { 88 isgroups = 1; 89 Gflag = nflag = 1; 90 } 91 else if (strcmp(myname, "whoami") == 0) { 92 iswhoami = 1; 93 uflag = nflag = 1; 94 } 95 96 while ((ch = getopt(argc, argv, |
97 (isgroups || iswhoami) ? "" : "APGMacgnpru")) != -1) |
98 switch(ch) { 99#ifdef USE_BSM_AUDIT 100 case 'A': 101 Aflag = 1; 102 break; 103#endif 104 case 'G': 105 Gflag = 1; 106 break; 107 case 'M': 108 Mflag = 1; 109 break; 110 case 'P': 111 Pflag = 1; 112 break; 113 case 'a': 114 break; |
115 case 'c': 116 cflag = 1; 117 break; |
118 case 'g': 119 gflag = 1; 120 break; 121 case 'n': 122 nflag = 1; 123 break; 124 case 'p': 125 pflag = 1; --- 32 unchanged lines hidden (view full) --- 158 159#ifdef USE_BSM_AUDIT 160 if (Aflag) { 161 auditid(); 162 exit(0); 163 } 164#endif 165 |
166 if (cflag) { 167 error = getloginclass(loginclass, sizeof(loginclass)); 168 if (error != 0) 169 err(1, "loginclass"); 170 (void)printf("%s\n", loginclass); 171 exit(0); 172 } 173 |
174 if (gflag) { 175 id = pw ? pw->pw_gid : rflag ? getgid() : getegid(); 176 if (nflag && (gr = getgrgid(id))) 177 (void)printf("%s\n", gr->gr_name); 178 else 179 (void)printf("%u\n", id); 180 exit(0); 181 } --- 293 unchanged lines hidden (view full) --- 475usage(void) 476{ 477 478 if (isgroups) 479 (void)fprintf(stderr, "usage: groups [user]\n"); 480 else if (iswhoami) 481 (void)fprintf(stderr, "usage: whoami\n"); 482 else |
483 (void)fprintf(stderr, "%s\n%s%s\n%s\n%s\n%s\n%s\n%s\n%s\n", |
484 "usage: id [user]", 485#ifdef USE_BSM_AUDIT 486 " id -A\n", 487#else 488 "", 489#endif 490 " id -G [-n] [user]", 491 " id -M", 492 " id -P [user]", |
493 " id -c", |
494 " id -g [-nr] [user]", 495 " id -p [user]", 496 " id -u [-nr] [user]"); 497 exit(1); 498} |