summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog42
-rw-r--r--components/adapter/bonobo-stream-vfs.c26
-rw-r--r--components/adapter/nautilus-adapter-progressive-load-strategy.c17
-rw-r--r--libnautilus-extensions/nautilus-file-operations.c5
-rw-r--r--libnautilus-extensions/nautilus-icon-factory.c20
-rw-r--r--libnautilus-extensions/nautilus-preferences-item.c38
-rw-r--r--libnautilus-extensions/nautilus-thumbnails.c16
-rw-r--r--libnautilus-private/nautilus-file-operations.c5
-rw-r--r--libnautilus-private/nautilus-icon-factory.c20
-rw-r--r--libnautilus-private/nautilus-preferences-item.c38
-rw-r--r--libnautilus-private/nautilus-thumbnails.c16
-rw-r--r--src/nautilus-navigation-window-menus.c28
-rw-r--r--src/nautilus-window-menus.c28
13 files changed, 167 insertions, 132 deletions
diff --git a/ChangeLog b/ChangeLog
index c1e24b6ea..027230a10 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,45 @@
+2001-01-31 Pavel Cisler <pavel@eazel.com>
+
+ reviewed by: Gene Z. Ragan <gzr@eazel.com>
+
+ Fix 5324 (Should get rid of stack-based GnomeVFSFileInfo)
+
+ * components/adapter/bonobo-stream-vfs.c: (vfs_get_info):
+ Nuked some unused code that contained gnome_vfs_file_info_init.
+
+ * components/adapter/nautilus-adapter-progressive-load-strategy.c:
+ (nautilus_adapter_progressive_load_strategy_load_location):
+ * libnautilus-extensions/nautilus-icon-factory.c:
+ (path_represents_svg_image), (get_cache_time):
+ * libnautilus-extensions/nautilus-thumbnails.c:
+ (first_file_more_recent):
+ * src/nautilus-window-menus.c: (get_static_bookmarks_file_path):
+ Get rid of gnome_vfs_file_info_init.
+ Replace all instances of stack-based GnomeVFSFileInfo
+ structures, replace all calls to gnome_vfs_file_info_init
+ with gnome_vfs_file_info_new.
+ Replace most calls to gnome_vfs_file_info_clear with
+ gnome_vfs_file_info_unref.
+
+ * libnautilus-extensions/nautilus-preferences-item.c:
+ (has_image_file):
+ Rework to use gnome_vfs_uri_exists instead of trying to get
+ file info.
+
+ * components/adapter/nautilus-adapter-progressive-load-strategy.c:
+ (nautilus_adapter_progressive_load_strategy_load_location):
+ Fixed a bug where file info fields were being used after a
+ gnome_vfs_file_info_clear call
+
+
+ Fix 6146 ("Duplicate File" reports "You cannot copy a file
+ over itself")
+
+ * libnautilus-extensions/nautilus-file-operations.c:
+ (nautilus_file_operations_copy_move):
+ Make copying iside the same directory while the
+ GNOME_VFS_XFER_USE_UNIQUE_NAMES move_option is set legal.
+
2001-01-31 Ian McKellar <ian@eazel.com>
reviewed by: Maciej Stachowiak <mjs@eazel.com>
diff --git a/components/adapter/bonobo-stream-vfs.c b/components/adapter/bonobo-stream-vfs.c
index b624c7103..8e843ef37 100644
--- a/components/adapter/bonobo-stream-vfs.c
+++ b/components/adapter/bonobo-stream-vfs.c
@@ -61,32 +61,6 @@ vfs_get_info (BonoboStream *stream,
g_warning ("BonoboStreamVFS:get_info not implemented");
CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
ex_Bonobo_Stream_IOError, NULL);
-
- /* The following code could be useful for as a start for
- * writing get_info.
- */
-#if 0
- BonoboStreamVFS *stream_vfs;
- GnomeVFSFileInfo file_info;
- CORBA_long size;
-
- stream_vfs = BONOBO_STREAM_VFS (stream);
- gnome_vfs_file_info_init (&file_info);
-
- if (gnome_vfs_get_file_info_from_handle (stream_vfs->details->handle,
- &file_info,
- GNOME_VFS_FILE_INFO_DEFAULT) != GNOME_VFS_OK) {
- return 0;
- }
-
- /* FIXME bugzilla.eazel.com 4397: Will munge >31-bit file
- * sizes, which can happen in gnome-vfs.
- */
- size = file_info.size;
- gnome_vfs_file_info_clear (&file_info);
-
- return size;
-#endif
return NULL;
}
diff --git a/components/adapter/nautilus-adapter-progressive-load-strategy.c b/components/adapter/nautilus-adapter-progressive-load-strategy.c
index 684eb430d..ed5884827 100644
--- a/components/adapter/nautilus-adapter-progressive-load-strategy.c
+++ b/components/adapter/nautilus-adapter-progressive-load-strategy.c
@@ -219,13 +219,14 @@ nautilus_adapter_progressive_load_strategy_load_location (NautilusAdapterLoadStr
const char *uri)
{
NautilusAdapterProgressiveLoadStrategy *strategy;
- GnomeVFSFileInfo file_info;
+ GnomeVFSFileInfo *file_info;
GnomeVFSHandle *handle;
GnomeVFSResult result;
GnomeVFSFileSize bytes_read;
Bonobo_ProgressiveDataSink_iobuf *iobuf;
CORBA_octet *data;
CORBA_Environment ev;
+ GnomeVFSFileSize size;
strategy = NAUTILUS_ADAPTER_PROGRESSIVE_LOAD_STRATEGY (abstract_strategy);
@@ -280,13 +281,17 @@ nautilus_adapter_progressive_load_strategy_load_location (NautilusAdapterLoadStr
CHECK_IF_STOPPED;
- gnome_vfs_file_info_init (&file_info);
- result = gnome_vfs_get_file_info_from_handle (handle, &file_info, GNOME_VFS_FILE_INFO_DEFAULT);
- gnome_vfs_file_info_clear (&file_info);
+ file_info = gnome_vfs_file_info_new ();
+ result = gnome_vfs_get_file_info_from_handle (handle, file_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ size = 0;
+ if (result == GNOME_VFS_OK && (file_info->valid_fields | GNOME_VFS_FILE_INFO_FIELDS_SIZE)) {
+ size = file_info->size;
+ }
+ gnome_vfs_file_info_unref (file_info);
- if (result == GNOME_VFS_OK && file_info.valid_fields | GNOME_VFS_FILE_INFO_FIELDS_SIZE) {
+ if (size > 0) {
Bonobo_ProgressiveDataSink_setSize (strategy->details->progressive_data_sink,
- (long) file_info.size, &ev);
+ (long) size, &ev);
CHECK_IF_STOPPED;
}
diff --git a/libnautilus-extensions/nautilus-file-operations.c b/libnautilus-extensions/nautilus-file-operations.c
index 9f56b93ec..1030ac711 100644
--- a/libnautilus-extensions/nautilus-file-operations.c
+++ b/libnautilus-extensions/nautilus-file-operations.c
@@ -1903,7 +1903,10 @@ nautilus_file_operations_copy_move (const GList *item_uris,
result = GNOME_VFS_ERROR_NOT_PERMITTED;
break;
}
- if (gnome_vfs_uri_is_parent (target_dir_uri, uri, FALSE)) {
+ if (((move_options & GNOME_VFS_XFER_LINK_ITEMS) != 0
+ || (move_options & GNOME_VFS_XFER_REMOVESOURCE) != 0
+ || (move_options & GNOME_VFS_XFER_USE_UNIQUE_NAMES) == 0)
+ && gnome_vfs_uri_is_parent (target_dir_uri, uri, FALSE)) {
nautilus_run_simple_dialog
(parent_view,
FALSE,
diff --git a/libnautilus-extensions/nautilus-icon-factory.c b/libnautilus-extensions/nautilus-icon-factory.c
index 9be2faeae..05575acac 100644
--- a/libnautilus-extensions/nautilus-icon-factory.c
+++ b/libnautilus-extensions/nautilus-icon-factory.c
@@ -1628,7 +1628,7 @@ static gboolean
path_represents_svg_image (const char *path)
{
char *uri;
- GnomeVFSFileInfo file_info;
+ GnomeVFSFileInfo *file_info;
gboolean is_svg;
/* Sync. file I/O is OK here because this is used only for installed
@@ -1637,11 +1637,11 @@ path_represents_svg_image (const char *path)
*/
uri = gnome_vfs_get_uri_from_local_path (path);
- gnome_vfs_file_info_init (&file_info);
- gnome_vfs_get_file_info (uri, &file_info, GNOME_VFS_FILE_INFO_GET_MIME_TYPE);
+ file_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (uri, file_info, GNOME_VFS_FILE_INFO_GET_MIME_TYPE);
g_free (uri);
- is_svg = nautilus_strcmp (file_info.mime_type, "image/svg") == 0;
- gnome_vfs_file_info_clear (&file_info);
+ is_svg = nautilus_strcmp (file_info->mime_type, "image/svg") == 0;
+ gnome_vfs_file_info_unref (file_info);
return is_svg;
}
@@ -1651,7 +1651,7 @@ static GnomeVFSResult
get_cache_time (const char *file_uri, time_t *cache_time)
{
GnomeVFSURI *vfs_uri;
- GnomeVFSFileInfo file_info;
+ GnomeVFSFileInfo *file_info;
GnomeVFSResult result;
gboolean is_local;
@@ -1671,12 +1671,12 @@ get_cache_time (const char *file_uri, time_t *cache_time)
}
/* Gather the info and then compare modification times. */
- gnome_vfs_file_info_init (&file_info);
- result = gnome_vfs_get_file_info (file_uri, &file_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ file_info = gnome_vfs_file_info_new ();
+ result = gnome_vfs_get_file_info (file_uri, file_info, GNOME_VFS_FILE_INFO_DEFAULT);
if (result == GNOME_VFS_OK) {
- *cache_time = file_info.mtime;
+ *cache_time = file_info->mtime;
}
- gnome_vfs_file_info_clear (&file_info);
+ gnome_vfs_file_info_unref (file_info);
return result;
}
diff --git a/libnautilus-extensions/nautilus-preferences-item.c b/libnautilus-extensions/nautilus-preferences-item.c
index e07b847e4..97d1a1104 100644
--- a/libnautilus-extensions/nautilus-preferences-item.c
+++ b/libnautilus-extensions/nautilus-preferences-item.c
@@ -542,32 +542,30 @@ static const char *icon_file_name_suffixes[] =
static gboolean
has_image_file(const char *directory_uri, const char *dir_name, const char *required_file)
{
- char *temp_str, *base_uri;
+ char *temp_str, *base_uri_string;
guint index;
- GnomeVFSResult result;
- GnomeVFSFileInfo *file_info;
-
- file_info = gnome_vfs_file_info_new ();
+ gboolean result;
+ GnomeVFSURI *base_uri, *uri;
- temp_str = nautilus_make_path(directory_uri, dir_name);
- base_uri = nautilus_make_path(temp_str, required_file);
- g_free(temp_str);
+ temp_str = nautilus_make_path (directory_uri, dir_name);
+ base_uri_string = nautilus_make_path (temp_str, required_file);
+ base_uri = gnome_vfs_uri_new (base_uri_string);
+ g_free (temp_str);
+ g_free (base_uri_string);
+ result = FALSE;
for (index = 0; index < NAUTILUS_N_ELEMENTS (icon_file_name_suffixes); index++) {
- temp_str = g_strconcat (base_uri, icon_file_name_suffixes[index], NULL);
- gnome_vfs_file_info_init (file_info);
- result = gnome_vfs_get_file_info (temp_str, file_info, 0);
- g_free(temp_str);
- if (result == GNOME_VFS_OK) {
- g_free(base_uri);
- gnome_vfs_file_info_unref (file_info);
- return TRUE;
- }
+ uri = gnome_vfs_uri_append_string (base_uri, icon_file_name_suffixes[index]);
+ result = gnome_vfs_uri_exists (uri);
+ gnome_vfs_uri_unref (uri);
+ if (result) {
+ break;
+ }
}
- gnome_vfs_file_info_unref (file_info);
- g_free(base_uri);
- return FALSE;
+ gnome_vfs_uri_unref (base_uri);
+ g_free (base_uri);
+ return result;
}
/* add available icon themes to the theme list by iterating through the
diff --git a/libnautilus-extensions/nautilus-thumbnails.c b/libnautilus-extensions/nautilus-thumbnails.c
index 6d57b3f7b..39521d3d0 100644
--- a/libnautilus-extensions/nautilus-thumbnails.c
+++ b/libnautilus-extensions/nautilus-thumbnails.c
@@ -170,7 +170,7 @@ first_file_more_recent(const char* file_uri, const char* other_file_uri)
GnomeVFSURI *vfs_uri, *other_vfs_uri;
gboolean more_recent, is_local;
- GnomeVFSFileInfo file_info, other_file_info;
+ GnomeVFSFileInfo *file_info, *other_file_info;
/* if either file is remote, return FALSE. Eventually we'll make this async to fix this */
vfs_uri = gnome_vfs_uri_new(file_uri);
@@ -184,16 +184,16 @@ first_file_more_recent(const char* file_uri, const char* other_file_uri)
}
/* gather the info and then compare modification times */
- gnome_vfs_file_info_init (&file_info);
- gnome_vfs_get_file_info (file_uri, &file_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ file_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (file_uri, file_info, GNOME_VFS_FILE_INFO_DEFAULT);
- gnome_vfs_file_info_init (&other_file_info);
- gnome_vfs_get_file_info (other_file_uri, &other_file_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ other_file_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (other_file_uri, other_file_info, GNOME_VFS_FILE_INFO_DEFAULT);
- more_recent = file_info.mtime > other_file_info.mtime;
+ more_recent = file_info->mtime > other_file_info->mtime;
- gnome_vfs_file_info_clear (&file_info);
- gnome_vfs_file_info_clear (&other_file_info);
+ gnome_vfs_file_info_unref (file_info);
+ gnome_vfs_file_info_unref (other_file_info);
return more_recent;
}
diff --git a/libnautilus-private/nautilus-file-operations.c b/libnautilus-private/nautilus-file-operations.c
index 9f56b93ec..1030ac711 100644
--- a/libnautilus-private/nautilus-file-operations.c
+++ b/libnautilus-private/nautilus-file-operations.c
@@ -1903,7 +1903,10 @@ nautilus_file_operations_copy_move (const GList *item_uris,
result = GNOME_VFS_ERROR_NOT_PERMITTED;
break;
}
- if (gnome_vfs_uri_is_parent (target_dir_uri, uri, FALSE)) {
+ if (((move_options & GNOME_VFS_XFER_LINK_ITEMS) != 0
+ || (move_options & GNOME_VFS_XFER_REMOVESOURCE) != 0
+ || (move_options & GNOME_VFS_XFER_USE_UNIQUE_NAMES) == 0)
+ && gnome_vfs_uri_is_parent (target_dir_uri, uri, FALSE)) {
nautilus_run_simple_dialog
(parent_view,
FALSE,
diff --git a/libnautilus-private/nautilus-icon-factory.c b/libnautilus-private/nautilus-icon-factory.c
index 9be2faeae..05575acac 100644
--- a/libnautilus-private/nautilus-icon-factory.c
+++ b/libnautilus-private/nautilus-icon-factory.c
@@ -1628,7 +1628,7 @@ static gboolean
path_represents_svg_image (const char *path)
{
char *uri;
- GnomeVFSFileInfo file_info;
+ GnomeVFSFileInfo *file_info;
gboolean is_svg;
/* Sync. file I/O is OK here because this is used only for installed
@@ -1637,11 +1637,11 @@ path_represents_svg_image (const char *path)
*/
uri = gnome_vfs_get_uri_from_local_path (path);
- gnome_vfs_file_info_init (&file_info);
- gnome_vfs_get_file_info (uri, &file_info, GNOME_VFS_FILE_INFO_GET_MIME_TYPE);
+ file_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (uri, file_info, GNOME_VFS_FILE_INFO_GET_MIME_TYPE);
g_free (uri);
- is_svg = nautilus_strcmp (file_info.mime_type, "image/svg") == 0;
- gnome_vfs_file_info_clear (&file_info);
+ is_svg = nautilus_strcmp (file_info->mime_type, "image/svg") == 0;
+ gnome_vfs_file_info_unref (file_info);
return is_svg;
}
@@ -1651,7 +1651,7 @@ static GnomeVFSResult
get_cache_time (const char *file_uri, time_t *cache_time)
{
GnomeVFSURI *vfs_uri;
- GnomeVFSFileInfo file_info;
+ GnomeVFSFileInfo *file_info;
GnomeVFSResult result;
gboolean is_local;
@@ -1671,12 +1671,12 @@ get_cache_time (const char *file_uri, time_t *cache_time)
}
/* Gather the info and then compare modification times. */
- gnome_vfs_file_info_init (&file_info);
- result = gnome_vfs_get_file_info (file_uri, &file_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ file_info = gnome_vfs_file_info_new ();
+ result = gnome_vfs_get_file_info (file_uri, file_info, GNOME_VFS_FILE_INFO_DEFAULT);
if (result == GNOME_VFS_OK) {
- *cache_time = file_info.mtime;
+ *cache_time = file_info->mtime;
}
- gnome_vfs_file_info_clear (&file_info);
+ gnome_vfs_file_info_unref (file_info);
return result;
}
diff --git a/libnautilus-private/nautilus-preferences-item.c b/libnautilus-private/nautilus-preferences-item.c
index e07b847e4..97d1a1104 100644
--- a/libnautilus-private/nautilus-preferences-item.c
+++ b/libnautilus-private/nautilus-preferences-item.c
@@ -542,32 +542,30 @@ static const char *icon_file_name_suffixes[] =
static gboolean
has_image_file(const char *directory_uri, const char *dir_name, const char *required_file)
{
- char *temp_str, *base_uri;
+ char *temp_str, *base_uri_string;
guint index;
- GnomeVFSResult result;
- GnomeVFSFileInfo *file_info;
-
- file_info = gnome_vfs_file_info_new ();
+ gboolean result;
+ GnomeVFSURI *base_uri, *uri;
- temp_str = nautilus_make_path(directory_uri, dir_name);
- base_uri = nautilus_make_path(temp_str, required_file);
- g_free(temp_str);
+ temp_str = nautilus_make_path (directory_uri, dir_name);
+ base_uri_string = nautilus_make_path (temp_str, required_file);
+ base_uri = gnome_vfs_uri_new (base_uri_string);
+ g_free (temp_str);
+ g_free (base_uri_string);
+ result = FALSE;
for (index = 0; index < NAUTILUS_N_ELEMENTS (icon_file_name_suffixes); index++) {
- temp_str = g_strconcat (base_uri, icon_file_name_suffixes[index], NULL);
- gnome_vfs_file_info_init (file_info);
- result = gnome_vfs_get_file_info (temp_str, file_info, 0);
- g_free(temp_str);
- if (result == GNOME_VFS_OK) {
- g_free(base_uri);
- gnome_vfs_file_info_unref (file_info);
- return TRUE;
- }
+ uri = gnome_vfs_uri_append_string (base_uri, icon_file_name_suffixes[index]);
+ result = gnome_vfs_uri_exists (uri);
+ gnome_vfs_uri_unref (uri);
+ if (result) {
+ break;
+ }
}
- gnome_vfs_file_info_unref (file_info);
- g_free(base_uri);
- return FALSE;
+ gnome_vfs_uri_unref (base_uri);
+ g_free (base_uri);
+ return result;
}
/* add available icon themes to the theme list by iterating through the
diff --git a/libnautilus-private/nautilus-thumbnails.c b/libnautilus-private/nautilus-thumbnails.c
index 6d57b3f7b..39521d3d0 100644
--- a/libnautilus-private/nautilus-thumbnails.c
+++ b/libnautilus-private/nautilus-thumbnails.c
@@ -170,7 +170,7 @@ first_file_more_recent(const char* file_uri, const char* other_file_uri)
GnomeVFSURI *vfs_uri, *other_vfs_uri;
gboolean more_recent, is_local;
- GnomeVFSFileInfo file_info, other_file_info;
+ GnomeVFSFileInfo *file_info, *other_file_info;
/* if either file is remote, return FALSE. Eventually we'll make this async to fix this */
vfs_uri = gnome_vfs_uri_new(file_uri);
@@ -184,16 +184,16 @@ first_file_more_recent(const char* file_uri, const char* other_file_uri)
}
/* gather the info and then compare modification times */
- gnome_vfs_file_info_init (&file_info);
- gnome_vfs_get_file_info (file_uri, &file_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ file_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (file_uri, file_info, GNOME_VFS_FILE_INFO_DEFAULT);
- gnome_vfs_file_info_init (&other_file_info);
- gnome_vfs_get_file_info (other_file_uri, &other_file_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ other_file_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (other_file_uri, other_file_info, GNOME_VFS_FILE_INFO_DEFAULT);
- more_recent = file_info.mtime > other_file_info.mtime;
+ more_recent = file_info->mtime > other_file_info->mtime;
- gnome_vfs_file_info_clear (&file_info);
- gnome_vfs_file_info_clear (&other_file_info);
+ gnome_vfs_file_info_unref (file_info);
+ gnome_vfs_file_info_unref (other_file_info);
return more_recent;
}
diff --git a/src/nautilus-navigation-window-menus.c b/src/nautilus-navigation-window-menus.c
index 403096b81..1c0d31c9c 100644
--- a/src/nautilus-navigation-window-menus.c
+++ b/src/nautilus-navigation-window-menus.c
@@ -819,7 +819,8 @@ get_static_bookmarks_file_path (void)
char *update_uri, *built_in_uri;
char *user_directory_path;
gboolean update_exists, built_in_exists;
- GnomeVFSFileInfo update_info, built_in_info;
+ GnomeVFSFileInfo *update_info, *built_in_info;
+ char *result;
/* see if there is a static bookmarks file in the updates directory and get its mod-date */
user_directory_path = nautilus_get_user_directory ();
@@ -851,23 +852,28 @@ get_static_bookmarks_file_path (void)
/* both files exist, so use the one with the most recent mod-date */
update_uri = gnome_vfs_get_local_path_from_uri (update_xml_file_path);
- gnome_vfs_file_info_init (&update_info);
- gnome_vfs_get_file_info (update_uri, &update_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ update_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (update_uri, update_info, GNOME_VFS_FILE_INFO_DEFAULT);
g_free (update_uri);
built_in_uri = gnome_vfs_get_local_path_from_uri (built_in_xml_file_path);
- gnome_vfs_file_info_init (&built_in_info);
- gnome_vfs_get_file_info (built_in_uri, &built_in_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ built_in_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (built_in_uri, built_in_info, GNOME_VFS_FILE_INFO_DEFAULT);
g_free (built_in_uri);
/* see which is most recent */
- if (update_info.mtime > built_in_info.mtime) {
+ if (update_info->mtime <= built_in_info->mtime) {
+ result = built_in_xml_file_path;
+ g_free (update_xml_file_path);
+ } else {
+ result = update_xml_file_path;
g_free (built_in_xml_file_path);
- return update_xml_file_path;
- }
-
- g_free (update_xml_file_path);
- return built_in_xml_file_path;
+ }
+
+ gnome_vfs_file_info_unref (update_info);
+ gnome_vfs_file_info_unref (built_in_info);
+
+ return result;
}
static void
diff --git a/src/nautilus-window-menus.c b/src/nautilus-window-menus.c
index 403096b81..1c0d31c9c 100644
--- a/src/nautilus-window-menus.c
+++ b/src/nautilus-window-menus.c
@@ -819,7 +819,8 @@ get_static_bookmarks_file_path (void)
char *update_uri, *built_in_uri;
char *user_directory_path;
gboolean update_exists, built_in_exists;
- GnomeVFSFileInfo update_info, built_in_info;
+ GnomeVFSFileInfo *update_info, *built_in_info;
+ char *result;
/* see if there is a static bookmarks file in the updates directory and get its mod-date */
user_directory_path = nautilus_get_user_directory ();
@@ -851,23 +852,28 @@ get_static_bookmarks_file_path (void)
/* both files exist, so use the one with the most recent mod-date */
update_uri = gnome_vfs_get_local_path_from_uri (update_xml_file_path);
- gnome_vfs_file_info_init (&update_info);
- gnome_vfs_get_file_info (update_uri, &update_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ update_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (update_uri, update_info, GNOME_VFS_FILE_INFO_DEFAULT);
g_free (update_uri);
built_in_uri = gnome_vfs_get_local_path_from_uri (built_in_xml_file_path);
- gnome_vfs_file_info_init (&built_in_info);
- gnome_vfs_get_file_info (built_in_uri, &built_in_info, GNOME_VFS_FILE_INFO_DEFAULT);
+ built_in_info = gnome_vfs_file_info_new ();
+ gnome_vfs_get_file_info (built_in_uri, built_in_info, GNOME_VFS_FILE_INFO_DEFAULT);
g_free (built_in_uri);
/* see which is most recent */
- if (update_info.mtime > built_in_info.mtime) {
+ if (update_info->mtime <= built_in_info->mtime) {
+ result = built_in_xml_file_path;
+ g_free (update_xml_file_path);
+ } else {
+ result = update_xml_file_path;
g_free (built_in_xml_file_path);
- return update_xml_file_path;
- }
-
- g_free (update_xml_file_path);
- return built_in_xml_file_path;
+ }
+
+ gnome_vfs_file_info_unref (update_info);
+ gnome_vfs_file_info_unref (built_in_info);
+
+ return result;
}
static void