summaryrefslogtreecommitdiff
path: root/extra/libtar
diff options
context:
space:
mode:
Diffstat (limited to 'extra/libtar')
-rw-r--r--extra/libtar/PKGBUILD42
-rw-r--r--extra/libtar/libtar-1.2.11-tar_header.patch15
-rw-r--r--extra/libtar/libtar-1.2.11.patch108
-rw-r--r--extra/libtar/libtar-1.2.20-free.patch22
4 files changed, 46 insertions, 141 deletions
diff --git a/extra/libtar/PKGBUILD b/extra/libtar/PKGBUILD
index e1b54e3ce..ce929d5d6 100644
--- a/extra/libtar/PKGBUILD
+++ b/extra/libtar/PKGBUILD
@@ -1,40 +1,46 @@
-# $Id: PKGBUILD 155876 2012-04-08 10:03:47Z giovanni $
+# $Id: PKGBUILD 196404 2013-10-12 18:57:59Z giovanni $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Biru Ionut <ionut@archlinux.ro>
# Contributor: Eric Belanger <eric@archlinux.org>
# Contributor: Aurelien Foret <orelien@chez.com>
pkgname=libtar
-pkgver=1.2.11
-pkgrel=4
+pkgver=1.2.20
+pkgrel=1
pkgdesc="C library for manipulating POSIX tar files"
arch=('i686' 'x86_64')
-url="http://www.feep.net/libtar/"
+url="http://repo.or.cz/w/libtar.git/"
license=('BSD')
depends=('zlib')
-source=("ftp://ftp.feep.net/pub/software/${pkgname}/${pkgname}-${pkgver}.tar.gz"
- 'libtar-1.2.11-tar_header.patch'
- 'libtar-1.2.11.patch')
-md5sums=('604238e8734ce6e25347a58c4f1a1d7e'
- '94b03c0fdee20671e1f6d1ecaf187258'
- 'baef7da841c186e1830566296859c35b')
+options=('!libtool')
+source=("http://pkgbuild.com/~giovanni/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ 'libtar-1.2.20-free.patch')
+md5sums=('32cd952ff74f1c78c06ffff5c0695b90'
+ '00c2d03a3c13e4b6bc6c3b30a4db9f64')
-build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+prepare() {
+ cd "${srcdir}/${pkgname}"
- export CFLAGS+=" -fPIC"
+ patch -Np0 -i "${srcdir}/libtar-1.2.20-free.patch"
+ sed -i \
+ -e '/INSTALL_PROGRAM/s:-s::' {doc,lib{,tar}}/Makefile.in
+}
- # Fix FS#29322
- patch -Np1 -i "${srcdir}/libtar-1.2.11-tar_header.patch"
+build() {
+ cd "${srcdir}/${pkgname}"
+ export CFLAGS+=" -fPIC"
- patch -Np1 -i "${srcdir}/libtar-1.2.11.patch"
+ autoreconf -fi
./configure --prefix=/usr \
- --mandir=/usr/share/man
+ --mandir=/usr/share/man \
+ --disable-static \
+ --disable-encap \
+ --disable-epkg-install
make
}
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd "${srcdir}/${pkgname}"
make DESTDIR="${pkgdir}" install
install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
diff --git a/extra/libtar/libtar-1.2.11-tar_header.patch b/extra/libtar/libtar-1.2.11-tar_header.patch
deleted file mode 100644
index 161f7da7b..000000000
--- a/extra/libtar/libtar-1.2.11-tar_header.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -Naur libtar-1.2.11/lib/encode.c libtar-1.2.11.tar_header/lib/encode.c
---- libtar-1.2.11/lib/encode.c 2003-01-07 07:10:59.000000000 +0530
-+++ libtar-1.2.11.tar_header/lib/encode.c 2009-11-20 11:13:25.166756167 +0530
-@@ -30,7 +30,10 @@
- int i, sum = 0;
-
- if (t->options & TAR_GNU)
-- strncpy(t->th_buf.magic, "ustar ", 8);
-+ {
-+ memcpy(t->th_buf.magic, "ustar ", 6);
-+ memcpy(t->th_buf.version, " \0", 2);
-+ }
- else
- {
- strncpy(t->th_buf.version, TVERSION, TVERSLEN);
diff --git a/extra/libtar/libtar-1.2.11.patch b/extra/libtar/libtar-1.2.11.patch
deleted file mode 100644
index 347203dc3..000000000
--- a/extra/libtar/libtar-1.2.11.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-diff -Naur libtar-1.2.11-orig/lib/decode.c libtar-1.2.11/lib/decode.c
---- libtar-1.2.11-orig/lib/decode.c 2003-01-06 17:40:59.000000000 -0800
-+++ libtar-1.2.11/lib/decode.c 2004-08-13 12:26:34.000000000 -0700
-@@ -26,7 +26,7 @@
- char *
- th_get_pathname(TAR *t)
- {
-- char filename[MAXPATHLEN];
-+ static char filename[MAXPATHLEN];
-
- if (t->th_buf.gnu_longname)
- return t->th_buf.gnu_longname;
-@@ -35,11 +35,11 @@
- {
- snprintf(filename, sizeof(filename), "%.155s/%.100s",
- t->th_buf.prefix, t->th_buf.name);
-- return strdup(filename);
-+ return filename;
- }
-
- snprintf(filename, sizeof(filename), "%.100s", t->th_buf.name);
-- return strdup(filename);
-+ return filename;
- }
-
-
-diff -Naur libtar-1.2.11-orig/lib/extract.c libtar-1.2.11/lib/extract.c
---- libtar-1.2.11-orig/lib/extract.c 2003-03-02 15:58:07.000000000 -0800
-+++ libtar-1.2.11/lib/extract.c 2004-08-13 12:26:34.000000000 -0700
-@@ -28,14 +28,6 @@
- #endif
-
-
--struct linkname
--{
-- char ln_save[MAXPATHLEN];
-- char ln_real[MAXPATHLEN];
--};
--typedef struct linkname linkname_t;
--
--
- static int
- tar_set_file_perms(TAR *t, char *realname)
- {
-@@ -98,7 +90,9 @@
- tar_extract_file(TAR *t, char *realname)
- {
- int i;
-- linkname_t *lnp;
-+ char *lnp;
-+ int pathname_len;
-+ int realname_len;
-
- if (t->options & TAR_NOOVERWRITE)
- {
-@@ -137,11 +131,13 @@
- if (i != 0)
- return i;
-
-- lnp = (linkname_t *)calloc(1, sizeof(linkname_t));
-+ pathname_len = strlen(th_get_pathname(t)) + 1;
-+ realname_len = strlen(realname) + 1;
-+ lnp = (char *)calloc(1, pathname_len + realname_len);
- if (lnp == NULL)
- return -1;
-- strlcpy(lnp->ln_save, th_get_pathname(t), sizeof(lnp->ln_save));
-- strlcpy(lnp->ln_real, realname, sizeof(lnp->ln_real));
-+ strcpy(&lnp[0], th_get_pathname(t));
-+ strcpy(&lnp[pathname_len], realname);
- #ifdef DEBUG
- printf("tar_extract_file(): calling libtar_hash_add(): key=\"%s\", "
- "value=\"%s\"\n", th_get_pathname(t), realname);
-@@ -288,7 +284,7 @@
- {
- char *filename;
- char *linktgt = NULL;
-- linkname_t *lnp;
-+ char *lnp;
- libtar_hashptr_t hp;
-
- if (!TH_ISLNK(t))
-@@ -304,8 +300,8 @@
- if (libtar_hash_getkey(t->h, &hp, th_get_linkname(t),
- (libtar_matchfunc_t)libtar_str_match) != 0)
- {
-- lnp = (linkname_t *)libtar_hashptr_data(&hp);
-- linktgt = lnp->ln_real;
-+ lnp = (char *)libtar_hashptr_data(&hp);
-+ linktgt = &lnp[strlen(lnp) + 1];
- }
- else
- linktgt = th_get_linkname(t);
-diff -Naur libtar-1.2.11-orig/lib/libtar.h libtar-1.2.11/lib/libtar.h
---- libtar-1.2.11-orig/lib/libtar.h 2003-01-06 17:40:59.000000000 -0800
-+++ libtar-1.2.11/lib/libtar.h 2004-08-13 12:26:52.000000000 -0700
-@@ -63,9 +63,9 @@
- /***** handle.c ************************************************************/
-
- typedef int (*openfunc_t)(const char *, int, ...);
--typedef int (*closefunc_t)(int);
--typedef ssize_t (*readfunc_t)(int, void *, size_t);
--typedef ssize_t (*writefunc_t)(int, const void *, size_t);
-+typedef int (*closefunc_t)(long);
-+typedef ssize_t (*readfunc_t)(long, void *, size_t);
-+typedef ssize_t (*writefunc_t)(long, const void *, size_t);
-
- typedef struct
- {
diff --git a/extra/libtar/libtar-1.2.20-free.patch b/extra/libtar/libtar-1.2.20-free.patch
new file mode 100644
index 000000000..3a7b028d5
--- /dev/null
+++ b/extra/libtar/libtar-1.2.20-free.patch
@@ -0,0 +1,22 @@
+stdlib.h is required for free()
+
+--- lib/output.c
++++ lib/output.c
+@@ -20,6 +20,7 @@
+ #include <sys/param.h>
+
+ #ifdef STDC_HEADERS
++# include <stdlib.h>
+ # include <string.h>
+ #endif
+
+--- lib/wrapper.c
++++ lib/wrapper.c
+@@ -18,6 +18,7 @@
+ #include <errno.h>
+
+ #ifdef STDC_HEADERS
++# include <stdlib.h>
+ # include <string.h>
+ #endif
+