summaryrefslogtreecommitdiffstats
path: root/archivers/file-roller/files
diff options
context:
space:
mode:
authormarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2002-10-12 00:10:22 +0800
committermarcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059>2002-10-12 00:10:22 +0800
commit96cc0c71c65806406c563667a5235aaf0e073dd5 (patch)
treef0761ab50bf62c34346f7eca12681b240da33af2 /archivers/file-roller/files
parent285578b136803a3d69539d0f0b5ac4cda6cbbf2b (diff)
downloadmarcuscom-ports-96cc0c71c65806406c563667a5235aaf0e073dd5.tar
marcuscom-ports-96cc0c71c65806406c563667a5235aaf0e073dd5.tar.gz
marcuscom-ports-96cc0c71c65806406c563667a5235aaf0e073dd5.tar.bz2
marcuscom-ports-96cc0c71c65806406c563667a5235aaf0e073dd5.tar.lz
marcuscom-ports-96cc0c71c65806406c563667a5235aaf0e073dd5.tar.xz
marcuscom-ports-96cc0c71c65806406c563667a5235aaf0e073dd5.tar.zst
marcuscom-ports-96cc0c71c65806406c563667a5235aaf0e073dd5.zip
Fix a problem where tar archives weren't being parsed correctly with our
version of GNU tar. git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@63 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'archivers/file-roller/files')
-rw-r--r--archivers/file-roller/files/patch-src_fr-command-tar.c55
1 files changed, 55 insertions, 0 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
new file mode 100644
index 000000000..6ae5fcfa3
--- /dev/null
+++ b/archivers/file-roller/files/patch-src_fr-command-tar.c
@@ -0,0 +1,55 @@
+--- src/fr-command-tar.c.orig Fri Aug 9 09:10:51 2002
++++ src/fr-command-tar.c Fri Oct 11 12:14:40 2002
+@@ -117,7 +117,7 @@
+ {
+ int i;
+ char *field;
+- int n = 6;
++ int n = 8;
+
+ n--;
+ field = eat_spaces (line);
+@@ -129,6 +129,10 @@
+ return field;
+ }
+
++static char *months[] = {
++ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",
++ "Nov", "Dec"
++};
+
+ static void
+ process_line (char *line,
+@@ -138,15 +142,30 @@
+ FRCommand *comm = FR_COMMAND (data);
+ char **fields;
+ char *name_field;
++ int i;
++ struct tm tm = {0, };
++ char **time_fields;
+
+ g_return_if_fail (line != NULL);
+
+ fdata = file_data_new ();
+
+- fields = split_line (line, 5);
++ fields = split_line (line, 7);
+ fdata->size = atol (fields[2]);
+- fdata->modified = mktime_from_string (fields[3], fields[4]);
++ for (i = 0; i < 12; i++) {
++ if (!strncmp(fields[3], months[i], 3)) break;
++ }
++ tm.tm_mon = i;
++ tm.tm_year = atoi (fields[6]) - 1900;
++ tm.tm_mday = atoi (fields[4]);
++ time_fields = g_strsplit(fields[5], ":", 2);
++ tm.tm_hour = atoi (time_fields[0]);
++ tm.tm_min = atoi (time_fields[1]);
++ tm.tm_sec = 0;
++ tm.tm_isdst = -1;
++ fdata->modified = mktime(&tm);
+ g_strfreev (fields);
++ g_strfreev (time_fields);
+
+ /* Full path */
+