diff options
author | marcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059> | 2002-10-12 00:10:22 +0800 |
---|---|---|
committer | marcus <marcus@df743ca5-7f9a-e211-a948-0013205c9059> | 2002-10-12 00:10:22 +0800 |
commit | 96cc0c71c65806406c563667a5235aaf0e073dd5 (patch) | |
tree | f0761ab50bf62c34346f7eca12681b240da33af2 /archivers/file-roller/files | |
parent | 285578b136803a3d69539d0f0b5ac4cda6cbbf2b (diff) | |
download | marcuscom-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.c | 55 |
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 */ + |