summaryrefslogtreecommitdiffstats
path: root/contrib/awk/awklib/eg/lib/passwdawk.in
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/awk/awklib/eg/lib/passwdawk.in')
-rw-r--r--contrib/awk/awklib/eg/lib/passwdawk.in56
1 files changed, 56 insertions, 0 deletions
diff --git a/contrib/awk/awklib/eg/lib/passwdawk.in b/contrib/awk/awklib/eg/lib/passwdawk.in
new file mode 100644
index 0000000..dd6ee7f
--- /dev/null
+++ b/contrib/awk/awklib/eg/lib/passwdawk.in
@@ -0,0 +1,56 @@
+# passwd.awk --- access password file information
+# Arnold Robbins, arnold@gnu.org, Public Domain
+# May 1993
+
+BEGIN {
+ # tailor this to suit your system
+ _pw_awklib = "/usr/local/libexec/awk/"
+}
+
+function _pw_init( oldfs, oldrs, olddol0, pwcat)
+{
+ if (_pw_inited)
+ return
+ oldfs = FS
+ oldrs = RS
+ olddol0 = $0
+ FS = ":"
+ RS = "\n"
+ pwcat = _pw_awklib "pwcat"
+ while ((pwcat | getline) > 0) {
+ _pw_byname[$1] = $0
+ _pw_byuid[$3] = $0
+ _pw_bycount[++_pw_total] = $0
+ }
+ close(pwcat)
+ _pw_count = 0
+ _pw_inited = 1
+ FS = oldfs
+ RS = oldrs
+ $0 = olddol0
+}
+function getpwnam(name)
+{
+ _pw_init()
+ if (name in _pw_byname)
+ return _pw_byname[name]
+ return ""
+}
+function getpwuid(uid)
+{
+ _pw_init()
+ if (uid in _pw_byuid)
+ return _pw_byuid[uid]
+ return ""
+}
+function getpwent()
+{
+ _pw_init()
+ if (_pw_count < _pw_total)
+ return _pw_bycount[++_pw_count]
+ return ""
+}
+function endpwent()
+{
+ _pw_count = 0
+}
OpenPOWER on IntegriCloud