Blame awklib/eg/lib/passwdawk.in

Packit 575503
# passwd.awk --- access password file information
Packit 575503
#
Packit 575503
# Arnold Robbins, arnold@skeeve.com, Public Domain
Packit 575503
# May 1993
Packit 575503
# Revised October 2000
Packit 575503
# Revised December 2010
Packit 575503
Packit 575503
BEGIN {
Packit 575503
    # tailor this to suit your system
Packit 575503
    _pw_awklib = "/usr/local/libexec/awk/"
Packit 575503
}
Packit 575503
Packit 575503
function _pw_init(    oldfs, oldrs, olddol0, pwcat, using_fw, using_fpat)
Packit 575503
{
Packit 575503
    if (_pw_inited)
Packit 575503
        return
Packit 575503
Packit 575503
    oldfs = FS
Packit 575503
    oldrs = RS
Packit 575503
    olddol0 = $0
Packit 575503
    using_fw = (PROCINFO["FS"] == "FIELDWIDTHS")
Packit 575503
    using_fpat = (PROCINFO["FS"] == "FPAT")
Packit 575503
    FS = ":"
Packit 575503
    RS = "\n"
Packit 575503
Packit 575503
    pwcat = _pw_awklib "pwcat"
Packit 575503
    while ((pwcat | getline) > 0) {
Packit 575503
        _pw_byname[$1] = $0
Packit 575503
        _pw_byuid[$3] = $0
Packit 575503
        _pw_bycount[++_pw_total] = $0
Packit 575503
    }
Packit 575503
    close(pwcat)
Packit 575503
    _pw_count = 0
Packit 575503
    _pw_inited = 1
Packit 575503
    FS = oldfs
Packit 575503
    if (using_fw)
Packit 575503
        FIELDWIDTHS = FIELDWIDTHS
Packit 575503
    else if (using_fpat)
Packit 575503
        FPAT = FPAT
Packit 575503
    RS = oldrs
Packit 575503
    $0 = olddol0
Packit 575503
}
Packit 575503
function getpwnam(name)
Packit 575503
{
Packit 575503
    _pw_init()
Packit 575503
    return _pw_byname[name]
Packit 575503
}
Packit 575503
function getpwuid(uid)
Packit 575503
{
Packit 575503
    _pw_init()
Packit 575503
    return _pw_byuid[uid]
Packit 575503
}
Packit 575503
function getpwent()
Packit 575503
{
Packit 575503
    _pw_init()
Packit 575503
    if (_pw_count < _pw_total)
Packit 575503
        return _pw_bycount[++_pw_count]
Packit 575503
    return ""
Packit 575503
}
Packit 575503
function endpwent()
Packit 575503
{
Packit 575503
    _pw_count = 0
Packit 575503
}