summaryrefslogtreecommitdiffstats
path: root/archivers/file-roller/files/patch-src_fr-command-tar.c
diff options
context:
space:
mode:
Diffstat (limited to 'archivers/file-roller/files/patch-src_fr-command-tar.c')
-rw-r--r--archivers/file-roller/files/patch-src_fr-command-tar.c44
1 files changed, 28 insertions, 16 deletions
diff --git a/archivers/file-roller/files/patch-src_fr-command-tar.c b/archivers/file-roller/files/patch-src_fr-command-tar.c
index 08e5c765f..f6ff0af15 100644
--- a/archivers/file-roller/files/patch-src_fr-command-tar.c
+++ b/archivers/file-roller/files/patch-src_fr-command-tar.c
@@ -1,35 +1,47 @@
---- src/fr-command-tar.c.orig Tue Feb 24 04:00:01 2004
-+++ src/fr-command-tar.c Wed Feb 25 18:20:33 2004
-@@ -83,6 +83,11 @@
- return mktime (&tm);
+--- src/fr-command-tar.c.orig Mon Mar 8 04:20:07 2004
++++ src/fr-command-tar.c Mon Mar 8 14:50:03 2004
+@@ -196,6 +196,11 @@
+ return g_strndup (f_start + 1, f_end - f_start);
}
+static char *months[] = {
-+ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",
-+ "Nov", "Dec"
++ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",
++ "Nov", "Dec"
+};
+
static void
process_line (char *line,
-@@ -92,19 +97,34 @@
+@@ -204,28 +209,36 @@
+ FileData *fdata;
FRCommand *comm = FR_COMMAND (data);
char **fields;
- const char *name_field;
+- int date_idx;
+- char *field_date, *field_time, *field_size, *field_name;
+ int i;
+ struct tm tm = {0, };
+ char **time_fields;
++ char *field_name;
g_return_if_fail (line != NULL);
fdata = file_data_new ();
-- fields = split_line (line, 5);
+- date_idx = get_index_from_pattern (line, "%n%n%n%n-%n%n-%n%n %n%n:%n%n:%n%n");
+ fields = split_line (line, 7);
- fdata->size = atol (fields[2]);
-- fdata->modified = mktime_from_string (fields[3], fields[4]);
+
+- field_size = get_prev_field (line, date_idx, 1);
+- fdata->size = atol (field_size);
+- g_free (field_size);
+-
+- field_date = get_next_field (line, date_idx, 1);
+- field_time = get_next_field (line, date_idx, 2);
+- fdata->modified = mktime_from_string (field_date, field_time);
+- g_free (field_date);
+- g_free (field_time);
++ fdata->size = atol (fields[2]);
+ for (i = 0; i < 12; i++) {
-+ if (!strncmp(fields[3], months[i], 3)) break;
++ if (!strncmp(fields[3], months[i], 3)) break;
+ }
+ tm.tm_mon = i;
+ tm.tm_year = atoi (fields[6]) - 1900;
@@ -40,13 +52,13 @@
+ tm.tm_sec = 0;
+ tm.tm_isdst = -1;
+ fdata->modified = mktime(&tm);
- g_strfreev (fields);
++ g_strfreev (fields);
+ g_strfreev (time_fields);
/* Full path */
-- name_field = get_last_field (line, 6);
-+ name_field = get_last_field (line, 8);
- fields = g_strsplit (name_field, " -> ", 2);
+- field_name = get_next_field (line, date_idx, 3);
++ field_name = get_last_field (line, 8);
+ fields = g_strsplit (field_name, " -> ", 2);
if (fields[1] == NULL) {