summaryrefslogtreecommitdiff
path: root/gvfs/gvfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'gvfs/gvfs.c')
-rw-r--r--gvfs/gvfs.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gvfs/gvfs.c b/gvfs/gvfs.c
index 31b9fb2..5744d0c 100644
--- a/gvfs/gvfs.c
+++ b/gvfs/gvfs.c
@@ -505,6 +505,7 @@ g_file_info_to_TVFSItem (GFileInfo *info, struct TVFSItem *Item)
Item->iGID = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_GID);
// g_print ("(II) g_file_info_to_TVFSItem: type = %d\n", g_file_info_get_file_type (info));
+// g_print ("(II) g_file_info_to_TVFSItem: UNIX_MODE = %d\n", Item->iMode);
if (g_file_info_get_is_symlink (info)) {
Item->ItemType = vSymlink;
@@ -530,6 +531,14 @@ g_file_info_to_TVFSItem (GFileInfo *info, struct TVFSItem *Item)
default: Item->ItemType = vRegular;
}
}
+
+ /* fallback to default file mode if read fails */
+ if (Item->iMode == 0) {
+ if (Item->ItemType == vDirectory)
+ Item->iMode = S_IFDIR + S_IRWXU + S_IRGRP + S_IXGRP + S_IROTH + S_IXOTH;
+ else
+ Item->iMode = S_IRUSR + S_IWUSR + S_IRGRP + S_IROTH;
+ }
}
TVFSResult