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;
+}
+