Handle filesystems no supporting reporting how much is free. This fixes
authorAlexander Larsson <alexl@redhat.com>
Tue, 3 Mar 2009 14:40:44 +0000 (14:40 +0000)
committerAlexander Larsson <alexl@src.gnome.org>
Tue, 3 Mar 2009 14:40:44 +0000 (14:40 +0000)
2009-03-03  Alexander Larsson  <alexl@redhat.com>

* glocalfile.c (g_local_file_query_filesystem_info):
Handle filesystems no supporting reporting how much is free.
This fixes bug 573454 where the filesystem not supporting this
is the gvfs smb backend over the fuse filesystem.

svn path=/trunk/; revision=7951

gio/ChangeLog
gio/glocalfile.c

index 8e009fd..c9f7269 100644 (file)
@@ -1,3 +1,10 @@
+2009-03-03  Alexander Larsson  <alexl@redhat.com>
+
+       * glocalfile.c (g_local_file_query_filesystem_info):
+       Handle filesystems no supporting reporting how much is free.
+       This fixes bug 573454 where the filesystem not supporting this
+       is the gvfs smb backend over the fuse filesystem.
+
 2009-03-02  Matthias Clasen <mclasen@redhat.com>
 
        * === Released 2.19.10 ===
index 41de4ea..217ee98 100644 (file)
@@ -957,14 +957,13 @@ g_local_file_query_filesystem_info (GFile         *file,
 #endif
   block_size = statfs_buffer.f_bsize;
   
-#if defined(__linux__)
-  /* ncpfs does not know the amount of available and free space *
-   * assuming ncpfs is linux specific, if you are on a non-linux platform
-   * where ncpfs is available, please file a bug about it on bugzilla.gnome.org
+  /* Many backends can't report free size (for instance the gvfs fuse
+     backend for backend not supporting this), and set f_bfree to 0,
+     but it can be 0 for real too. We treat the availible == 0 and
+     free == 0 case as "both of these are invalid".
    */
-  if (statfs_buffer.f_bavail == 0 && statfs_buffer.f_bfree == 0 &&
-      /* linux/ncp_fs.h: NCP_SUPER_MAGIC == 0x564c */
-      statfs_buffer.f_type == 0x564c)
+#ifndef G_OS_WIN32
+  if (statfs_buffer.f_bavail == 0 && statfs_buffer.f_bfree == 0)
     no_size = TRUE;
 #endif