diff options
Diffstat (limited to 'libcaja-private/caja-file-operations.c')
-rw-r--r-- | libcaja-private/caja-file-operations.c | 123 |
1 files changed, 76 insertions, 47 deletions
diff --git a/libcaja-private/caja-file-operations.c b/libcaja-private/caja-file-operations.c index eb62c7b0..dac74145 100644 --- a/libcaja-private/caja-file-operations.c +++ b/libcaja-private/caja-file-operations.c @@ -296,7 +296,6 @@ format_time (int seconds) { int minutes; int hours; - char *res; if (seconds < 0) { /* Just to make sure... */ @@ -316,6 +315,7 @@ format_time (int seconds) if (seconds < 60*60*4) { char *h, *m; + char *res; minutes = (seconds - hours * 60 * 60) / 60; @@ -950,7 +950,6 @@ init_common (gsize job_size, gboolean should_start, gboolean can_pause) { CommonJob *common; - GdkScreen *screen; /* expected warning with Clang static analyzer: * * "Cast a region whose size is not a multiple of the destination type size" * @@ -972,6 +971,8 @@ init_common (gsize job_size, common->inhibit_cookie = -1; common->screen_num = 0; if (parent_window) { + GdkScreen *screen; + screen = gtk_widget_get_screen (GTK_WIDGET (parent_window)); common->screen_num = gdk_x11_screen_get_screen_number (screen); } @@ -1095,7 +1096,6 @@ static gboolean do_run_simple_dialog (gpointer _data) { RunSimpleDialogData *data = _data; - const char *button_title; GtkWidget *dialog; int result; int response_id; @@ -1115,6 +1115,8 @@ do_run_simple_dialog (gpointer _data) for (response_id = 0; data->button_titles[response_id] != NULL; response_id++) { + const char *button_title; + button_title = data->button_titles[response_id]; if (!data->show_all && is_all_button_text (button_title)) { continue; @@ -1501,8 +1503,7 @@ report_delete_progress (CommonJob *job, TransferInfo *transfer_info) { int files_left; - double elapsed, transfer_rate; - int remaining_time; + double elapsed; gint64 now; char *files_left_s; @@ -1534,6 +1535,9 @@ report_delete_progress (CommonJob *job, caja_progress_info_set_details (job->progress, files_left_s); } else { char *details, *time_left_s; + int remaining_time; + double transfer_rate; + transfer_rate = transfer_info->num_files / elapsed; remaining_time = files_left / transfer_rate; @@ -1789,10 +1793,10 @@ static void delete_files (CommonJob *job, GList *files, int *files_skipped) { GList *l; - GFile *file; SourceInfo source_info; TransferInfo transfer_info; gboolean skipped_file; + GFile *file = NULL; if (job_aborted (job)) { return; @@ -1953,13 +1957,14 @@ static gboolean delete_job_done (gpointer user_data) { DeleteJob *job; - GHashTable *debuting_uris; job = user_data; g_list_free_full (job->files, g_object_unref); if (job->done_callback) { + GHashTable *debuting_uris; + debuting_uris = g_hash_table_new_full (g_file_hash, (GEqualFunc)g_file_equal, g_object_unref, NULL); job->done_callback (debuting_uris, job->user_cancel, job->done_callback_data); g_hash_table_unref (debuting_uris); @@ -1981,13 +1986,13 @@ delete_job (GIOSchedulerJob *io_job, GList *to_trash_files; GList *to_delete_files; GList *l; - GFile *file; gboolean confirmed; CommonJob *common; gboolean must_confirm_delete_in_trash; gboolean must_confirm_delete; gboolean must_confirm_trash; int files_skipped; + GFile *file = NULL; common = (CommonJob *)job; common->io_job = io_job; @@ -2142,7 +2147,6 @@ unmount_mount_callback (GObject *source_object, { UnmountData *data = user_data; GError *error; - char *primary; gboolean unmounted; error = NULL; @@ -2160,6 +2164,8 @@ unmount_mount_callback (GObject *source_object, if (! unmounted) { if (error && error->code != G_IO_ERROR_FAILED_HANDLED) { + char *primary; + if (data->eject) { primary = f (_("Unable to eject %V"), source_object); } else { @@ -2217,7 +2223,6 @@ dir_has_files (GFile *dir) { GFileEnumerator *enumerator; gboolean res; - GFileInfo *file_info; res = FALSE; @@ -2226,6 +2231,8 @@ dir_has_files (GFile *dir) 0, NULL, NULL); if (enumerator) { + GFileInfo *file_info; + file_info = g_file_enumerator_next_file (enumerator, NULL, NULL); if (file_info != NULL) { res = TRUE; @@ -2244,8 +2251,6 @@ static GList * get_trash_dirs_for_mount (GMount *mount) { GFile *root; - GFile *trash; - char *relpath; GList *list; root = g_mount_get_root (mount); @@ -2256,6 +2261,9 @@ get_trash_dirs_for_mount (GMount *mount) list = NULL; if (g_file_is_native (root)) { + GFile *trash; + char *relpath; + relpath = g_strdup_printf (".Trash/%d", getuid ()); trash = g_file_resolve_relative_path (root, relpath); g_free (relpath); @@ -2283,9 +2291,9 @@ get_trash_dirs_for_mount (GMount *mount) static gboolean has_trash_files (GMount *mount) { - GList *dirs, *l; - GFile *dir; gboolean res; + GList *dirs, *l; + GFile *dir = NULL; dirs = get_trash_dirs_for_mount (mount); @@ -2367,7 +2375,6 @@ caja_file_operations_unmount_mount_full (GtkWindow *parent_ gpointer callback_data) { UnmountData *data; - int response; data = g_new0 (UnmountData, 1); data->callback = callback; @@ -2381,6 +2388,8 @@ caja_file_operations_unmount_mount_full (GtkWindow *parent_ data->mount = g_object_ref (mount); if (check_trash && has_trash_files (mount)) { + int response; + response = prompt_empty_trash (parent_window); if (response == GTK_RESPONSE_ACCEPT) { @@ -2441,13 +2450,14 @@ volume_mount_cb (GObject *source_object, GObject *mount_callback_data_object; GMountOperation *mount_op = user_data; GError *error; - char *primary; - char *name; error = NULL; caja_allow_autorun_for_volume_finish (G_VOLUME (source_object)); if (!g_volume_mount_finish (G_VOLUME (source_object), res, &error)) { if (error->code != G_IO_ERROR_FAILED_HANDLED) { + char *name; + char *primary; + name = g_volume_get_name (G_VOLUME (source_object)); primary = g_strdup_printf (_("Unable to mount %s"), name); g_free (name); @@ -2805,7 +2815,7 @@ scan_sources (GList *files, OpKind kind) { GList *l; - GFile *file; + GFile *file = NULL; memset (source_info, 0, sizeof (SourceInfo)); source_info->op = kind; @@ -2989,7 +2999,6 @@ report_copy_progress (CopyMoveJob *copy_job, int files_left; goffset total_size; double elapsed, transfer_rate; - int remaining_time; guint64 now; CommonJob *job; gboolean is_move; @@ -3091,7 +3100,9 @@ report_copy_progress (CopyMoveJob *copy_job, s = f (_("%S of %S"), transfer_info->num_bytes, total_size); caja_progress_info_take_details (job->progress, s); } else { + int remaining_time; char *s; + remaining_time = (total_size - transfer_info->num_bytes) / transfer_rate; /* To translators: %S will expand to a size like "2 bytes" or "3 MB", %T to a time duration like @@ -3208,8 +3219,7 @@ get_unique_target_file (GFile *src, const char *dest_fs_type, int count) { - const char *editname, *end; - char *basename, *new_name; + char *new_name; GFileInfo *info; GFile *dest; int max_length; @@ -3221,6 +3231,8 @@ get_unique_target_file (GFile *src, G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME, 0, NULL, NULL); if (info != NULL) { + const char *editname; + editname = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME); if (editname != NULL) { @@ -3234,6 +3246,8 @@ get_unique_target_file (GFile *src, } if (dest == NULL) { + char *basename; + basename = g_file_get_basename (src); if (g_utf8_validate (basename, -1, NULL)) { @@ -3244,6 +3258,8 @@ get_unique_target_file (GFile *src, } if (dest == NULL) { + const char *end; + end = strrchr (basename, '.'); if (end != NULL) { count += atoi (end + 1); @@ -3266,8 +3282,7 @@ get_target_file_for_link (GFile *src, const char *dest_fs_type, int count) { - const char *editname; - char *basename, *new_name; + char *new_name; GFileInfo *info; GFile *dest; int max_length; @@ -3279,6 +3294,8 @@ get_target_file_for_link (GFile *src, G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME, 0, NULL, NULL); if (info != NULL) { + const char *editname; + editname = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME); if (editname != NULL) { @@ -3292,6 +3309,8 @@ get_target_file_for_link (GFile *src, } if (dest == NULL) { + char *basename; + basename = g_file_get_basename (src); make_file_name_valid_for_dest_fs (basename, dest_fs_type); @@ -3325,18 +3344,19 @@ get_target_file (GFile *src, const char *dest_fs_type, gboolean same_fs) { - char *basename; GFile *dest; - GFileInfo *info; - char *copyname; dest = NULL; if (!same_fs) { + GFileInfo *info; + info = g_file_query_info (src, G_FILE_ATTRIBUTE_STANDARD_COPY_NAME, 0, NULL, NULL); if (info) { + char *copyname; + copyname = g_strdup (g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_COPY_NAME)); if (copyname) { @@ -3350,6 +3370,8 @@ get_target_file (GFile *src, } if (dest == NULL) { + char *basename; + basename = g_file_get_basename (src); make_file_name_valid_for_dest_fs (basename, dest_fs_type); dest = g_file_get_child (dest_dir, basename); @@ -3362,7 +3384,6 @@ get_target_file (GFile *src, static gboolean has_fs_id (GFile *file, const char *fs_id) { - const char *id; GFileInfo *info; gboolean res; @@ -3373,6 +3394,8 @@ has_fs_id (GFile *file, const char *fs_id) NULL, NULL); if (info) { + const char *id; + id = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_ID_FILESYSTEM); if (id && strcmp (id, fs_id) == 0) { @@ -4514,7 +4537,6 @@ copy_files (CopyMoveJob *job, { CommonJob *common; GList *l; - GFile *src; gboolean same_fs; int i; GdkPoint *point; @@ -4523,8 +4545,8 @@ copy_files (CopyMoveJob *job, GFile *dest; GFile *source_dir; char *dest_fs_type; - GFileInfo *inf; gboolean readonly_source_fs; + GFile *src = NULL; dest_fs_type = NULL; readonly_source_fs = FALSE; @@ -4536,6 +4558,8 @@ copy_files (CopyMoveJob *job, /* Query the source dir, not the file because if its a symlink we'll follow it */ source_dir = g_file_get_parent ((GFile *) job->files->data); if (source_dir) { + GFileInfo *inf; + inf = g_file_query_filesystem_info (source_dir, "filesystem::readonly", NULL, NULL); if (inf != NULL) { readonly_source_fs = g_file_info_get_attribute_boolean (inf, "filesystem::readonly"); @@ -4792,8 +4816,8 @@ move_copy_file_callback_new (GFile *file, static GList * get_files_from_fallbacks (GList *fallbacks) { - MoveFileCopyFallback *fallback; GList *res, *l; + MoveFileCopyFallback *fallback = NULL; res = NULL; for (l = fallbacks; l != NULL; l = l->next) { @@ -5032,12 +5056,12 @@ move_files_prepare (CopyMoveJob *job, { CommonJob *common; GList *l; - GFile *src; gboolean same_fs; gboolean last_item; int i; GdkPoint *point; int total, left; + GFile *src = NULL; common = &job->common; @@ -5094,13 +5118,14 @@ move_files (CopyMoveJob *job, { CommonJob *common; GList *l; - GFile *src; gboolean same_fs; int i; GdkPoint *point; gboolean skipped_file; MoveFileCopyFallback *fallback; -common = &job->common; + GFile *src = NULL; + + common = &job->common; report_copy_progress (job, source_info, transfer_info); @@ -5108,7 +5133,7 @@ common = &job->common; for (l = fallbacks; l != NULL && !job_aborted (common); l = l->next) { - caja_progress_info_get_ready (common->progress); + caja_progress_info_get_ready (common->progress); fallback = l->data; src = fallback->file; @@ -5666,19 +5691,16 @@ set_permissions_file (SetPermissionsJob *job, GFileInfo *info) { CommonJob *common; - GFileInfo *child_info; gboolean free_info; guint32 current; guint32 value; guint32 mask; - GFileEnumerator *enumerator; - GFile *child; common = (CommonJob *)job; caja_progress_info_pulse_progress (common->progress); - caja_progress_info_get_ready (common->progress); + caja_progress_info_get_ready (common->progress); free_info = FALSE; if (info == NULL) { @@ -5717,8 +5739,9 @@ set_permissions_file (SetPermissionsJob *job, common->cancellable, NULL); } - if (!job_aborted (common) && - g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) { + if (!job_aborted (common) && g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) { + GFileEnumerator *enumerator; + enumerator = g_file_enumerate_children (file, G_FILE_ATTRIBUTE_STANDARD_NAME"," G_FILE_ATTRIBUTE_STANDARD_TYPE"," @@ -5727,6 +5750,9 @@ set_permissions_file (SetPermissionsJob *job, common->cancellable, NULL); if (enumerator) { + GFile *child = NULL; + GFileInfo *child_info = NULL; + while (!job_aborted (common) && (child_info = g_file_enumerator_next_file (enumerator, common->cancellable, NULL)) != NULL) { child = g_file_get_child (file, @@ -5814,7 +5840,7 @@ location_list_from_uri_list (const GList *uris) { const GList *l; GList *files; - GFile *f; + GFile *f = NULL; files = NULL; for (l = uris; l != NULL; l = l->next) { @@ -5851,7 +5877,7 @@ caja_file_operations_copy_move (const GList *item_uris, { GList *locations; GList *p; - GFile *dest, *src_dir; + GFile *dest; GtkWindow *parent_window; gboolean target_is_mapping; gboolean have_nonmapping_source; @@ -5888,6 +5914,8 @@ caja_file_operations_copy_move (const GList *item_uris, } if (copy_action == GDK_ACTION_COPY) { + GFile *src_dir; + src_dir = g_file_get_parent (locations->data); if (target_dir == NULL || (src_dir != NULL && @@ -6370,17 +6398,15 @@ delete_trash_file (CommonJob *job, gboolean del_file, gboolean del_children) { - GFileInfo *info; - GFile *child; - GFileEnumerator *enumerator; - - caja_progress_info_get_ready (job->progress); + caja_progress_info_get_ready (job->progress); if (job_aborted (job)) { return; } if (del_children) { + GFileEnumerator *enumerator; + enumerator = g_file_enumerate_children (file, G_FILE_ATTRIBUTE_STANDARD_NAME "," G_FILE_ATTRIBUTE_STANDARD_TYPE, @@ -6388,6 +6414,9 @@ delete_trash_file (CommonJob *job, job->cancellable, NULL); if (enumerator) { + GFileInfo *info = NULL; + GFile *child = NULL; + while (!job_aborted (job) && (info = g_file_enumerator_next_file (enumerator, job->cancellable, NULL)) != NULL) { child = g_file_get_child (file, |