Annotation of researchv10no/cmd/ps/getuname.c, revision 1.1

1.1     ! root        1: #include "ps.h"
        !             2: #include <pwd.h>
        !             3: 
        !             4: static List namelist;
        !             5: static Entry *prev;
        !             6: 
        !             7: char *
        !             8: getuname(uid)
        !             9: register uid;
        !            10: {
        !            11:        register Entry *ep;
        !            12: 
        !            13:        if((ep = prev) && ep->e_val == uid)
        !            14:                return ep->e_name;
        !            15:        for(ep = namelist.begin; ep; ep = ep->next) {
        !            16:                if(ep->e_val == uid) {
        !            17:                        prev = ep;
        !            18:                        return ep->e_name;
        !            19:                }
        !            20:        }
        !            21:        return "?";
        !            22: }
        !            23: 
        !            24: getlogins()
        !            25: {
        !            26:        register Entry *ep;
        !            27:        register Entry *last;
        !            28:        register struct passwd *pp;
        !            29: 
        !            30:        last = NULL;
        !            31:        while(pp = getpwent()) {
        !            32:                if((ep = Malloc(Entry, 1)) == 0)
        !            33:                        break;
        !            34:                if (last)
        !            35:                        last->next = ep;
        !            36:                else
        !            37:                        namelist.begin = ep;
        !            38:                ep->next = NULL;
        !            39:                last = ep;
        !            40:                namelist.nentry++;
        !            41:                ep->e_val = pp->pw_uid;
        !            42:                strncpy(ep->e_name, pp->pw_name, sizeof(ep->e_name));
        !            43:        }
        !            44:        endpwent();
        !            45: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.