Index: libgnomevfs/gnome-vfs-unix-mounts.c =================================================================== RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-unix-mounts.c,v retrieving revision 1.17 diff -u -p -r1.17 gnome-vfs-unix-mounts.c --- libgnomevfs/gnome-vfs-unix-mounts.c 22 Sep 2004 08:38:38 -0000 1.17 +++ libgnomevfs/gnome-vfs-unix-mounts.c 15 Oct 2004 08:14:01 -0000 @@ -235,6 +235,7 @@ gboolean _gnome_vfs_get_current_unix_mounts (GList **return_list) { static time_t last_mtime = 0; + static off_t last_size = 0; struct mntent *mntent; FILE *file; char *read_file; @@ -254,11 +255,12 @@ _gnome_vfs_get_current_unix_mounts (GLis return TRUE; } - if (sb.st_mtime == last_mtime) { + if (sb.st_mtime == last_mtime && sb.st_size == last_size) { return FALSE; } last_mtime = sb.st_mtime; + last_size = sb.st_size; file = setmntent (read_file, "r"); if (file == NULL) { @@ -332,6 +334,7 @@ gboolean _gnome_vfs_get_current_unix_mounts (GList **return_list) { static time_t last_mtime = 0; + static off_t last_size = 0; struct mnttab mntent; FILE *file; char *read_file; @@ -350,11 +353,12 @@ _gnome_vfs_get_current_unix_mounts (GLis return TRUE; } - if (sb.st_mtime == last_mtime) { + if (sb.st_mtime == last_mtime && sb.st_size == last_size) { return FALSE; } last_mtime = sb.st_mtime; + last_size = sb.st_size; file = setmntent (read_file, "r"); if (file == NULL) { @@ -526,6 +530,7 @@ gboolean _gnome_vfs_get_unix_mount_table (GList **return_list) { static time_t last_mtime = 0; + static off_t last_size = 0; struct mntent *mntent; FILE *file; char *read_file; @@ -544,11 +549,12 @@ _gnome_vfs_get_unix_mount_table (GList * return TRUE; } - if (sb.st_mtime == last_mtime) { + if (sb.st_mtime == last_mtime && sb.st_size == last_size) { return FALSE; } last_mtime = sb.st_mtime; + last_size = sb.st_size; file = setmntent (read_file, "r"); if (file == NULL) { @@ -613,6 +619,7 @@ gboolean _gnome_vfs_get_unix_mount_table (GList **return_list) { static time_t last_mtime = 0; + static off_t last_size = 0; struct mnttab mntent; FILE *file; char *read_file; @@ -630,11 +637,12 @@ _gnome_vfs_get_unix_mount_table (GList * return TRUE; } - if (sb.st_mtime == last_mtime) { + if (sb.st_mtime == last_mtime && sb.st_size == last_size) { return FALSE; } last_mtime = sb.st_mtime; + last_size = sb.st_size; file = setmntent (read_file, "r"); if (file == NULL) { @@ -801,6 +809,7 @@ gboolean _gnome_vfs_get_unix_mount_table (GList **return_list) { static time_t last_mtime = 0; + static off_t last_size = 0; struct mntent *mntent; FILE *file; char *read_file; @@ -813,17 +822,17 @@ _gnome_vfs_get_unix_mount_table (GList * *return_list = NULL; - if (last_mtime != 0) { - if (stat (stat_file, &sb) < 0) { - g_warning ("Unable to stat %s: %s", stat_file, - g_strerror (errno)); - return TRUE; - } + if (stat (stat_file, &sb) < 0) { + g_warning ("Unable to stat %s: %s", stat_file, + g_strerror (errno)); + return TRUE; + } - if (sb.st_mtime == last_mtime) { - return FALSE; - } + if (last_mtime != 0 && fsb.st_mtime == last_mtime && fsb.st_size == last_size) { + return FALSE; } + last_mtime = fsb.st_mtime; + last_size = fsb.st_size; file = setmntent (read_file, "r"); if (file == NULL) { @@ -857,6 +866,7 @@ gboolean _gnome_vfs_get_unix_mount_table (GList **return_list) { static time_t last_mtime = 0; + static off_t last_size = 0; struct fstab *fstab = NULL; char *stat_file; struct stat fsb; @@ -875,10 +885,11 @@ _gnome_vfs_get_unix_mount_table (GList * return TRUE; } - if (last_mtime != 0 && fsb.st_mtime == last_mtime) { + if (last_mtime != 0 && fsb.st_mtime == last_mtime && fsb.st_size == last_size) { return FALSE; } last_mtime = fsb.st_mtime; + last_size = fsb.st_size; *return_list = NULL;