diff options
author | António Fernandes <antoniof@gnome.org> | 2020-05-16 22:56:07 +0100 |
---|---|---|
committer | Ondrej Holy <oholy@redhat.com> | 2021-01-25 10:54:11 +0000 |
commit | d0882432ab787aaf05bcd46a2111ac993bcaf80d (patch) | |
tree | 814baa1be980ddf495274bf38f77ba81c8b035ab | |
parent | c7b5e34e99b4d499b4ea7b1f2d5e0d98142c80de (diff) | |
download | nautilus-d0882432ab787aaf05bcd46a2111ac993bcaf80d.tar.gz |
files-view: Cleanup run_script() and its helpers
Drop unused parameters, consolidate code, sprinkle autocleanup variables.
-rw-r--r-- | src/nautilus-files-view.c | 104 |
1 files changed, 33 insertions, 71 deletions
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index 9746b5c51..76fce7a99 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -5123,11 +5123,8 @@ static char ** get_file_names_as_parameter_array (GList *selection, NautilusDirectory *model) { - NautilusFile *file; char **parameters; - GList *node; - GFile *file_location; - GFile *model_location; + g_autoptr (GFile) model_location = NULL; int i; if (model == NULL) @@ -5139,9 +5136,11 @@ get_file_names_as_parameter_array (GList *selection, model_location = nautilus_directory_get_location (model); - for (node = selection, i = 0; node != NULL; node = node->next, i++) + i = 0; + for (GList *node = selection; node != NULL; node = node->next, i++) { - file = NAUTILUS_FILE (node->data); + g_autoptr (GFile) file_location = NULL; + NautilusFile *file = NAUTILUS_FILE (node->data); if (!nautilus_file_is_local_or_fuse (file)) { @@ -5150,33 +5149,26 @@ get_file_names_as_parameter_array (GList *selection, return NULL; } - file_location = nautilus_file_get_location (NAUTILUS_FILE (node->data)); + file_location = nautilus_file_get_location (file); parameters[i] = g_file_get_relative_path (model_location, file_location); if (parameters[i] == NULL) { parameters[i] = g_file_get_path (file_location); } - g_object_unref (file_location); } - g_object_unref (model_location); - parameters[i] = NULL; return parameters; } static char * -get_file_paths_or_uris_as_newline_delimited_string (NautilusFilesView *view, - GList *selection, - gboolean get_paths) +get_file_paths_or_uris_as_newline_delimited_string (GList *selection, + gboolean get_paths) { - char *path; - char *result; GString *expanding_string; - GList *node; expanding_string = g_string_new (""); - for (node = selection; node != NULL; node = node->next) + for (GList *node = selection; node != NULL; node = node->next) { NautilusFile *file = NAUTILUS_FILE (node->data); g_autofree gchar *uri = NULL; @@ -5189,6 +5181,8 @@ get_file_paths_or_uris_as_newline_delimited_string (NautilusFilesView *view, if (get_paths) { + g_autofree gchar *path = NULL; + if (!nautilus_file_is_local_or_fuse (file)) { g_string_free (expanding_string, TRUE); @@ -5199,7 +5193,6 @@ get_file_paths_or_uris_as_newline_delimited_string (NautilusFilesView *view, if (path != NULL) { g_string_append (expanding_string, path); - g_free (path); g_string_append (expanding_string, "\n"); } } @@ -5210,43 +5203,19 @@ get_file_paths_or_uris_as_newline_delimited_string (NautilusFilesView *view, } } - result = expanding_string->str; - g_string_free (expanding_string, FALSE); - - return result; + return g_string_free (expanding_string, FALSE); } static char * -get_file_paths_as_newline_delimited_string (NautilusFilesView *view, - GList *selection) +get_file_paths_as_newline_delimited_string (GList *selection) { - return get_file_paths_or_uris_as_newline_delimited_string (view, selection, TRUE); + return get_file_paths_or_uris_as_newline_delimited_string (selection, TRUE); } static char * -get_file_uris_as_newline_delimited_string (NautilusFilesView *view, - GList *selection) +get_file_uris_as_newline_delimited_string (GList *selection) { - return get_file_paths_or_uris_as_newline_delimited_string (view, selection, FALSE); -} - -/* returns newly allocated strings for setting the environment variables */ -static void -get_strings_for_environment_variables (NautilusFilesView *view, - GList *selected_files, - char **file_paths, - char **uris, - char **uri) -{ - NautilusFilesViewPrivate *priv; - - priv = nautilus_files_view_get_instance_private (view); - - *file_paths = get_file_paths_as_newline_delimited_string (view, selected_files); - - *uris = get_file_uris_as_newline_delimited_string (view, selected_files); - - *uri = nautilus_directory_get_uri (priv->model); + return get_file_paths_or_uris_as_newline_delimited_string (selection, FALSE); } /* @@ -5257,27 +5226,26 @@ static void set_script_environment_variables (NautilusFilesView *view, GList *selected_files) { - char *file_paths; - char *uris; - char *uri; - char *geometry_string; + g_autofree gchar *file_paths = NULL; + g_autofree gchar *uris = NULL; + g_autofree gchar *uri = NULL; + g_autofree gchar *geometry_string = NULL; + NautilusFilesViewPrivate *priv; - get_strings_for_environment_variables (view, selected_files, - &file_paths, &uris, &uri); + priv = nautilus_files_view_get_instance_private (view); + file_paths = get_file_paths_as_newline_delimited_string (selected_files); g_setenv ("NAUTILUS_SCRIPT_SELECTED_FILE_PATHS", file_paths, TRUE); - g_free (file_paths); + uris = get_file_uris_as_newline_delimited_string (selected_files); g_setenv ("NAUTILUS_SCRIPT_SELECTED_URIS", uris, TRUE); - g_free (uris); + uri = nautilus_directory_get_uri (priv->model); g_setenv ("NAUTILUS_SCRIPT_CURRENT_URI", uri, TRUE); - g_free (uri); geometry_string = eel_gtk_window_get_geometry_string (GTK_WINDOW (nautilus_files_view_get_containing_window (view))); g_setenv ("NAUTILUS_SCRIPT_WINDOW_GEOMETRY", geometry_string, TRUE); - g_free (geometry_string); } /* Unset all the special script environment variables. */ @@ -5295,15 +5263,15 @@ run_script (GSimpleAction *action, GVariant *state, gpointer user_data) { - NautilusFilesViewPrivate *priv; ScriptLaunchParameters *launch_parameters; - GdkScreen *screen; + NautilusFilesViewPrivate *priv; + g_autofree gchar *file_uri = NULL; + g_autofree gchar *local_file_path = NULL; + g_autofree gchar *quoted_path = NULL; + g_autofree gchar *old_working_dir = NULL; g_autolist (NautilusFile) selection = NULL; - char *file_uri; - g_autofree char *local_file_path = NULL; - char *quoted_path; - char *old_working_dir; - char **parameters; + g_auto (GStrv) parameters = NULL; + GdkScreen *screen; launch_parameters = (ScriptLaunchParameters *) user_data; priv = nautilus_files_view_get_instance_private (launch_parameters->directory_view); @@ -5311,8 +5279,6 @@ run_script (GSimpleAction *action, file_uri = nautilus_file_get_uri (launch_parameters->file); local_file_path = g_filename_from_uri (file_uri, NULL, NULL); g_assert (local_file_path != NULL); - g_free (file_uri); - quoted_path = g_shell_quote (local_file_path); old_working_dir = change_to_view_directory (launch_parameters->directory_view); @@ -5320,8 +5286,7 @@ run_script (GSimpleAction *action, selection = nautilus_view_get_selection (NAUTILUS_VIEW (launch_parameters->directory_view)); set_script_environment_variables (launch_parameters->directory_view, selection); - parameters = get_file_names_as_parameter_array (selection, - priv->model); + parameters = get_file_names_as_parameter_array (selection, priv->model); screen = gtk_widget_get_screen (GTK_WIDGET (launch_parameters->directory_view)); @@ -5330,12 +5295,9 @@ run_script (GSimpleAction *action, nautilus_launch_application_from_command_array (screen, quoted_path, FALSE, (const char * const *) parameters); - g_strfreev (parameters); unset_script_environment_variables (); g_chdir (old_working_dir); - g_free (old_working_dir); - g_free (quoted_path); } static void |