[arch-commits] Commit in libarchive/trunk (3 files)

Dan McGee dan at archlinux.org
Wed Oct 19 15:24:51 EDT 2011


    Date: Wednesday, October 19, 2011 @ 15:24:50
  Author: dan
Revision: 140818

upgpkg: libarchive 2.8.5-2

rebuild with fixes from upstream 2.8 branch

Added:
  libarchive/trunk/release-2.8-fixes.patch
Modified:
  libarchive/trunk/PKGBUILD
Deleted:
  libarchive/trunk/issue-185.patch

-------------------------+
 PKGBUILD                |    8 -
 issue-185.patch         |   14 --
 release-2.8-fixes.patch |  234 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 238 insertions(+), 18 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-10-19 18:05:05 UTC (rev 140817)
+++ PKGBUILD	2011-10-19 19:24:50 UTC (rev 140818)
@@ -9,18 +9,18 @@
 license=('BSD')
 depends=('zlib' 'bzip2' 'xz>=5.0.0' 'acl' 'openssl>=1.0.0' 'expat')
 source=("http://libarchive.googlecode.com/files/libarchive-${pkgver}.tar.gz"
-        issue-185.patch)
+        release-2.8-fixes.patch)
 md5sums=('9caf51dcf6213e9c9f5a1c27448b9c90'
-         '3f6019fa86d15644f84cf059711141ce')
+         '14dbbf2d31d68d8eedb93ec5531f3b0c')
 sha256sums=('13993e0ffbd121ccda46ea226b1f8eac218de0fa8da7d8b1f998093d5c32a72d'
-            'c5f583e5ad0bd95542051fad374430cbc2704d03798a7918043813b95268eb05')
+            'fcadc5ac3020a9fab5922d343baca28f067cc051e9b6f59e480349ba5b0a5060')
 
 # keep an upgrade path for older installations
 PKGEXT='.pkg.tar.gz'
 
 build() {
   cd "$srcdir/$pkgname-$pkgver"
-  patch -Np0 < ../issue-185.patch
+  patch -Np0 < ../release-2.8-fixes.patch
   ./configure --prefix=/usr --without-xml2
   make
 }

Deleted: issue-185.patch
===================================================================
--- issue-185.patch	2011-10-19 18:05:05 UTC (rev 140817)
+++ issue-185.patch	2011-10-19 19:24:50 UTC (rev 140818)
@@ -1,14 +0,0 @@
-Index: libarchive/archive_read_extract.c
-===================================================================
---- libarchive/archive_read_extract.c	(revision 3722)
-+++ libarchive/archive_read_extract.c	(revision 3723)
-@@ -108,7 +108,7 @@
- 	if (r != ARCHIVE_OK)
- 		/* If _write_header failed, copy the error. */
-  		archive_copy_error(&a->archive, ad);
--	else if (archive_entry_size(entry) > 0)
-+	else if (!archive_entry_size_is_set(entry) || archive_entry_size(entry) > 0)
- 		/* Otherwise, pour data into the entry. */
- 		r = copy_data(_a, ad);
- 	r2 = archive_write_finish_entry(ad);
-

