diff options
Diffstat (limited to 'app-arch/file-roller/files')
4 files changed, 0 insertions, 515 deletions
diff --git a/app-arch/file-roller/files/file-roller-3.8.4-extract-failure.patch b/app-arch/file-roller/files/file-roller-3.8.4-extract-failure.patch deleted file mode 100644 index fa9d68d2b7bd..000000000000 --- a/app-arch/file-roller/files/file-roller-3.8.4-extract-failure.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 40d2c298a7b938a974fe83b609293348a7d59bbd Mon Sep 17 00:00:00 2001 -From: Paolo Bacchilega <paobac@src.gnome.org> -Date: Sun, 29 Sep 2013 16:30:29 +0000 -Subject: libarchive: fixed failure when extracting some tar archives - -do not try to restore the creation time; -do not set the G_FILE_ATTRIBUTE_TIME_CREATED_USEC attribute - -[bug #709035] ---- -diff --git a/src/fr-archive-libarchive.c b/src/fr-archive-libarchive.c -index 37e3008..e465fe8 100644 ---- a/src/fr-archive-libarchive.c -+++ b/src/fr-archive-libarchive.c -@@ -428,15 +428,8 @@ _g_file_info_create_from_entry (struct archive_entry *entry, - - /* times */ - -- if (archive_entry_ctime_is_set (entry)) { -- g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_CREATED, archive_entry_ctime (entry)); -- g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_CREATED_USEC, archive_entry_ctime_nsec (entry)); -- } -- -- if (archive_entry_mtime_is_set (entry)) { -+ if (archive_entry_mtime_is_set (entry)) - g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED, archive_entry_mtime (entry)); -- g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC, archive_entry_mtime_nsec (entry)); -- } - - /* username */ - -@@ -529,7 +522,8 @@ restore_modification_time (GHashTable *created_folders, - - info = g_file_info_new (); - g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED, g_file_info_get_attribute_uint64 (original_info, G_FILE_ATTRIBUTE_TIME_MODIFIED)); -- g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC, g_file_info_get_attribute_uint32 (original_info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC)); -+ if (g_file_info_get_attribute_status (original_info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC) == G_FILE_ATTRIBUTE_STATUS_SET) -+ g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC, g_file_info_get_attribute_uint32 (original_info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC)); - result = _g_file_set_attributes_from_info (file, info, cancellable, error); - - g_object_unref (info); --- -cgit v0.9.2 diff --git a/app-arch/file-roller/files/file-roller-3.8.4-ignore-errors.patch b/app-arch/file-roller/files/file-roller-3.8.4-ignore-errors.patch deleted file mode 100644 index 712ba7497001..000000000000 --- a/app-arch/file-roller/files/file-roller-3.8.4-ignore-errors.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 80c36ae3c84dce8716eb5b74ddb8c73da5824f13 Mon Sep 17 00:00:00 2001 -From: Paolo Bacchilega <paobac@src.gnome.org> -Date: Fri, 11 Oct 2013 19:38:27 +0000 -Subject: ignore errors when setting file attributes - -[bug #709932] ---- -diff --git a/src/fr-archive-libarchive.c b/src/fr-archive-libarchive.c -index 44aaad2..19c5a1d 100644 ---- a/src/fr-archive-libarchive.c -+++ b/src/fr-archive-libarchive.c -@@ -751,7 +751,7 @@ extract_archive_thread (GSimpleAsyncResult *result, - GFileInfo *info; - - info = _g_file_info_create_from_entry (entry, extract_data); -- _g_file_set_attributes_from_info (file, info, cancellable, &load_data->error); -+ _g_file_set_attributes_from_info (file, info, cancellable, NULL); - g_hash_table_insert (created_folders, g_object_ref (file), g_object_ref (info)); - - g_object_unref (info); -@@ -774,7 +774,7 @@ extract_archive_thread (GSimpleAsyncResult *result, - if (r != ARCHIVE_EOF) - load_data->error = g_error_new_literal (FR_ERROR, FR_ERROR_COMMAND_ERROR, archive_error_string (a)); - else -- _g_file_set_attributes_from_entry (file, entry, extract_data, cancellable, &load_data->error); -+ _g_file_set_attributes_from_entry (file, entry, extract_data, cancellable, NULL); - break; - - case AE_IFLNK: -@@ -805,7 +805,7 @@ extract_archive_thread (GSimpleAsyncResult *result, - } - - if (load_data->error == NULL) -- restore_modification_time (created_folders, cancellable, &load_data->error); -+ restore_modification_time (created_folders, cancellable, NULL); - - if ((load_data->error == NULL) && (r != ARCHIVE_EOF)) - load_data->error = g_error_new_literal (FR_ERROR, FR_ERROR_COMMAND_ERROR, archive_error_string (a)); --- -cgit v0.9.2 diff --git a/app-arch/file-roller/files/file-roller-3.8.4-modifications-time.patch b/app-arch/file-roller/files/file-roller-3.8.4-modifications-time.patch deleted file mode 100644 index d6c7baa882fe..000000000000 --- a/app-arch/file-roller/files/file-roller-3.8.4-modifications-time.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 4bf8552f8e60c8d4ec65e360451c6998198052db Mon Sep 17 00:00:00 2001 -From: Paolo Bacchilega <paobac@src.gnome.org> -Date: Wed, 04 Sep 2013 10:02:11 +0000 -Subject: libarchive: restore the folders modification time correctly - -when honoring the skip_older and overwrite flags ignore the -directories created during the extraction process. - -[bug #697756] ---- -diff --git a/src/fr-archive-libarchive.c b/src/fr-archive-libarchive.c -index 3b73c48..37e3008 100644 ---- a/src/fr-archive-libarchive.c -+++ b/src/fr-archive-libarchive.c -@@ -33,6 +33,7 @@ - #include "file-utils.h" - #include "fr-error.h" - #include "fr-archive-libarchive.h" -+#include "gio-utils.h" - #include "glib-utils.h" - #include "typedefs.h" - -@@ -547,6 +548,7 @@ extract_archive_thread (GSimpleAsyncResult *result, - LoadData *load_data; - GHashTable *checked_folders; - GHashTable *created_folders; -+ GHashTable *folders_created_during_extraction; - struct archive *a; - struct archive_entry *entry; - int r; -@@ -556,6 +558,7 @@ extract_archive_thread (GSimpleAsyncResult *result, - - checked_folders = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, NULL); - created_folders = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, g_object_unref); -+ folders_created_during_extraction = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, NULL); - fr_archive_progress_set_total_files (load_data->archive, extract_data->n_files_to_extract); - - a = archive_read_new (); -@@ -590,11 +593,14 @@ extract_archive_thread (GSimpleAsyncResult *result, - archive_read_data_skip (a); - continue; - } -+ - file = g_file_get_child (extract_data->destination, relative_path); - - /* honor the skip_older and overwrite options */ - -- if (extract_data->skip_older || ! extract_data->overwrite) { -+ if ((g_hash_table_lookup (folders_created_during_extraction, file) == NULL) -+ && (extract_data->skip_older || ! extract_data->overwrite)) -+ { - GFileInfo *info; - - info = g_file_query_info (file, -@@ -652,7 +658,18 @@ extract_archive_thread (GSimpleAsyncResult *result, - && (g_hash_table_lookup (checked_folders, parent) == NULL) - && ! g_file_query_exists (parent, cancellable)) - { -- if (g_file_make_directory_with_parents (parent, cancellable, &load_data->error)) { -+ if (! _g_file_make_directory_with_parents (parent, -+ folders_created_during_extraction, -+ cancellable, -+ &local_error)) -+ { -+ if (! g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_EXISTS)) -+ load_data->error = local_error; -+ else -+ g_clear_error (&local_error); -+ } -+ -+ if (load_data->error == NULL) { - GFile *grandparent; - - grandparent = g_object_ref (parent); -@@ -736,7 +753,7 @@ extract_archive_thread (GSimpleAsyncResult *result, - load_data->error = g_error_copy (local_error); - g_error_free (local_error); - } -- else { -+ if (load_data->error == NULL) { - GFileInfo *info; - - info = _g_file_info_create_from_entry (entry, extract_data); -@@ -803,6 +820,7 @@ extract_archive_thread (GSimpleAsyncResult *result, - if (load_data->error != NULL) - g_simple_async_result_set_from_error (result, load_data->error); - -+ g_hash_table_unref (folders_created_during_extraction); - g_hash_table_unref (created_folders); - g_hash_table_unref (checked_folders); - archive_read_free (a); -diff --git a/src/gio-utils.c b/src/gio-utils.c -index 9d9f708..b317694 100644 ---- a/src/gio-utils.c -+++ b/src/gio-utils.c -@@ -1483,3 +1483,73 @@ _g_file_load_buffer_finish (GFile *file, - - return TRUE; - } -+ -+ -+static gboolean -+_g_file_make_directory_and_add_to_created_folders (GFile *file, -+ GHashTable *created_folders, -+ GCancellable *cancellable, -+ GError **error) -+{ -+ gboolean result; -+ -+ result = g_file_make_directory (file, cancellable, error); -+ if (result && (g_hash_table_lookup (created_folders, file) == NULL)) -+ g_hash_table_insert (created_folders, g_object_ref (file), GINT_TO_POINTER (1)); -+ -+ return result; -+} -+ -+ -+gboolean -+_g_file_make_directory_with_parents (GFile *file, -+ GHashTable *created_folders, -+ GCancellable *cancellable, -+ GError **error) -+{ -+ GError *local_error = NULL; -+ GFile *work_file = NULL; -+ GList *list = NULL, *l; -+ -+ g_return_val_if_fail (G_IS_FILE (file), FALSE); -+ -+ _g_file_make_directory_and_add_to_created_folders (file, created_folders, cancellable, &local_error); -+ if ((local_error == NULL) || (local_error->code != G_IO_ERROR_NOT_FOUND)) { -+ if (local_error != NULL) -+ g_propagate_error (error, local_error); -+ return local_error == NULL; -+ } -+ -+ work_file = g_object_ref (file); -+ while ((local_error != NULL) && (local_error->code == G_IO_ERROR_NOT_FOUND)) { -+ GFile *parent_file; -+ -+ parent_file = g_file_get_parent (work_file); -+ if (parent_file == NULL) -+ break; -+ -+ g_clear_error (&local_error); -+ _g_file_make_directory_and_add_to_created_folders (parent_file, created_folders, cancellable, &local_error); -+ -+ g_object_unref (work_file); -+ work_file = g_object_ref (parent_file); -+ -+ if ((local_error != NULL) && (local_error->code == G_IO_ERROR_NOT_FOUND)) -+ list = g_list_prepend (list, parent_file); /* Transfer ownership of ref */ -+ else -+ g_object_unref (parent_file); -+ } -+ -+ for (l = list; (local_error == NULL) && (l != NULL); l = l->next) -+ _g_file_make_directory_and_add_to_created_folders ((GFile *) l->data, created_folders, cancellable, &local_error); -+ -+ _g_object_unref (work_file); -+ _g_object_list_unref (list); -+ -+ if (local_error != NULL) { -+ g_propagate_error (error, local_error); -+ return FALSE; -+ } -+ -+ return _g_file_make_directory_and_add_to_created_folders (file, created_folders, cancellable, error); -+} -diff --git a/src/gio-utils.h b/src/gio-utils.h -index f784c41..0d7dd3c 100644 ---- a/src/gio-utils.h -+++ b/src/gio-utils.h -@@ -177,5 +177,10 @@ gboolean _g_file_load_buffer_finish (GFile *file, - char **buffer, - gsize *buffer_size, - GError **error); -+gboolean _g_file_make_directory_with_parents -+ (GFile *file, -+ GHashTable *created_folders, -+ GCancellable *cancellable, -+ GError **error); - - #endif /* _GIO_UTILS_H */ --- -cgit v0.9.2 diff --git a/app-arch/file-roller/files/file-roller-3.8.4-rar-5.patch b/app-arch/file-roller/files/file-roller-3.8.4-rar-5.patch deleted file mode 100644 index 73168e8b5982..000000000000 --- a/app-arch/file-roller/files/file-roller-3.8.4-rar-5.patch +++ /dev/null @@ -1,246 +0,0 @@ -From 065550880248b6a66c2fa3143adc0962d0473283 Mon Sep 17 00:00:00 2001 -From: Alexandre Rostovtsev <tetromino@gentoo.org> -Date: Sun, 8 Sep 2013 19:02:10 -0400 -Subject: [PATCH] rar: add support for rar-5.00 - -https://bugzilla.gnome.org/show_bug.cgi?id=707568 ---- - src/fr-command-rar.c | 153 +++++++++++++++++++++++++++++++++++++-------------- - src/fr-command-rar.h | 3 +- - 2 files changed, 115 insertions(+), 41 deletions(-) - -diff --git a/src/fr-command-rar.c b/src/fr-command-rar.c -index b67db1f..938bf8c 100644 ---- a/src/fr-command-rar.c -+++ b/src/fr-command-rar.c -@@ -84,6 +84,82 @@ mktime_from_string (char *date_s, - return mktime (&tm); - } - -+/* Sample rar-5 listing output: -+ -+RAR 5.00 beta 8 Copyright (c) 1993-2013 Alexander Roshal 22 Aug 2013 -+Trial version Type RAR -? for help -+ -+Archive: test.rar -+Details: RAR 4 -+ -+ Attributes Size Packed Ratio Date Time Checksum Name -+----------- --------- -------- ----- -------- ----- -------- ---- -+ -rw-r--r-- 453 304 67% 05-09-13 09:55 56DA5EF3 loremipsum.txt -+----------- --------- -------- ----- -------- ----- -------- ---- -+ 453 304 67% 1 -+ -+ * -+ * Sample rar-4 listing output: -+ * -+ -+RAR 4.20 Copyright (c) 1993-2012 Alexander Roshal 9 Jun 2012 -+Trial version Type RAR -? for help -+ -+Archive test.rar -+ -+Pathname/Comment -+ Size Packed Ratio Date Time Attr CRC Meth Ver -+------------------------------------------------------------------------------- -+ loremipsum.txt -+ 453 304 67% 05-09-13 09:55 -rw-r--r-- 56DA5EF3 m3b 2.9 -+------------------------------------------------------------------------------- -+ 1 453 304 67% -+ -+ */ -+ -+static void -+parse_name_field (char *line, -+ FrCommandRar *rar_comm) -+{ -+ const char *name_field; -+ FileData *fdata; -+ -+ rar_comm->fdata = fdata = file_data_new (); -+ -+ /* read file name. */ -+ -+ fdata->encrypted = (line[0] == '*') ? TRUE : FALSE; -+ -+ if (rar_comm->rar4_odd_line) -+ name_field = line + 1; -+ else -+ /* rar-5 output adds trailing spaces to short file names :( */ -+ name_field = g_strchomp (_g_str_get_last_field (line, 8)); -+ -+ if (*name_field == '/') { -+ fdata->full_path = g_strdup (name_field); -+ fdata->original_path = fdata->full_path; -+ } -+ else { -+ fdata->full_path = g_strconcat ("/", name_field, NULL); -+ fdata->original_path = fdata->full_path + 1; -+ } -+ -+ fdata->link = NULL; -+ fdata->path = _g_path_remove_level (fdata->full_path); -+} -+ -+static gboolean -+attr_field_is_dir (const char *attr_field, -+ FrCommandRar *rar_comm) -+{ -+ if ((attr_field[0] == 'd') || -+ (rar_comm->rar5 && attr_field[3] == 'D') || -+ (!rar_comm->rar5 && attr_field[1] == 'D')) -+ return TRUE; -+ -+ return FALSE; -+} - - static void - process_line (char *line, -@@ -92,14 +168,18 @@ process_line (char *line, - FrCommand *comm = FR_COMMAND (data); - FrCommandRar *rar_comm = FR_COMMAND_RAR (comm); - char **fields; -- const char *name_field; - - g_return_if_fail (line != NULL); - - if (! rar_comm->list_started) { -- if (strncmp (line, "--------", 8) == 0) { -+ if (strncmp (line, "Details:", 8) == 0) { -+ rar_comm->rar5 = TRUE; -+ return; -+ } -+ else if (strncmp (line, "--------", 8) == 0) { - rar_comm->list_started = TRUE; -- rar_comm->odd_line = TRUE; -+ if (! rar_comm->rar5) -+ rar_comm->rar4_odd_line = TRUE; - } - else if (strncmp (line, "Volume ", 7) == 0) - FR_ARCHIVE (comm)->multi_volume = TRUE; -@@ -111,24 +191,43 @@ process_line (char *line, - return; - } - -- if (! rar_comm->odd_line) { -- FileData *fdata; -+ if (rar_comm->rar4_odd_line || rar_comm->rar5) -+ parse_name_field (line, rar_comm); -+ -+ if (! rar_comm->rar4_odd_line) { -+ FileData *fdata; -+ const char *size_field, *ratio_field, *date_field, *time_field, *attr_field; - - fdata = rar_comm->fdata; - - /* read file info. */ - - fields = _g_str_split_line (line, 6); -+ if (rar_comm->rar5) { -+ size_field = fields[1]; -+ ratio_field = fields[3]; -+ date_field = fields[4]; -+ time_field = fields[5]; -+ attr_field = fields[0]; -+ } -+ else { -+ size_field = fields[0]; -+ ratio_field = fields[2]; -+ date_field = fields[3]; -+ time_field = fields[4]; -+ attr_field = fields[5]; -+ } - if (g_strv_length (fields) < 6) { - /* wrong line format, treat this line as a filename line */ - g_strfreev (fields); - file_data_free (rar_comm->fdata); - rar_comm->fdata = NULL; -- rar_comm->odd_line = TRUE; -+ rar_comm->rar4_odd_line = TRUE; -+ parse_name_field (line, rar_comm); - } - else { -- if ((strcmp (fields[2], "<->") == 0) -- || (strcmp (fields[2], "<--") == 0)) -+ if ((strcmp (ratio_field, "<->") == 0) -+ || (strcmp (ratio_field, "<--") == 0)) - { - /* ignore files that span more volumes */ - -@@ -136,10 +235,10 @@ process_line (char *line, - rar_comm->fdata = NULL; - } - else { -- fdata->size = g_ascii_strtoull (fields[0], NULL, 10); -- fdata->modified = mktime_from_string (fields[3], fields[4]); -+ fdata->size = g_ascii_strtoull (size_field, NULL, 10); -+ fdata->modified = mktime_from_string (date_field, time_field); - -- if ((fields[5][1] == 'D') || (fields[5][0] == 'd')) { -+ if (attr_field_is_dir (attr_field, rar_comm)) { - char *tmp; - - tmp = fdata->full_path; -@@ -155,7 +254,7 @@ process_line (char *line, - } - else { - fdata->name = g_strdup (_g_path_get_basename (fdata->full_path)); -- if (fields[5][0] == 'l') -+ if (attr_field[0] == 'l') - fdata->link = g_strdup (_g_path_get_basename (fdata->full_path)); - } - -@@ -167,34 +266,8 @@ process_line (char *line, - } - } - -- if (rar_comm->odd_line) { -- FileData *fdata; -- -- rar_comm->fdata = fdata = file_data_new (); -- -- /* read file name. */ -- -- fdata->encrypted = (line[0] == '*') ? TRUE : FALSE; -- -- name_field = line + 1; -- -- if (*name_field == '/') { -- fdata->full_path = g_strdup (name_field); -- fdata->original_path = fdata->full_path; -- } -- else { -- fdata->full_path = g_strconcat ("/", name_field, NULL); -- fdata->original_path = fdata->full_path + 1; -- } -- -- fdata->link = NULL; -- fdata->path = _g_path_remove_level (fdata->full_path); -- } -- else { -- -- } -- -- rar_comm->odd_line = ! rar_comm->odd_line; -+ if (! rar_comm->rar5) -+ rar_comm->rar4_odd_line = ! rar_comm->rar4_odd_line; - } - - -diff --git a/src/fr-command-rar.h b/src/fr-command-rar.h -index d60e422..09ed270 100644 ---- a/src/fr-command-rar.h -+++ b/src/fr-command-rar.h -@@ -42,7 +42,8 @@ struct _FrCommandRar - FrCommand __parent; - - gboolean list_started; -- gboolean odd_line; -+ gboolean rar4_odd_line; -+ gboolean rar5; - FileData *fdata; - }; - --- -1.8.3.2 - |