tlib9: do not try to hide symlinks as much - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 9a939d5f194b7430553885926612adf10b265205
 (DIR) parent bb53a229b2a997a0419c49ca2e7e968ef47e451d
 (HTM) Author: Russ Cox <rsc@swtch.com>
       Date:   Fri,  4 Jul 2008 16:24:54 -0400
       
       lib9: do not try to hide symlinks as much
       
       Diffstat:
         M src/lib9/_p9dir.c                   |      27 ++++++++++++++-------------
       
       1 file changed, 14 insertions(+), 13 deletions(-)
       ---
 (DIR) diff --git a/src/lib9/_p9dir.c b/src/lib9/_p9dir.c
       t@@ -198,32 +198,33 @@ _p9dir(struct stat *lst, struct stat *st, char *name, Dir *d, char **str, char *
                        d->mtime = st->st_mtime;
                        d->length = st->st_size;
        
       -                if(S_ISDIR(st->st_mode)){
       -                        d->length = 0;
       -                        d->mode |= DMDIR;
       -                        d->qid.type = QTDIR;
       -                }
                        if(S_ISLNK(lst->st_mode)){        /* yes, lst not st */
                                d->mode |= DMSYMLINK;
                                d->length = lst->st_size;
                        }
       -                if(S_ISFIFO(st->st_mode))
       +                else if(S_ISDIR(st->st_mode)){
       +                        d->length = 0;
       +                        d->mode |= DMDIR;
       +                        d->qid.type = QTDIR;
       +                }
       +                else if(S_ISFIFO(st->st_mode))
                                d->mode |= DMNAMEDPIPE;
       -                if(S_ISSOCK(st->st_mode))
       +                else if(S_ISSOCK(st->st_mode))
                                d->mode |= DMSOCKET;
       -                if(S_ISBLK(st->st_mode)){
       +                else if(S_ISBLK(st->st_mode)){
                                d->mode |= DMDEVICE;
                                d->qid.path = ('b'<<16)|st->st_rdev;
                        }
       -                if(S_ISCHR(st->st_mode)){
       +                else if(S_ISCHR(st->st_mode)){
                                d->mode |= DMDEVICE;
                                d->qid.path = ('c'<<16)|st->st_rdev;
                        }
                        /* fetch real size for disks */
       -                if(S_ISBLK(st->st_mode) || S_ISCHR(st->st_mode))
       -                if((fd = open(name, O_RDONLY)) >= 0){
       -                        d->length = disksize(fd, st);
       -                        close(fd);
       +                if(S_ISBLK(lst->st_mode) || S_ISCHR(lst->st_mode)){
       +                        if((fd = open(name, O_RDONLY)) >= 0){
       +                                d->length = disksize(fd, st);
       +                                close(fd);
       +                        }
                        }
                }