hurdextras-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

smbfs smbnetfs.c


From: Ludovic Courtès
Subject: smbfs smbnetfs.c
Date: Sun, 04 Mar 2012 14:39:51 +0000

CVSROOT:        /sources/hurdextras
Module name:    smbfs
Changes by:     Ludovic Courtès <civodul>       12/03/04 14:39:51

Modified files:
        .              : smbnetfs.c 

Log message:
        Have `get_dirents' return entries even for unstat'able entries.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/smbfs/smbnetfs.c?cvsroot=hurdextras&r1=1.6&r2=1.7

Patches:
Index: smbnetfs.c
===================================================================
RCS file: /sources/hurdextras/smbfs/smbnetfs.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- smbnetfs.c  4 Mar 2012 14:23:24 -0000       1.6
+++ smbnetfs.c  4 Mar 2012 14:39:51 -0000       1.7
@@ -222,6 +222,26 @@
   return 0;
 }
 
+/* Return a zeroed stat buffer for CRED.  */
+static struct stat
+empty_stat (struct iouser *cred)
+{
+  struct stat st;
+
+  st.st_ino = 0;
+  st.st_dev = st.st_rdev = 0;
+  st.st_size = 0;
+  st.st_blksize = 0;
+  st.st_blocks = 0;
+  st.st_mode = 0;
+  st.st_nlink = 0;
+  st.st_atime = st.st_mtime = st.st_ctime = 0;
+  st.st_uid = cred->uids->num > 0 ? cred->uids->ids[0] : -1;
+  st.st_gid = cred->gids->num > 0 ? cred->gids->ids[0] : -1;
+
+  return st;
+}
+
 error_t
 netfs_validate_stat (struct node * np, struct iouser *cred)
 {
@@ -969,8 +989,15 @@
           {
             sprintf (stat_file_name,"%s/%s", dir->nn->filename, dirent->name);
             mutex_lock (&smb_mutex);
-            err=smbc_stat (stat_file_name, &st);
+            err = smbc_stat (stat_file_name, &st);
             mutex_unlock (&smb_mutex);
+
+           if (err)
+             {
+               /* STAT_FILE_NAME is not accessible but ought to be listed.  */
+               st = empty_stat (cred);
+               err = 0;
+             }
           }
 
         free (stat_file_name);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]