Added: release-2.8-fixes.patch
===================================================================
--- release-2.8-fixes.patch	                        (rev 0)
+++ release-2.8-fixes.patch	2011-10-19 19:24:50 UTC (rev 140818)
@@ -0,0 +1,234 @@
+Index: build/cmake/config.h.in
+===================================================================
+--- build/cmake/config.h.in	(revision 3670)
++++ build/cmake/config.h.in	(revision 3737)
+@@ -1,5 +1,8 @@
+ /* config.h.  Generated from config.h.cmake by cmake configure */
+ 
++/* Define ZLIB_WINAPI if zlib was built on Visual Studio. */
++#cmakedefine ZLIB_WINAPI 1
++
+ /* MD5 via ARCHIVE_HASH_MD5_LIBC supported. */
+ #cmakedefine ARCHIVE_HASH_MD5_LIBC
+ 
+Index: libarchive/archive_read_support_format_all.c
+===================================================================
+--- libarchive/archive_read_support_format_all.c	(revision 3670)
++++ libarchive/archive_read_support_format_all.c	(revision 3737)
+@@ -1,5 +1,5 @@
+ /*-
+- * Copyright (c) 2003-2007 Tim Kientzle
++ * Copyright (c) 2003-2011 Tim Kientzle
+  * All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without
+@@ -39,5 +39,13 @@
+ 	archive_read_support_format_tar(a);
+ 	archive_read_support_format_xar(a);
+ 	archive_read_support_format_zip(a);
++
++	/* Note: We always return ARCHIVE_OK here, even if some of the
++	 * above return ARCHIVE_WARN.  The intent here is to enable
++	 * "as much as possible."  Clients who need specific
++	 * compression should enable those individually so they can
++	 * verify the level of support. */
++	/* Clear any warning messages set by the above functions. */
++	archive_clear_error(a);
+ 	return (ARCHIVE_OK);
+ }
+Index: libarchive/archive_write_disk.c
+===================================================================
+--- libarchive/archive_write_disk.c	(revision 3670)
++++ libarchive/archive_write_disk.c	(revision 3737)
+@@ -1513,6 +1513,22 @@
+ }
+ 
+ #if defined(_WIN32) || defined(__CYGWIN__)
++static int
++guidword(const char *p, int n)
++{
++	int i;
++
++	for (i = 0; i < n; i++) {
++		if ((*p >= '0' && *p <= '9') ||
++		    (*p >= 'a' && *p <= 'f') ||
++		    (*p >= 'A' && *p <= 'F'))
++			p++;
++		else
++			return (-1);
++	}
++	return (0);
++}
++
+ /*
+  * 1. Convert a path separator from '\' to '/' .
+  *    We shouldn't check multi-byte character directly because some
+@@ -1521,26 +1537,92 @@
+  * 2. Replace unusable characters in Windows with underscore('_').
+  * See also : http://msdn.microsoft.com/en-us/library/aa365247.aspx
+  */
+-static void
++static int
+ cleanup_pathname_win(struct archive_write_disk *a)
+ {
+ 	wchar_t wc;
+ 	char *p;
+ 	size_t alen, l;
+ 
+-	alen = 0;
+-	l = 0;
+-	for (p = a->name; *p != '\0'; p++) {
+-		++alen;
+-		if (*p == '\\')
+-			l = 1;
++	p = a->name;
++	/* Skip leading "\\.\" or "\\?\" or "\\?\UNC\" or
++	 * "\\?\Volume{GUID}\"
++	 * (absolute path prefixes used by Windows API) */
++	if ((p[0] == '\\' || p[0] == '/') && (p[1] == '\\' || p[1] == '/' ) &&
++	    (p[2] == '.' || p[2] == '?') && (p[3] ==  '\\' || p[3] == '/'))
++	{
++		/* A path begin with "\\?\UNC\" */
++		if (p[2] == '?' &&
++		    (p[4] == 'U' || p[4] == 'u') &&
++		    (p[5] == 'N' || p[5] == 'n') &&
++		    (p[6] == 'C' || p[6] == 'c') &&
++		    (p[7] == '\\' || p[7] == '/'))
++			p += 8;
++		/* A path begin with "\\?\Volume{GUID}\" */
++		else if (p[2] == '?' &&
++		    (p[4] == 'V' || p[4] == 'v') &&
++		    (p[5] == 'O' || p[5] == 'o') &&
++		    (p[6] == 'L' || p[6] == 'l') &&
++		    (p[7] == 'U' || p[7] == 'u') &&
++		    (p[8] == 'M' || p[8] == 'm') &&
++		    (p[9] == 'E' || p[9] == 'e') &&
++		    p[10] == '{') {
++			if (guidword(p+11, 8) == 0 && p[19] == '-' &&
++			    guidword(p+20, 4) == 0 && p[24] == '-' &&
++			    guidword(p+25, 4) == 0 && p[29] == '-' &&
++			    guidword(p+30, 4) == 0 && p[34] == '-' &&
++			    guidword(p+35, 12) == 0 && p[47] == '}' &&
++			    (p[48] == '\\' || p[48] == '/'))
++				p += 49;
++			else
++				p += 4;
++		/* A path begin with "\\.\PhysicalDriveX" */
++		} else if (p[2] == '.' &&
++		    (p[4] == 'P' || p[4] == 'p') &&
++		    (p[5] == 'H' || p[5] == 'h') &&
++		    (p[6] == 'Y' || p[6] == 'y') &&
++		    (p[7] == 'S' || p[7] == 's') &&
++		    (p[8] == 'I' || p[8] == 'i') &&
++		    (p[9] == 'C' || p[9] == 'c') &&
++		    (p[9] == 'A' || p[9] == 'a') &&
++		    (p[9] == 'L' || p[9] == 'l') &&
++		    (p[9] == 'D' || p[9] == 'd') &&
++		    (p[9] == 'R' || p[9] == 'r') &&
++		    (p[9] == 'I' || p[9] == 'i') &&
++		    (p[9] == 'V' || p[9] == 'v') &&
++		    (p[9] == 'E' || p[9] == 'e') &&
++		    (p[10] >= '0' && p[10] <= '9') &&
++		    p[11] == '\0') {
++			archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
++			    "Path is a physical drive name");
++			return (ARCHIVE_FAILED);
++		} else
++			p += 4;
++	}
++
++	/* Skip leading drive letter from archives created
++	 * on Windows. */
++	if (((p[0] >= 'a' && p[0] <= 'z') ||
++	     (p[0] >= 'A' && p[0] <= 'Z')) &&
++		 p[1] == ':') {
++		if (p[2] == '\0') {
++			archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
++			    "Path is a drive name");
++			return (ARCHIVE_FAILED);
++		}
++		if (p[2] == '\\' || p[2] == '/')
++			p += 3;
++	}
++
++	for (; *p != '\0'; p++) {
+ 		/* Rewrite the path name if its character is a unusable. */
+ 		if (*p == ':' || *p == '*' || *p == '?' || *p == '"' ||
+ 		    *p == '<' || *p == '>' || *p == '|')
+ 			*p = '_';
+ 	}
+-	if (alen == 0 || l == 0)
+-		return;
++	alen = p - a->name;
++	if (alen == 0 || strchr(a->name, '\\') == NULL)
++		return (ARCHIVE_OK);
+ 	/*
+ 	 * Convert path separator.
+ 	 */
+@@ -1560,6 +1642,7 @@
+ 		p += l;
+ 		alen -= l;
+ 	}
++	return (ARCHIVE_OK);
+ }
+ #endif
+ 
+@@ -1583,7 +1666,8 @@
+ 	}
+ 
+ #if defined(_WIN32) || defined(__CYGWIN__)
+-	cleanup_pathname_win(a);
++	if (cleanup_pathname_win(a) != ARCHIVE_OK)
++		return (ARCHIVE_FAILED);
+ #endif
+ 	/* Skip leading '/'. */
+ 	if (*src == '/')
+Index: libarchive/archive_util.c
+===================================================================
+--- libarchive/archive_util.c	(revision 3670)
++++ libarchive/archive_util.c	(revision 3737)
+@@ -155,6 +155,7 @@
+ {
+ 	archive_string_empty(&a->error_string);
+ 	a->error = NULL;
++	a->archive_error_number = 0;
+ }
+ 
+ void
+Index: libarchive/archive_read_extract.c
+===================================================================
+--- libarchive/archive_read_extract.c	(revision 3670)
++++ libarchive/archive_read_extract.c	(revision 3737)
+@@ -108,7 +108,7 @@
+ 	if (r != ARCHIVE_OK)
+ 		/* If _write_header failed, copy the error. */
+  		archive_copy_error(&a->archive, ad);
+-	else if (archive_entry_size(entry) > 0)
++	else if (!archive_entry_size_is_set(entry) || archive_entry_size(entry) > 0)
+ 		/* Otherwise, pour data into the entry. */
+ 		r = copy_data(_a, ad);
+ 	r2 = archive_write_finish_entry(ad);
+Index: CMakeLists.txt
+===================================================================
+--- CMakeLists.txt	(revision 3670)
++++ CMakeLists.txt	(revision 3737)
+@@ -154,6 +154,13 @@
+   SET(HAVE_ZLIB_H 1)
+   INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
+   LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES})
++  IF(WIN32 AND NOT CYGWIN)
++    SET(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
++    SET(CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARIES})
++    CHECK_C_SOURCE_Runs(
++      "#ifndef ZLIB_WINAPI\n#define ZLIB_WINAPI\n#endif\n#include <zlib.h>\nint main() {uLong f = zlibCompileFlags(); return (f&(1U<<10))?0:-1; }"
++      ZLIB_WINAPI)
++  ENDIF(WIN32 AND NOT CYGWIN)
+ ENDIF(ZLIB_FOUND)
+ MARK_AS_ADVANCED(CLEAR ZLIB_INCLUDE_DIR)
+ MARK_AS_ADVANCED(CLEAR ZLIB_LIBRARY)
+
+Property changes on: .
+___________________________________________________________________
+Modified: svn:mergeinfo
+   Merged /trunk:r1989,3247,3722
+



More information about the arch-commits mailing list