~vcs-imports/gawk/master

« back to all changes in this revision

Viewing changes to awklib/eg/prog/id.awk

  • Committer: Arnold D. Robbins
  • Date: 2010-07-16 10:09:56 UTC
  • Revision ID: git-v1:bc70de7b3302d5a81515b901cae376b8b51d2004
Tags: gawk-3.1.0
Move to gawk-3.1.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# id.awk --- implement id in awk
 
2
#
 
3
# Requires user and group library functions
 
4
#
2
5
# Arnold Robbins, arnold@gnu.org, Public Domain
3
6
# May 1993
 
7
# Revised February 1996
4
8
 
5
9
# output is:
6
10
# uid=12(foo) euid=34(bar) gid=3(baz) \
8
12
 
9
13
BEGIN    \
10
14
{
11
 
    if ((getline < "/dev/user") < 0) {
12
 
        err = "id: no /dev/user support - cannot run"
13
 
        print err > "/dev/stderr"
14
 
        exit 1
15
 
    }
16
 
    close("/dev/user")
17
 
 
18
 
    uid = $1
19
 
    euid = $2
20
 
    gid = $3
21
 
    egid = $4
 
15
    uid = PROCINFO["uid"]
 
16
    euid = PROCINFO["euid"]
 
17
    gid = PROCINFO["gid"]
 
18
    egid = PROCINFO["egid"]
22
19
 
23
20
    printf("uid=%d", uid)
24
21
    pw = getpwuid(uid)
52
49
        }
53
50
    }
54
51
 
55
 
    if (NF > 4) {
56
 
        printf(" groups=");
57
 
        for (i = 5; i <= NF; i++) {
58
 
            printf("%d", $i)
59
 
            pw = getgrgid($i)
60
 
            if (pw != "") {
61
 
                split(pw, a, ":")
62
 
                printf("(%s)", a[1])
63
 
            }
64
 
            if (i < NF)
65
 
                printf(",")
 
52
    for (i = 1; ("group" i) in PROCINFO; i++) {
 
53
        if (i == 1)
 
54
            printf(" groups=")
 
55
        group = PROCINFO["group" i]
 
56
        printf("%d", group)
 
57
        pw = getgrgid(group)
 
58
        if (pw != "") {
 
59
            split(pw, a, ":")
 
60
            printf("(%s)", a[1])
66
61
        }
 
62
        if (("group" (i+1)) in PROCINFO)
 
63
            printf(",")
67
64
    }
 
65
 
68
66
    print ""
69
67
}