aboutsummaryrefslogtreecommitdiffstats
path: root/archivers/file-roller
diff options
context:
space:
mode:
authormarcus <marcus@FreeBSD.org>2002-10-12 00:15:30 +0800
committermarcus <marcus@FreeBSD.org>2002-10-12 00:15:30 +0800
commit6d5700c97248bb3725c0be684ce7d057fd0bdca7 (patch)
tree00697df0fecb63e6acebd1460b764bd468ca0dee /archivers/file-roller
parent46734faf6f3b6eabb9413b5f9a4d7956f2985430 (diff)
downloadfreebsd-ports-graphics-6d5700c97248bb3725c0be684ce7d057fd0bdca7.tar.gz
freebsd-ports-graphics-6d5700c97248bb3725c0be684ce7d057fd0bdca7.tar.zst
freebsd-ports-graphics-6d5700c97248bb3725c0be684ce7d057fd0bdca7.zip
Fix a problem parsing tar archives with GNU tar 1.13.25. Bump PORTREVISION.
Diffstat (limited to 'archivers/file-roller')
-rw-r--r--archivers/file-roller/Makefile1
-rw-r--r--archivers/file-roller/files/patch-src_fr-command-tar.c55
2 files changed, 56 insertions, 0 deletions
diff --git a/archivers/file-roller/Makefile b/archivers/file-roller/Makefile
index c86dfc75a59..8a722d9f794 100644
--- a/archivers/file-roller/Makefile
+++ b/archivers/file-roller/Makefile
@@ -7,6 +7,7 @@
PORTNAME= fileroller
PORTVERSION= 2.1.0
+PORTREVISION= 1
CATEGORIES= archivers gnome
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}
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 00000000000..6ae5fcfa32b
--- /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 */
+