source: Daodan/MinGW/msys/1.0/share/awk/group.awk@ 1080

Last change on this file since 1080 was 1046, checked in by alloc, 8 years ago

Daodan: Added Windows MinGW and build batch file

File size: 1.8 KB
Line 
1# group.awk --- functions for dealing with the group file
2#
3# Arnold Robbins, arnold@skeeve.com, Public Domain
4# May 1993
5# Revised October 2000
6
7BEGIN \
8{
9 # Change to suit your system
10 _gr_awklib = "/usr/sbin/awk/"
11}
12
13function _gr_init( oldfs, oldrs, olddol0, grcat,
14 using_fw, n, a, i)
15{
16 if (_gr_inited)
17 return
18
19 oldfs = FS
20 oldrs = RS
21 olddol0 = $0
22 using_fw = (PROCINFO["FS"] == "FIELDWIDTHS")
23 FS = ":"
24 RS = "\n"
25
26 grcat = _gr_awklib "grcat"
27 while ((grcat | getline) > 0) {
28 if ($1 in _gr_byname)
29 _gr_byname[$1] = _gr_byname[$1] "," $4
30 else
31 _gr_byname[$1] = $0
32 if ($3 in _gr_bygid)
33 _gr_bygid[$3] = _gr_bygid[$3] "," $4
34 else
35 _gr_bygid[$3] = $0
36
37 n = split($4, a, "[ \t]*,[ \t]*")
38 for (i = 1; i <= n; i++)
39 if (a[i] in _gr_groupsbyuser)
40 _gr_groupsbyuser[a[i]] = \
41 _gr_groupsbyuser[a[i]] " " $1
42 else
43 _gr_groupsbyuser[a[i]] = $1
44
45 _gr_bycount[++_gr_count] = $0
46 }
47 close(grcat)
48 _gr_count = 0
49 _gr_inited++
50 FS = oldfs
51 if (using_fw)
52 FIELDWIDTHS = FIELDWIDTHS
53 RS = oldrs
54 $0 = olddol0
55}
56function getgrnam(group)
57{
58 _gr_init()
59 if (group in _gr_byname)
60 return _gr_byname[group]
61 return ""
62}
63function getgrgid(gid)
64{
65 _gr_init()
66 if (gid in _gr_bygid)
67 return _gr_bygid[gid]
68 return ""
69}
70function getgruser(user)
71{
72 _gr_init()
73 if (user in _gr_groupsbyuser)
74 return _gr_groupsbyuser[user]
75 return ""
76}
77function getgrent()
78{
79 _gr_init()
80 if (++_gr_count in _gr_bycount)
81 return _gr_bycount[_gr_count]
82 return ""
83}
84function endgrent()
85{
86 _gr_count = 0
87}
Note: See TracBrowser for help on using the repository browser.