Mercurial > geeqie
diff src/utilops.c @ 44:458e396d3f35
Wed May 18 19:36:49 2005 John Ellis <johne@verizon.net>
* utilops.[ch] (file_util_rename_dir): New utility to rename a folder,
does proper checking for existing folder to avoid clobbering an
existing folder.
* view_dir_list.c, view_dir_tree.c: Use new utility above when renaming
a folder to fix possible clobbering of an existing folder with the
same name as the requested name.
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
##### an offical release when making enhancements and translation updates. #####
author | gqview |
---|---|
date | Wed, 18 May 2005 23:52:16 +0000 |
parents | 606fcf461a68 |
children | ebbff299ad0d |
line wrap: on
line diff
--- a/src/utilops.c Mon May 16 01:49:51 2005 +0000 +++ b/src/utilops.c Wed May 18 23:52:16 2005 +0000 @@ -2453,3 +2453,43 @@ gtk_widget_show(GENERIC_DIALOG(fd)->dialog); } +gint file_util_rename_dir(const gchar *old_path, const gchar *new_path, GtkWidget *parent) +{ + const gchar *old_name; + const gchar *new_name; + + if (!old_path || !new_path || !isdir(old_path)) return FALSE; + + old_name = filename_from_path(old_path); + new_name = filename_from_path(new_path); + + if (isdir(new_path)) + { + gchar *text = g_strdup_printf(_("The folder:\n%s\nalready exists."), new_name); + file_util_warning_dialog(_("Folder exists"), text, GTK_STOCK_DIALOG_INFO, parent); + g_free(text); + + return FALSE; + } + + if (isname(new_path)) + { + gchar *text = g_strdup_printf(_("The path:\n%s\nalready exists as a file."), new_name); + file_util_warning_dialog(_("Rename failed"), text, GTK_STOCK_DIALOG_INFO,parent); + g_free(text); + + return FALSE; + } + + if (!rename_file(old_path, new_path)) + { + gchar *text = g_strdup_printf(_("Failed to rename %s to %s."), old_name, new_name); + file_util_warning_dialog("Rename failed", text, GTK_STOCK_DIALOG_ERROR, parent); + g_free(text); + + return FALSE; + } + + return TRUE; +} +