diff options
author | sheldonh <sheldonh@FreeBSD.org> | 2000-08-15 10:02:07 +0000 |
---|---|---|
committer | sheldonh <sheldonh@FreeBSD.org> | 2000-08-15 10:02:07 +0000 |
commit | 4e5281d00b8fa7447d70020d36660157e7e43626 (patch) | |
tree | 88d7fea3d791af620456e3cd42ff2bf1c4229af2 /contrib/awk/awklib/eg/prog/id.awk | |
parent | 946d89ae2629e07c7d4735eac8d1f5ac2263ce58 (diff) | |
download | FreeBSD-src-4e5281d00b8fa7447d70020d36660157e7e43626.zip FreeBSD-src-4e5281d00b8fa7447d70020d36660157e7e43626.tar.gz |
Update vendor branch to gawk-3.0.6.
Diffstat (limited to 'contrib/awk/awklib/eg/prog/id.awk')
-rw-r--r-- | contrib/awk/awklib/eg/prog/id.awk | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/contrib/awk/awklib/eg/prog/id.awk b/contrib/awk/awklib/eg/prog/id.awk new file mode 100644 index 0000000..a983c57 --- /dev/null +++ b/contrib/awk/awklib/eg/prog/id.awk @@ -0,0 +1,69 @@ +# id.awk --- implement id in awk +# Arnold Robbins, arnold@gnu.org, 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 "" +} |