diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2010-07-16 13:09:56 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2010-07-16 13:09:56 +0300 |
commit | bc70de7b3302d5a81515b901cae376b8b51d2004 (patch) | |
tree | d36d6743e65697f6923b79d0ea8f9f9bf4ef7398 /awklib/eg/prog/id.awk | |
parent | b9e4a1fd4c8c8753ab8a9887bab55f03efe1e3e2 (diff) | |
download | egawk-bc70de7b3302d5a81515b901cae376b8b51d2004.tar.gz egawk-bc70de7b3302d5a81515b901cae376b8b51d2004.tar.bz2 egawk-bc70de7b3302d5a81515b901cae376b8b51d2004.zip |
Move to gawk-3.1.0.
Diffstat (limited to 'awklib/eg/prog/id.awk')
-rw-r--r-- | awklib/eg/prog/id.awk | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/awklib/eg/prog/id.awk b/awklib/eg/prog/id.awk index a983c572..af78f760 100644 --- a/awklib/eg/prog/id.awk +++ b/awklib/eg/prog/id.awk @@ -1,6 +1,10 @@ # id.awk --- implement id in awk +# +# Requires user and group library functions +# # Arnold Robbins, arnold@gnu.org, Public Domain # May 1993 +# Revised February 1996 # output is: # uid=12(foo) euid=34(bar) gid=3(baz) \ @@ -8,17 +12,10 @@ 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 + uid = PROCINFO["uid"] + euid = PROCINFO["euid"] + gid = PROCINFO["gid"] + egid = PROCINFO["egid"] printf("uid=%d", uid) pw = getpwuid(uid) @@ -52,18 +49,19 @@ BEGIN \ } } - 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(",") + for (i = 1; ("group" i) in PROCINFO; i++) { + if (i == 1) + printf(" groups=") + group = PROCINFO["group" i] + printf("%d", group) + pw = getgrgid(group) + if (pw != "") { + split(pw, a, ":") + printf("(%s)", a[1]) } + if (("group" (i+1)) in PROCINFO) + printf(",") } + print "" } |