Annotation of researchv10dc/cmd/oasd++/dir.c, revision 1.1.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 (fstat (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.