From 415856bdd4f48ab4f2732996f0bae58595092bbe Mon Sep 17 00:00:00 2001 From: Parabola Date: Tue, 5 Apr 2011 14:26:38 +0000 Subject: Tue Apr 5 14:26:38 UTC 2011 --- community/libtar/PKGBUILD | 27 +++++++++ community/libtar/libtar-1.2.11.patch | 108 +++++++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 community/libtar/PKGBUILD create mode 100644 community/libtar/libtar-1.2.11.patch (limited to 'community/libtar') diff --git a/community/libtar/PKGBUILD b/community/libtar/PKGBUILD new file mode 100644 index 000000000..62f5394b9 --- /dev/null +++ b/community/libtar/PKGBUILD @@ -0,0 +1,27 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer : Biru Ionut +# Contributor: Eric Belanger +# Contributor: Aurelien Foret + +pkgname=libtar +pkgver=1.2.11 +pkgrel=2 +pkgdesc="C library for manipulating POSIX tar files" +arch=('i686' 'x86_64') +url="http://www.feep.net/libtar/" +license=('BSD') +depends=('zlib') +source=(ftp://ftp.feep.net/pub/software/$pkgname/$pkgname-$pkgver.tar.gz \ + libtar-$pkgver.patch) +md5sums=('604238e8734ce6e25347a58c4f1a1d7e' 'baef7da841c186e1830566296859c35b') +sha1sums=('9611f23024b0e89aad1cfea301122186b3c160f8' '100c37378faea118c6664cd8958caa91f34633d0') + +build() { + cd "$srcdir/$pkgname-$pkgver" + export CFLAGS+=" -fPIC" + patch -Np1 -i ../libtar-$pkgver.patch + ./configure --prefix=/usr --mandir=/usr/share/man + make + make DESTDIR="$pkgdir" install + install -D -m644 COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/COPYRIGHT" +} diff --git a/community/libtar/libtar-1.2.11.patch b/community/libtar/libtar-1.2.11.patch new file mode 100644 index 000000000..347203dc3 --- /dev/null +++ b/community/libtar/libtar-1.2.11.patch @@ -0,0 +1,108 @@ +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 + { -- cgit v1.2.3-54-g00ecf