home *** CD-ROM | disk | FTP | other *** search
- # id.awk --- implement id in awk
- # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain
- # May 1993
-
- # output is:
- # uid=12(foo) euid=34(bar) gid=3(baz) \
- # egid=5(blat) groups=9(nine),2(two),1(one)
-
- BEGIN \
- {
- if ((getline < "/dev/user") < 0) {
- err = "id: no /dev/user support - cannot run"
- print err > "/dev/stderr"
- exit 1
- }
- close("/dev/user")
-
- uid = $1
- euid = $2
- gid = $3
- egid = $4
-
- printf("uid=%d", uid)
- pw = getpwuid(uid)
- if (pw != "") {
- split(pw, a, ":")
- printf("(%s)", a[1])
- }
-
- if (euid != uid) {
- printf(" euid=%d", euid)
- pw = getpwuid(euid)
- if (pw != "") {
- split(pw, a, ":")
- printf("(%s)", a[1])
- }
- }
-
- printf(" gid=%d", gid)
- pw = getgrgid(gid)
- if (pw != "") {
- split(pw, a, ":")
- printf("(%s)", a[1])
- }
-
- if (egid != gid) {
- printf(" egid=%d", egid)
- pw = getgrgid(egid)
- if (pw != "") {
- split(pw, a, ":")
- printf("(%s)", a[1])
- }
- }
-
- if (NF > 4) {
- printf(" groups=");
- for (i = 5; i <= NF; i++) {
- printf("%d", $i)
- pw = getgrgid($i)
- if (pw != "") {
- split(pw, a, ":")
- printf("(%s)", a[1])
- }
- if (i < NF)
- printf(",")
- }
- }
- print ""
- }
-