[gnome-commander] Propagate the error of the rename function
- From: Uwe Scholz <uwescholz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-commander] Propagate the error of the rename function
- Date: Thu, 24 Jun 2021 18:07:23 +0000 (UTC)
commit 0908560d6cdb8f5ce898ef8d388d2105e7dc91e9
Author: Uwe Scholz <u scholz83 gmx de>
Date: Thu Jun 24 19:53:09 2021 +0200
Propagate the error of the rename function
src/dialogs/gnome-cmd-advrename-dialog.cc | 8 ++++----
src/dialogs/gnome-cmd-file-props-dialog.cc | 6 +++---
src/dialogs/gnome-cmd-rename-dialog.cc | 12 ++++++++----
src/gnome-cmd-file.cc | 22 +++++++++++++---------
src/gnome-cmd-file.h | 2 +-
5 files changed, 29 insertions(+), 21 deletions(-)
---
diff --git a/src/dialogs/gnome-cmd-advrename-dialog.cc b/src/dialogs/gnome-cmd-advrename-dialog.cc
index b7d698c9..3187120f 100644
--- a/src/dialogs/gnome-cmd-advrename-dialog.cc
+++ b/src/dialogs/gnome-cmd-advrename-dialog.cc
@@ -459,17 +459,17 @@ void GnomeCmdAdvrenameDialog::Private::on_dialog_response (GnomeCmdAdvrenameDial
COL_NEW_NAME, &new_name,
-1);
- GnomeVFSResult result = GNOME_VFS_OK;
+ gboolean result = FALSE;
if (strcmp (g_file_info_get_display_name(f->gFileInfo), new_name) != 0)
- result = f->rename(new_name);
+ result = f->rename(new_name, nullptr);
gtk_list_store_set (GTK_LIST_STORE (dialog->files), &i,
COL_NAME, f->get_name(),
- COL_RENAME_FAILED, result!=GNOME_VFS_OK,
+ COL_RENAME_FAILED, !result,
-1);
- if (!new_focused_file_name && (result == GNOME_VFS_OK)
+ if (!new_focused_file_name && result
&& !strcmp(old_focused_file_name, g_file_info_get_display_name(f->gFileInfo)))
new_focused_file_name = g_strdup(new_name);
diff --git a/src/dialogs/gnome-cmd-file-props-dialog.cc b/src/dialogs/gnome-cmd-file-props-dialog.cc
index 5e0fc1b3..d914331d 100644
--- a/src/dialogs/gnome-cmd-file-props-dialog.cc
+++ b/src/dialogs/gnome-cmd-file-props-dialog.cc
@@ -197,13 +197,13 @@ static void on_dialog_ok (GtkButton *btn, GnomeCmdFilePropsDialogPrivate *data)
if (strcmp (filename, data->f->get_name()) != 0)
{
- result = data->f->rename(filename);
+ retValue = data->f->rename(filename, &error);
- if (result==GNOME_VFS_OK)
+ if (retValue)
main_win->fs(ACTIVE)->file_list()->focus_file(filename, TRUE);
}
- if (result == GNOME_VFS_OK)
+ if (result == GNOME_VFS_OK && retValue)
{
auto perms = gnome_cmd_chmod_component_get_perms (GNOME_CMD_CHMOD_COMPONENT (data->chmod_component));
diff --git a/src/dialogs/gnome-cmd-rename-dialog.cc b/src/dialogs/gnome-cmd-rename-dialog.cc
index b6cca36c..bbf1cf48 100644
--- a/src/dialogs/gnome-cmd-rename-dialog.cc
+++ b/src/dialogs/gnome-cmd-rename-dialog.cc
@@ -59,17 +59,21 @@ static gboolean on_dialog_keypressed (GtkWidget *widget, GdkEventKey *event, gpo
case GDK_Return:
case GDK_KP_Enter:
{
+ GError *error = nullptr;
gchar *new_fname = g_strdup (gtk_entry_get_text (dialog->priv->textbox));
- GnomeVFSResult result = dialog->priv->f->rename(new_fname);
+ gboolean result = dialog->priv->f->rename(new_fname, &error);
- if (result==GNOME_VFS_OK)
+ if (result)
main_win->fs(ACTIVE)->file_list()->focus_file(new_fname, TRUE);
dialog->priv->f->unref();
gtk_widget_destroy (widget);
- if (result!=GNOME_VFS_OK)
- gnome_cmd_show_message (NULL, new_fname, gnome_vfs_result_to_string (result));
+ if (!result)
+ {
+ gnome_cmd_show_message (NULL, new_fname, error->message);
+ g_error_free(error);
+ }
g_free (new_fname);
}
diff --git a/src/gnome-cmd-file.cc b/src/gnome-cmd-file.cc
index 217be186..35a992cc 100644
--- a/src/gnome-cmd-file.cc
+++ b/src/gnome-cmd-file.cc
@@ -448,7 +448,7 @@ gboolean GnomeCmdFile::chown(uid_t uid, gid_t gid, GError **error)
}
-GnomeVFSResult GnomeCmdFile::rename(const gchar *new_name)
+gboolean GnomeCmdFile::rename(const gchar *new_name, GError **error)
{
g_return_val_if_fail (info, GNOME_VFS_ERROR_CORRUPTED_DATA);
@@ -457,16 +457,16 @@ GnomeVFSResult GnomeCmdFile::rename(const gchar *new_name)
new_info->name = const_cast<gchar *> (new_name);
- GError *error;
- error = nullptr;
+ GError *tmp_error;
+ tmp_error = nullptr;
- auto newgFile = g_file_set_display_name (this->gFile, new_name, nullptr, &error);
+ auto newgFile = g_file_set_display_name (this->gFile, new_name, nullptr, &tmp_error);
- if (error || newgFile == nullptr)
+ if (tmp_error || newgFile == nullptr)
{
- g_message ("rename to \"%s\" failed: %s", new_name, error->message);
- g_error_free (error);
- return GNOME_VFS_OK;
+ g_message ("rename to \"%s\" failed: %s", new_name, tmp_error->message);
+ g_propagate_error (error, tmp_error);
+ return FALSE;
}
g_object_unref(this->gFile);
@@ -478,6 +478,10 @@ GnomeVFSResult GnomeCmdFile::rename(const gchar *new_name)
auto result = gnome_vfs_get_file_info_uri (newUri, new_info, infoOpts);
gnome_vfs_uri_unref (newUri);
+ //ToDo: When migrating to GIO, propagate the error out of this function like done above.
+ if (result!=GNOME_VFS_OK)
+ return false;
+
if (result==GNOME_VFS_OK && has_parent_dir (this))
{
gchar *old_uri_str = get_uri_str();
@@ -488,7 +492,7 @@ GnomeVFSResult GnomeCmdFile::rename(const gchar *new_name)
gnome_cmd_dir_update_path (GNOME_CMD_DIR (this));
}
- return result;
+ return true;
}
diff --git a/src/gnome-cmd-file.h b/src/gnome-cmd-file.h
index d7664303..da71aea7 100644
--- a/src/gnome-cmd-file.h
+++ b/src/gnome-cmd-file.h
@@ -92,7 +92,7 @@ struct GnomeCmdFile
gboolean chmod(guint32 permissions, GError **error);
gboolean chown(uid_t uid, gid_t gid, GError **error);
- GnomeVFSResult rename(const gchar *new_name);
+ gboolean rename(const gchar *new_name, GError **error);
void update_info(GnomeVFSFileInfo *info);
void update_gFileInfo(GFileInfo *gFileInfo);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]