diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2019-01-11 15:14:33 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2019-01-11 15:14:33 +0200 |
commit | 663aff4ae012468c54d2e994e839d0e75210ef80 (patch) | |
tree | b65cc16d7e36cab817c5ad64611fdb54c8a3ad1a /test/nsprof2.awk | |
parent | feebb01f31e29740b050da1531416c90a12352ca (diff) | |
download | egawk-663aff4ae012468c54d2e994e839d0e75210ef80.tar.gz egawk-663aff4ae012468c54d2e994e839d0e75210ef80.tar.bz2 egawk-663aff4ae012468c54d2e994e839d0e75210ef80.zip |
Squashed merge of feature/namespaces. Add code and doc.
Diffstat (limited to 'test/nsprof2.awk')
-rw-r--r-- | test/nsprof2.awk | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/test/nsprof2.awk b/test/nsprof2.awk new file mode 100644 index 00000000..9c7da57e --- /dev/null +++ b/test/nsprof2.awk @@ -0,0 +1,74 @@ +# passwd.awk --- access password file information +# +# Arnold Robbins, arnold@skeeve.com, Public Domain +# May 1993 +# Revised October 2000 +# Revised December 2010 +# Revised July 2017 + +@namespace "foo" # this is foo + +@namespace "bar" # this is bar + +@namespace "passwd" # move to passwd namespace + +BEGIN { + # tailor this to suit your system + Awklib = "/usr/local/libexec/awk/" +} + +function Init( oldfs, oldrs, olddol0, pwcat, using_fw, using_fpat) +{ + if (Inited) + return + + oldfs = FS + oldrs = RS + olddol0 = $0 + using_fw = (PROCINFO["FS"] == "FIELDWIDTHS") + using_fpat = (PROCINFO["FS"] == "FPAT") + FS = ":" + RS = "\n" + + pwcat = Awklib "pwcat" + while ((pwcat | getline) > 0) { + Byname[$1] = $0 + Byuid[$3] = $0 + Bycount[++Total] = $0 + } + close(pwcat) + Count = 0 + Inited = 1 + FS = oldfs + if (using_fw) + FIELDWIDTHS = FIELDWIDTHS + else if (using_fpat) + FPAT = FPAT + RS = oldrs + $0 = olddol0 +} + +function awk::getpwnam(name) +{ + Init() + return Byname[name] +} + +function awk::getpwuid(uid) +{ + Init() + return Byuid[uid] +} + +function awk::getpwent() +{ + Init() + if (Count < Total) + return Bycount[++Count] + return "" +} + +function awk::endpwent() +{ + Count = 0 +} |