diff options
Diffstat (limited to 'abs/extra')
-rw-r--r-- | abs/extra/libbsd/PKGBUILD | 39 | ||||
-rw-r--r-- | abs/extra/libbsd/spt.patch | 50 |
2 files changed, 89 insertions, 0 deletions
diff --git a/abs/extra/libbsd/PKGBUILD b/abs/extra/libbsd/PKGBUILD new file mode 100644 index 0000000..2e9b745 --- /dev/null +++ b/abs/extra/libbsd/PKGBUILD @@ -0,0 +1,39 @@ +# $Id$ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> +# Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar> + +pkgname=libbsd +pkgver=0.6.0 +pkgrel=2 +pkgdesc="Provides useful functions commonly found on BSD systems like strlcpy()" +arch=('i686' 'x86_64') +url="http://libbsd.freedesktop.org" +license=('custom') +depends=('glibc') +options=('staticlibs') +source=(http://libbsd.freedesktop.org/releases/$pkgname-$pkgver.tar.xz{,.asc}) +md5sums=('f6c75f0a9818e323a589bcbd560a0eb4' + 'SKIP') + +build() { + cd $pkgname-$pkgver + + ./configure --prefix=/usr + make +} + +check() { + cd $pkgname-$pkgver + + make check +} + +package() { + cd $pkgname-$pkgver + + make DESTDIR="$pkgdir" install + rm "${pkgdir}"/usr/lib/libbsd.a + install -D -m644 COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/extra/libbsd/spt.patch b/abs/extra/libbsd/spt.patch new file mode 100644 index 0000000..b19dc9b --- /dev/null +++ b/abs/extra/libbsd/spt.patch @@ -0,0 +1,50 @@ +diff -u -r libbsd-0.5.2-orig/src/setproctitle.c libbsd-0.5.2/src/setproctitle.c +--- libbsd-0.5.2-orig/src/setproctitle.c 2013-06-08 18:26:04.000000000 +0200 ++++ libbsd-0.5.2/src/setproctitle.c 2013-06-18 02:35:59.441393418 +0200 +@@ -86,7 +86,7 @@ + if (environ != envp) + return 0; + +- /* Make a copy of the old environ array of pointers, in case ++ /* Make a deep copy of the old environ array of pointers, in case + * clearenv() or setenv() is implemented to free the internal + * environ array, because we will need to access the old environ + * contents to make the new copy. */ +@@ -94,11 +94,13 @@ + envcopy = malloc(envsize); + if (envcopy == NULL) + return errno; +- memcpy(envcopy, envp, envsize); ++ for (i = 0; envp[i]; i++) envcopy[i] = strdup(envp[i]); ++ envcopy[i] = NULL; + + error = spt_clearenv(); + if (error) { + environ = envp; ++ for(i = 0; envcopy[i]; i++) free(envcopy[i]); + free(envcopy); + return error; + } +@@ -116,18 +118,20 @@ + if (error) { + #ifdef HAVE_CLEARENV + /* Because the old environ might not be available +- * anymore we will make do with the shallow copy. */ ++ * anymore we will make do with the deep copy. */ + environ = envcopy; + #else + environ = envp; ++ for(i = 0; envcopy[i]; i++) free(envcopy[i]); + free(envcopy); + #endif + return error; + } + } + +- /* Dispose of the shallow copy, now that we've finished transfering ++ /* Dispose of the deep copy, now that we've finished transfering + * the old environment. */ ++ for(i = 0; envcopy[i]; i++) free(envcopy[i]); + free(envcopy); + + return 0; |