Annotation of researchv10dc/cmd/asd++/dir.c, revision 1.1

1.1     ! root        1: #include "decl.h"
        !             2: #include <dir.h>
        !             3: 
        !             4: int
        !             5: isdir (Path& p)
        !             6: {
        !             7:        struct stat sb;
        !             8: 
        !             9:        if (stat (p, &sb) < 0)
        !            10:                return 0;
        !            11:        return (sb.st_mode & S_IFMT) == S_IFDIR;
        !            12: }
        !            13: 
        !            14: static char*
        !            15: charconv (String& s)
        !            16: {
        !            17:        char *p = new char[s.length() + 1];
        !            18:        s.dump (p);
        !            19:        return p;
        !            20: }
        !            21: 
        !            22: Path_list
        !            23: dircontents (Path& p)
        !            24: {
        !            25:        Path_list r;
        !            26:        char *cp = charconv (String(p));
        !            27:        DIR *df = opendir (cp);
        !            28: 
        !            29:        if (df) {
        !            30:                direct *dp;
        !            31:                while (dp = readdir (df)) {
        !            32:                        Path ds = dp->d_name;
        !            33:                        if (ds != "." && ds != "..") {
        !            34:                                Path_list_iterator i (r);
        !            35:                                Path x;
        !            36: 
        !            37:                                while (i.peekX (x) && x < ds)
        !            38:                                        i.next();
        !            39: 
        !            40:                                i.insert (ds);
        !            41:                        }
        !            42:                }
        !            43: 
        !            44:                closedir (df);
        !            45:        }
        !            46: 
        !            47:        delete cp;
        !            48: 
        !            49:        return r;
        !            50: }

unix.superglobalmegacorp.com

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