diff options
Diffstat (limited to 'gvfs')
| -rw-r--r-- | gvfs/gvfs.c | 9 |
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 |
