dirstat.c - 9base - revived minimalist port of Plan 9 userland to Unix
 (HTM) git clone git://git.suckless.org/9base
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       dirstat.c (551B)
       ---
            1 #include <u.h>
            2 #define NOPLAN9DEFINES
            3 #include <libc.h>
            4 
            5 #include <sys/stat.h>
            6 
            7 extern int _p9dir(struct stat*, struct stat*, char*, Dir*, char**, char*);
            8 
            9 Dir*
           10 dirstat(char *file)
           11 {
           12         struct stat lst;
           13         struct stat st;
           14         int nstr;
           15         Dir *d;
           16         char *str;
           17 
           18         if(lstat(file, &lst) < 0)
           19                 return nil;
           20         st = lst;
           21         if((lst.st_mode&S_IFMT) == S_IFLNK)
           22                 stat(file, &st);
           23 
           24         nstr = _p9dir(&lst, &st, file, nil, nil, nil);
           25         d = mallocz(sizeof(Dir)+nstr, 1);
           26         if(d == nil)
           27                 return nil;
           28         str = (char*)&d[1];
           29         _p9dir(&lst, &st, file, d, &str, str+nstr);
           30         return d;
           31 }
           32