summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
Diffstat (limited to 'testing')
-rw-r--r--testing/alsa-plugins/PKGBUILD36
-rw-r--r--testing/amarok/PKGBUILD39
-rw-r--r--testing/amarok/amarok.install12
-rw-r--r--testing/avidemux/PKGBUILD120
-rw-r--r--testing/avidemux/avidemux-2.5.4-x264-build115.patch45
-rw-r--r--testing/avidemux/avidemux.install11
-rw-r--r--testing/bash/PKGBUILD101
-rw-r--r--testing/bash/bash.install20
-rw-r--r--testing/bash/dot.bash_logout3
-rw-r--r--testing/bash/dot.bash_profile5
-rw-r--r--testing/bash/dot.bashrc9
-rw-r--r--testing/bash/system.bash_logout3
-rw-r--r--testing/bash/system.bashrc23
-rw-r--r--testing/bison/ChangeLog19
-rw-r--r--testing/bison/PKGBUILD33
-rw-r--r--testing/bison/bison.install16
-rw-r--r--testing/blender/PKGBUILD93
-rw-r--r--testing/blender/blender.install13
-rw-r--r--testing/bzip2/PKGBUILD69
-rw-r--r--testing/bzip2/bzip2-1.0.4-bzip2recover.patch12
-rw-r--r--testing/cmus/PKGBUILD41
-rw-r--r--testing/cryptsetup/PKGBUILD25
-rw-r--r--testing/cryptsetup/cryptsetup-fix-crypt_get_volume_key_size-for-plain-device.patch94
-rw-r--r--testing/db/PKGBUILD32
-rw-r--r--testing/db/db.install5
-rw-r--r--testing/dhcpcd/PKGBUILD54
-rw-r--r--testing/dhcpcd/dhcpcd.conf.d6
-rw-r--r--testing/dhcpcd/remove_ifconfig.patch20
-rw-r--r--testing/dialog/PKGBUILD27
-rw-r--r--testing/dnsutils/PKGBUILD55
-rw-r--r--testing/dnsutils/remove-bind.patch25
-rw-r--r--testing/e2fsprogs/MIT-LICENSE25
-rw-r--r--testing/e2fsprogs/PKGBUILD48
-rw-r--r--testing/e2fsprogs/e2fsprogs.install20
-rw-r--r--testing/e2fsprogs/mke2fs.conf26
-rw-r--r--testing/expat/CVE-2009-3560.patch13
-rw-r--r--testing/expat/CVE-2009-3720.patch12
-rw-r--r--testing/expat/PKGBUILD38
-rw-r--r--testing/ffmpeg/PKGBUILD55
-rw-r--r--testing/ffmpegthumbnailer/PKGBUILD34
-rw-r--r--testing/ffmpegthumbnailer/ffmpegthumbnailer.desktop4
-rw-r--r--testing/flex/PKGBUILD59
-rw-r--r--testing/flex/flex-2.5.35-gcc44.patch22
-rw-r--r--testing/flex/flex-2.5.35-hardening.patch36
-rw-r--r--testing/flex/flex-2.5.35-missing-prototypes.patch53
-rw-r--r--testing/flex/flex-2.5.35-sign.patch11
-rw-r--r--testing/flex/flex.install22
-rw-r--r--testing/flex/lex.sh3
-rw-r--r--testing/gdbm/PKGBUILD59
-rw-r--r--testing/gdbm/gdbm-1.8.3-fhs.patch138
-rw-r--r--testing/gdbm/gdbm-1.8.3-zeroheaders.patch44
-rw-r--r--testing/gdbm/gdbm.install21
-rw-r--r--testing/gegl/0.1.6-ffmpeg.patch33
-rw-r--r--testing/gegl/PKGBUILD34
-rw-r--r--testing/gettext/PKGBUILD34
-rw-r--r--testing/gettext/gettext.install22
-rw-r--r--testing/grep/PKGBUILD34
-rw-r--r--testing/grep/grep.install21
-rw-r--r--testing/gstreamer0.10-ugly/PKGBUILD43
-rw-r--r--testing/gzip/PKGBUILD43
-rw-r--r--testing/gzip/gzip.install20
-rw-r--r--testing/hdparm/PKGBUILD42
-rw-r--r--testing/hdparm/wiper.sh.2_6.max-ranges.patch84
-rw-r--r--testing/heirloom-mailx/PKGBUILD64
-rw-r--r--testing/iproute2/PKGBUILD51
-rw-r--r--testing/iproute2/iproute2-fhs.patch84
-rw-r--r--testing/iputils/PKGBUILD65
-rw-r--r--testing/iputils/iputils-s20101006-manpages.patch1044
-rw-r--r--testing/iputils/permission-fix.patch15
-rw-r--r--testing/isdn4k-utils/PKGBUILD34
-rw-r--r--testing/isdn4k-utils/config100
-rw-r--r--testing/isdn4k-utils/isdn4k-utils-3.2p1-build.patch2028
-rw-r--r--testing/k3b/PKGBUILD40
-rw-r--r--testing/k3b/k3b-2.0.2-ffmpeg.patch96
-rw-r--r--testing/k3b/k3b.install13
-rw-r--r--testing/kdemultimedia/PKGBUILD109
-rw-r--r--testing/kdemultimedia/kdemultimedia.install11
-rw-r--r--testing/kdemultimedia/mplayerthumbs.config2
-rw-r--r--testing/keyutils/PKGBUILD24
-rw-r--r--testing/kradio/PKGBUILD32
-rw-r--r--testing/kradio/kradio-ffmpeg.diff34
-rw-r--r--testing/kradio/kradio.install11
-rw-r--r--testing/krb5/PKGBUILD83
-rw-r--r--testing/krb5/krb5-1.9.1-2011-006.patch75
-rw-r--r--testing/krb5/krb5-1.9.1-canonicalize-fallback.patch58
-rw-r--r--testing/krb5/krb5-1.9.1-config-script.patch27
-rw-r--r--testing/krb5/krb5-kadmind40
-rw-r--r--testing/krb5/krb5-kdc40
-rw-r--r--testing/krb5/krb5-kpropd40
-rw-r--r--testing/less/PKGBUILD31
-rw-r--r--testing/libcap/PKGBUILD27
-rw-r--r--testing/libpcap/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch344
-rw-r--r--testing/libpcap/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch159
-rw-r--r--testing/libpcap/PKGBUILD41
-rw-r--r--testing/librpcsecgss/PKGBUILD32
-rw-r--r--testing/librpcsecgss/librpcsecgss-0.18-heimdal.patch33
-rw-r--r--testing/libusb-compat/PKGBUILD27
-rw-r--r--testing/libusb/PKGBUILD30
-rw-r--r--testing/linux-atm/PKGBUILD29
-rw-r--r--testing/linux-atm/man-pages.patch45
-rw-r--r--testing/m4/PKGBUILD36
-rw-r--r--testing/m4/m4-1.4.16-readlink-einval.patch12
-rw-r--r--testing/m4/m4.install20
-rw-r--r--testing/mediastreamer/PKGBUILD34
-rw-r--r--testing/mediastreamer/disable-v4l1.patch50
-rw-r--r--testing/miro/PKGBUILD35
-rw-r--r--testing/miro/ffmpeg.patch95
-rw-r--r--testing/miro/miro.install17
-rw-r--r--testing/mlocate/PKGBUILD56
-rw-r--r--testing/mlocate/mlocate.install18
-rw-r--r--testing/mlocate/updatedb.conf5
-rwxr-xr-xtesting/mlocate/updatedb.cron.daily29
-rw-r--r--testing/moc/PKGBUILD44
-rw-r--r--testing/moc/gcc-undefined-symbols.diff12
-rw-r--r--testing/moc/moc-ffmpeg.patch26
-rw-r--r--testing/module-init-tools/PKGBUILD43
-rw-r--r--testing/module-init-tools/docfix.patch90
-rw-r--r--testing/module-init-tools/modprobe.conf3
-rw-r--r--testing/mpd/ChangeLog9
-rw-r--r--testing/mpd/PKGBUILD61
-rwxr-xr-xtesting/mpd/mpd36
-rw-r--r--testing/mpd/mpd.install18
-rw-r--r--testing/ncurses/PKGBUILD74
-rw-r--r--testing/net-tools/PKGBUILD43
-rw-r--r--testing/net-tools/gcc340.patch46
-rw-r--r--testing/net-tools/net-tools-1.60-2.6-compilefix.patch23
-rw-r--r--testing/net-tools/net-tools-1.60-miiioctl.patch17
-rw-r--r--testing/net-tools/net-tools-1.60-nameif.patch58
-rw-r--r--testing/net-tools/net-tools-1.60-nameif_strncpy.patch13
-rw-r--r--testing/net-tools/net-tools.install12
-rw-r--r--testing/net-tools/net-tools.patch30
-rw-r--r--testing/opal/PKGBUILD27
-rw-r--r--testing/opencv/PKGBUILD110
-rw-r--r--testing/opencv/opencv.install11
-rw-r--r--testing/openldap/PKGBUILD96
-rw-r--r--testing/openldap/ntlm.patch230
-rw-r--r--testing/openldap/openldap.install20
-rwxr-xr-xtesting/openldap/slapd49
-rw-r--r--testing/openldap/slapd.default6
-rw-r--r--testing/patch/PKGBUILD40
-rw-r--r--testing/patch/patch-2.6.1-get-arg.patch12
-rw-r--r--testing/pkg-config/PKGBUILD37
-rw-r--r--testing/pkg-config/autoconf-2.66.patch12
-rw-r--r--testing/popt/PKGBUILD42
-rw-r--r--testing/ppp/PKGBUILD80
-rw-r--r--testing/ppp/ip-down12
-rw-r--r--testing/ppp/ip-down.d.dns.sh3
-rw-r--r--testing/ppp/ip-up12
-rw-r--r--testing/ppp/ip-up.d.dns.sh7
-rw-r--r--testing/ppp/options352
-rw-r--r--testing/ppp/plog7
-rw-r--r--testing/ppp/poff103
-rw-r--r--testing/ppp/pon32
-rw-r--r--testing/ppp/pon.1121
-rw-r--r--testing/ppp/ppp36
-rw-r--r--testing/pptpclient/PKGBUILD33
-rw-r--r--testing/readline/PKGBUILD62
-rw-r--r--testing/readline/inputrc36
-rw-r--r--testing/readline/readline.install17
-rw-r--r--testing/reiserfsprogs/PKGBUILD34
-rw-r--r--testing/rfkill/60-rfkill.rules1
-rw-r--r--testing/rfkill/PKGBUILD38
-rw-r--r--testing/rfkill/rfkill.conf.d20
-rwxr-xr-xtesting/rfkill/rfkill.rc.d38
-rw-r--r--testing/rpcbind/PKGBUILD42
-rwxr-xr-xtesting/rpcbind/rpcbind39
-rw-r--r--testing/rpcbind/rpcbind-sunrpc.patch22
-rw-r--r--testing/sed/PKGBUILD34
-rw-r--r--testing/sed/sed.install20
-rw-r--r--testing/sox/PKGBUILD37
-rw-r--r--testing/sox/sox-14.3.2-ffmpeg.patch40
-rw-r--r--testing/sysfsutils/PKGBUILD36
-rw-r--r--testing/tar/PKGBUILD38
-rw-r--r--testing/tar/tar.1367
-rw-r--r--testing/tar/tar.install21
-rw-r--r--testing/texinfo/PKGBUILD31
-rw-r--r--testing/texinfo/texinfo.install21
-rw-r--r--testing/transcode/PKGBUILD78
-rw-r--r--testing/transcode/transcode-1.1.5-ffmpeg.patch124
-rw-r--r--testing/transcode/transcode-1.1.5-jpeg-7.patch16
-rw-r--r--testing/transcode/transcode-1.1.5-mpa.patch10
-rw-r--r--testing/vi/PKGBUILD47
-rw-r--r--testing/vi/exrc.sample5
-rw-r--r--testing/vi/increase-tube.patch13
-rw-r--r--testing/vi/navkeys.patch55
-rw-r--r--testing/vi/preserve_dir.patch81
-rw-r--r--testing/vlc/PKGBUILD74
-rw-r--r--testing/vlc/vlc.install18
-rw-r--r--testing/which/PKGBUILD27
-rw-r--r--testing/which/which.install20
-rw-r--r--testing/wpa_actiond/PKGBUILD25
-rw-r--r--testing/wpa_supplicant/PKGBUILD45
-rw-r--r--testing/wpa_supplicant/config404
-rw-r--r--testing/wpa_supplicant/dbus.patch61
-rw-r--r--testing/x264/PKGBUILD31
-rw-r--r--testing/xfsprogs/PKGBUILD29
-rw-r--r--testing/xine-lib/PKGBUILD56
-rw-r--r--testing/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch13
-rw-r--r--testing/xine-lib/xine-lib-1.1.19-ffmpeg.patch380
-rw-r--r--testing/xine-lib/xine-lib-1.1.19-xvmc.patch17
-rw-r--r--testing/xinetd/PKGBUILD43
-rw-r--r--testing/xinetd/servers10
-rw-r--r--testing/xinetd/services10
-rwxr-xr-xtesting/xinetd/xinetd38
-rw-r--r--testing/xinetd/xinetd.conf14
205 files changed, 12519 insertions, 11 deletions
diff --git a/testing/alsa-plugins/PKGBUILD b/testing/alsa-plugins/PKGBUILD
new file mode 100644
index 000000000..d99886d38
--- /dev/null
+++ b/testing/alsa-plugins/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 142131 2011-11-05 11:37:29Z ibiru $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Daniel Ehlers <danielehlers@mindeye.net>
+
+pkgname=alsa-plugins
+pkgver=1.0.24
+pkgrel=3
+pkgdesc="Extra alsa plugins"
+arch=(i686 x86_64)
+url="http://www.alsa-project.org"
+license=(GPL)
+depends=(alsa-lib)
+makedepends=(libpulse jack ffmpeg)
+optdepends=('libpulse: PulseAudio plugin'
+ 'jack: Jack plugin'
+ 'ffmpeg: libavcodec resampling plugin'
+ 'libsamplerate: libsamplerate resampling plugin'
+ 'speex: libspeexdsp resampling plugin')
+options=('!libtool')
+source=("ftp://ftp.alsa-project.org/pub/plugins/$pkgname-$pkgver.tar.bz2")
+md5sums=('e4d4c90e11ab9d1a117afbbc1edd2b16')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ mkdir -p "$pkgdir/usr/share/doc/$pkgname"
+ install -m644 doc/README* doc/*.txt "$pkgdir/usr/share/doc/$pkgname/"
+}
diff --git a/testing/amarok/PKGBUILD b/testing/amarok/PKGBUILD
new file mode 100644
index 000000000..7de2e8563
--- /dev/null
+++ b/testing/amarok/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 142133 2011-11-05 11:37:31Z ibiru $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=amarok
+replaces=('amarok-base' 'amarok-engine-xine' 'amarok-base-mysqlfree')
+pkgver=2.4.3
+pkgrel=2
+pkgdesc="The powerful music player for KDE"
+arch=("i686" "x86_64")
+url="http://amarok.kde.org"
+license=('GPL2' 'LGPL2.1' 'FDL')
+depends=('kdebase-runtime' 'mysql' 'qtscriptgenerator' 'taglib-extras'
+ 'liblastfm' 'ffmpeg' 'libofa' 'qjson')
+makedepends=('pkgconfig' 'automoc4' 'cmake' 'libgpod' 'libmtp' 'loudmouth'
+ 'libmygpo-qt')
+optdepends=("libgpod: support for Apple iPod audio devices"
+ "libmtp: support for portable media devices"
+ "loudmouth: backend needed by mp3tunes for syncing"
+ "ifuse: support for Apple iPod Touch and iPhone"
+ "libmygpo-qt: gpodder.net Internet Service")
+install="${pkgname}.install"
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('24e8141bcbd065448911fa872c50197d')
+
+build() {
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package(){
+ cd "${srcdir}"/build
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/amarok/amarok.install b/testing/amarok/amarok.install
new file mode 100644
index 000000000..81ce5c4b0
--- /dev/null
+++ b/testing/amarok/amarok.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/avidemux/PKGBUILD b/testing/avidemux/PKGBUILD
new file mode 100644
index 000000000..1878008b1
--- /dev/null
+++ b/testing/avidemux/PKGBUILD
@@ -0,0 +1,120 @@
+# $Id: PKGBUILD 142119 2011-11-05 11:37:15Z ibiru $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
+
+pkgbase=avidemux
+pkgname=('avidemux-cli' 'avidemux-gtk' 'avidemux-qt')
+pkgver=2.5.5
+pkgrel=5
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://fixounet.free.fr/avidemux/"
+makedepends=('cmake' 'libxslt' 'gtk2' 'qt' 'jack' 'libvorbis' 'sdl' 'libxv' \
+ 'alsa-lib' 'lame' 'xvidcore' 'faad2' 'faac' 'x264' 'libsamplerate' \
+ 'opencore-amr' 'yasm' 'mesa' 'libvpx' 'libpulse')
+source=(http://downloads.sourceforge.net/avidemux/avidemux_${pkgver}.tar.gz
+ avidemux-2.5.4-x264-build115.patch)
+md5sums=('33bbe210c6826cea1987ed18a41d57a7'
+ '24a18b53a58b678b9e87d30566985751')
+
+build() {
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+
+ patch -Np1 -i "${srcdir}/avidemux-2.5.4-x264-build115.patch"
+
+ mkdir build
+ cd build
+ cmake -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_BUILD_TYPE=Release -D CMAKE_SKIP_RPATH=ON -D GTK=1 -D QT4=1 ..
+ make
+
+# plugin build expects libraries to be already installed; we fake a prefix
+# in build/ by symlinking all libraries to build/lib/
+ mkdir -p lib
+ cd lib
+ find ../avidemux -name '*.so*' | xargs ln -sft .
+ cd ../../plugins
+ mkdir build
+ cd build
+ cmake -D CMAKE_INSTALL_PREFIX=/usr -D AVIDEMUX_SOURCE_DIR="${srcdir}/avidemux_${pkgver}" \
+ -D AVIDEMUX_CORECONFIG_DIR="${srcdir}/avidemux_${pkgver}/build/config" \
+ -D AVIDEMUX_INSTALL_PREFIX="${srcdir}/avidemux_${pkgver}/build" \
+ -D CMAKE_BUILD_TYPE=Release -D CMAKE_SKIP_RPATH=ON ..
+ make
+}
+
+package_avidemux-cli() {
+ pkgdesc="A graphical tool to edit video (filter/re-encode/split)"
+ depends=('libxml2' 'sdl' 'fontconfig' 'libvpx')
+ optdepends=('lame: for the corresponding audio encoder plugin'
+ 'faac: for the corresponding audio encoder plugin'
+ 'faad2: for the corresponding audio decoder plugin'
+ 'opencore-amr: for the corresponding audio decoder plugin'
+ 'jack: for the corresponding audio device plugin'
+ 'libpulse: for the corresponding audio device plugin'
+ 'sdl: for the corresponding audio device plugin'
+ 'x264: for the corresponding video encoder plugin'
+ 'xvidcore: for the corresponding video encoder plugin')
+ provides=('avidemux')
+ conflicts=('avidemux')
+ replaces=('avidemux')
+
+ cd "${srcdir}/${pkgbase}_${pkgver}/build"
+ make DESTDIR="${pkgdir}" install
+
+ cd "${srcdir}/${pkgbase}_${pkgver}/plugins/build"
+ make DESTDIR="${pkgdir}" install
+ rm -r "${pkgdir}"/usr/share/avidemux
+ rm "${pkgdir}"/usr/bin/avidemux2_{gtk,qt4}
+ rm "${pkgdir}"/usr/lib/*{_gtk,_qt4,Gtk,QT4}.so
+ rm "${pkgdir}"/usr/lib/ADM_plugins/videoEncoder/x264/*{Gtk,Qt}.so
+ rm "${pkgdir}"/usr/lib/ADM_plugins/videoEncoder/xvid/*{Gtk,Qt}.so
+ rm "${pkgdir}"/usr/lib/ADM_plugins/videoFilter/*{_gtk,_qt4}.so
+
+ ln -s /usr/lib/ADM_plugins/videoEncoder/libADM_vidEnc_xvid.so "${pkgdir}/usr/lib/libADM_vidEnc_xvid.so"
+ ln -s /usr/lib/ADM_plugins/videoEncoder/libADM_vidEnc_x264.so "${pkgdir}/usr/lib/libADM_vidEnc_x264.so"
+
+ install -D -m644 ../../avidemux_icon.png "${pkgdir}/usr/share/pixmaps/avidemux.png"
+ install -D -m644 ../../man/avidemux.1 "${pkgdir}/usr/share/man/man1/avidemux.1"
+}
+
+package_avidemux-gtk() {
+ pkgdesc="A graphical tool to edit video (filter/re-encode/split) - GTK GUI"
+ depends=("avidemux-cli=${pkgver}" 'gtk2' 'libxv' 'desktop-file-utils')
+ install=avidemux.install
+
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+ install -D -m755 build/avidemux/avidemux2_gtk "${pkgdir}/usr/bin/avidemux2_gtk"
+
+ install -d "${pkgdir}"/usr/lib/ADM_plugins/videoEncoder/{x264,xvid}
+ install -d "${pkgdir}"/usr/lib/ADM_plugins/videoFilter
+
+ install -D -m755 build/lib/*{_gtk,Gtk}.so "${pkgdir}/usr/lib"
+ install -D -m755 plugins/build/ADM_videoEncoder/ADM_vidEnc_x264/gtk/*Gtk.so "${pkgdir}/usr/lib/ADM_plugins/videoEncoder/x264"
+ install -D -m755 plugins/build/ADM_videoEncoder/ADM_vidEnc_xvid/gtk/*Gtk.so "${pkgdir}/usr/lib/ADM_plugins/videoEncoder/xvid"
+ install -D -m755 plugins/build/ADM_videoFilters/*/*_gtk.so "${pkgdir}/usr/lib/ADM_plugins/videoFilter"
+
+ install -D -m644 avidemux2-gtk.desktop "${pkgdir}/usr/share/applications/avidemux-gtk.desktop"
+ sed -i "s|\[\$e\]||" "${pkgdir}/usr/share/applications/avidemux-gtk.desktop"
+}
+
+package_avidemux-qt() {
+ pkgdesc="A graphical tool to edit video (filter/re-encode/split) - QT GUI"
+ depends=("avidemux-cli=${pkgver}" 'qt')
+ install=avidemux.install
+
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+ install -D -m755 build/avidemux/avidemux2_qt4 "${pkgdir}/usr/bin/avidemux2_qt4"
+ install -d "${pkgdir}"/usr/lib/ADM_plugins/videoEncoder/{x264,xvid}
+ install -d "${pkgdir}"/usr/lib/ADM_plugins/videoFilter
+
+ install -D -m755 build/lib/*{_qt4,QT4}.so "${pkgdir}/usr/lib"
+ install -D -m755 plugins/build/ADM_videoEncoder/ADM_vidEnc_x264/qt4/*Qt.so "${pkgdir}/usr/lib/ADM_plugins/videoEncoder/x264"
+ install -D -m755 plugins/build/ADM_videoEncoder/ADM_vidEnc_xvid/qt4/*Qt.so "${pkgdir}/usr/lib/ADM_plugins/videoEncoder/xvid"
+ install -D -m755 plugins/build/ADM_videoFilters/*/*_qt4.so "${pkgdir}/usr/lib/ADM_plugins/videoFilter"
+
+ install -d "${pkgdir}/usr/share/avidemux/i18n"
+ install -D -m644 build/po/*.qm "${pkgdir}/usr/share/avidemux/i18n"
+
+ install -D -m644 avidemux2.desktop "${pkgdir}/usr/share/applications/avidemux-qt.desktop"
+ sed -i 's/Name=avidemux2/Name=avidemux (QT)/' "${pkgdir}/usr/share/applications/avidemux-qt.desktop"
+ sed -i 's/avidemux2_gtk/avidemux2_qt4/' "${pkgdir}/usr/share/applications/avidemux-qt.desktop"
+}
diff --git a/testing/avidemux/avidemux-2.5.4-x264-build115.patch b/testing/avidemux/avidemux-2.5.4-x264-build115.patch
new file mode 100644
index 000000000..c627667ec
--- /dev/null
+++ b/testing/avidemux/avidemux-2.5.4-x264-build115.patch
@@ -0,0 +1,45 @@
+diff -ru avidemux_2.5.4.orig/plugins/ADM_videoEncoder/ADM_vidEnc_x264/encoder.cpp avidemux_2.5.4/plugins/ADM_videoEncoder/ADM_vidEnc_x264/encoder.cpp
+--- avidemux_2.5.4.orig/plugins/ADM_videoEncoder/ADM_vidEnc_x264/encoder.cpp 2011-04-28 22:35:36.000000000 +0200
++++ avidemux_2.5.4/plugins/ADM_videoEncoder/ADM_vidEnc_x264/encoder.cpp 2011-04-28 22:40:26.000000000 +0200
+@@ -488,8 +488,10 @@
+ printf("[x264] analyse.b_transform_8x8 = %d\n", x264Param->analyse.b_transform_8x8);
+ printf("[x264] analyse.inter = %d\n", x264Param->analyse.inter);
+ printf("[x264] b_cabac = %d\n", x264Param->b_cabac);
+-#if X264_BUILD > 101
++#if X264_BUILD > 101 && X264_BUILD < 115
+ printf("[x264] i_open_gop = %d\n", x264Param->i_open_gop);
++#elif X264_BUILD > 114
++ printf("[x264] b_open_gop = %d\n", x264Param->b_open_gop);
+ #endif
+ printf("[x264] b_interlaced = %d\n", x264Param->b_interlaced);
+ #if X264_BUILD > 88
+diff -ru avidemux_2.5.4.orig/plugins/ADM_videoEncoder/ADM_vidEnc_x264/x264Options.cpp avidemux_2.5.4/plugins/ADM_videoEncoder/ADM_vidEnc_x264/x264Options.cpp
+--- avidemux_2.5.4.orig/plugins/ADM_videoEncoder/ADM_vidEnc_x264/x264Options.cpp 2011-04-28 22:35:36.000000000 +0200
++++ avidemux_2.5.4/plugins/ADM_videoEncoder/ADM_vidEnc_x264/x264Options.cpp 2011-04-28 22:43:36.000000000 +0200
+@@ -417,7 +417,7 @@
+ _param.b_cabac = cabac;
+ }
+
+-#if X264_BUILD > 101
++#if X264_BUILD > 101 && X264_BUILD < 115
+ unsigned int x264Options::getOpenGopMode(void)
+ {
+ return _param.i_open_gop;
+@@ -428,6 +428,17 @@
+ if (openGopMode < 3)
+ _param.i_open_gop = openGopMode;
+ }
++#elif X264_BUILD > 114
++unsigned int x264Options::getOpenGopMode(void)
++{
++ return _param.b_open_gop;
++}
++
++void x264Options::setOpenGopMode(unsigned int openGopMode)
++{
++ if (openGopMode < 3)
++ _param.b_open_gop = openGopMode;
++}
+ #endif
+
+ unsigned int x264Options::getInterlaced(void)
diff --git a/testing/avidemux/avidemux.install b/testing/avidemux/avidemux.install
new file mode 100644
index 000000000..e111ef946
--- /dev/null
+++ b/testing/avidemux/avidemux.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/bash/PKGBUILD b/testing/bash/PKGBUILD
new file mode 100644
index 000000000..3e3ba3663
--- /dev/null
+++ b/testing/bash/PKGBUILD
@@ -0,0 +1,101 @@
+# $Id: PKGBUILD 141911 2011-11-03 05:56:41Z allan $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Maintainer: Allan McRae <allan@archlinux.org>
+
+pkgname=bash
+_basever=4.2
+_patchlevel=010 #prepare for some patches
+pkgver=$_basever.$_patchlevel
+pkgrel=2
+pkgdesc="The GNU Bourne Again shell"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnu.org/software/bash/bash.html"
+groups=('base')
+backup=(etc/bash.bash{rc,_logout} etc/skel/.bash{rc,_profile,_logout})
+depends=('readline>=6.1' 'glibc')
+provides=('sh')
+install=bash.install
+source=(http://ftp.gnu.org/gnu/bash/bash-$_basever.tar.gz{,.sig}
+ dot.bashrc
+ dot.bash_profile
+ dot.bash_logout
+ system.bashrc
+ system.bash_logout)
+if [ $_patchlevel -gt 000 ]; then
+ for (( p=1; p<=$((10#${_patchlevel})); p++ )); do
+ source=(${source[@]} http://ftp.gnu.org/gnu/bash/bash-$_basever-patches/bash${_basever//./}-$(printf "%03d" $p){,.sig})
+ done
+fi
+
+build() {
+ cd ${srcdir}/${pkgname}-$_basever
+ for (( p=1; p<=$((10#${_patchlevel})); p++ )); do
+ msg "applying patch bash${_basever//./}-$(printf "%03d" $p)"
+ patch -Np0 -i $srcdir/bash${_basever//./}-$(printf "%03d" $p)
+ done
+
+ _bashconfig=(-DDEFAULT_PATH_VALUE=\'\"/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin\"\'
+ -DSTANDARD_UTILS_PATH=\'\"/usr/bin:/bin:/usr/sbin:/sbin\"\'
+ -DSYS_BASHRC=\'\"/etc/bash.bashrc\"\'
+ -DSYS_BASH_LOGOUT=\'\"/etc/bash.bash_logout\"\')
+ export CFLAGS="${CFLAGS} ${_bashconfig[@]}"
+
+ ./configure --prefix=/usr --with-curses --enable-readline \
+ --without-bash-malloc --with-installed-readline \
+ --bindir=/bin --mandir=/usr/share/man --infodir=/usr/share/info
+ make
+}
+
+check() {
+ cd ${srcdir}/${pkgname}-$_basever
+ make check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-$_basever
+ make DESTDIR=${pkgdir} install
+
+ # for now, bash is our default /bin/sh
+ cd ${pkgdir}/bin
+ ln -s bash sh
+
+ install -dm755 ${pkgdir}/etc/skel/
+
+ # system-wide configuration files
+ install -m644 ${srcdir}/system.bashrc ${pkgdir}/etc/bash.bashrc
+ install -m644 ${srcdir}/system.bash_logout ${pkgdir}/etc/bash.bash_logout
+
+ # user configuration file skeletons
+ install -m644 ${srcdir}/dot.bashrc ${pkgdir}/etc/skel/.bashrc
+ install -m644 ${srcdir}/dot.bash_profile ${pkgdir}/etc/skel/.bash_profile
+ install -m644 ${srcdir}/dot.bash_logout ${pkgdir}/etc/skel/.bash_logout
+}
+
+md5sums=('3fb927c7c33022f1c327f14a81c0d4b0'
+ '8d37a3f97a48c1e56e1a4ded877ed944'
+ '027d6bd8f5f6a06b75bb7698cb478089'
+ '2902e0fee7a9168f3a4fd2ccd60ff047'
+ '42f4400ed2314bd7519c020d0187edc5'
+ 'fe5d3a367f7d5f754214dc05e3d958ab'
+ '472f536d7c9e8250dc4568ec4cfaf294'
+ '1100bc1dda2cdc06ac44d7e5d17864a3'
+ 'a7184b76eb4a079f10174a0a8f574819'
+ '30e7948079921d3261efcc6a40722135'
+ 'c4d45307f7e69fe508ce347c4cec1955'
+ '9ea06decec43a198f3d7cf29acc602f8'
+ '74bddae6eeb9227a04a467d42597a34d'
+ 'fb48f6134d7b013135929476aa0c250c'
+ '3e6a18226b16c773229246abd07a1f5e'
+ 'e70e45de33426b38153b390be0dbbcd4'
+ 'e667dc9348ebc3e0e14bfdd87f4b6ff2'
+ 'ce4e5c484993705b27daa151eca242c2'
+ '41cbd8e57589bc081a546a014ddb12f8'
+ '88d1f96db29461767602e2546803bda7'
+ 'b8b781520f4c7493a2a1ac3010a44a44'
+ '24c574bf6d6a581e300823d9c1276af6'
+ '354a0899a7c4b446454c52546562b55b'
+ '4c5835f2fbab36c4292bb334977e5b6d'
+ 'ff4547ca7b508d52101729d61f5b77b6'
+ '0a51602b535ef661ee707be6c8bdb373'
+ 'cec7c92a4d8052ea4b29216365d16566')
diff --git a/testing/bash/bash.install b/testing/bash/bash.install
new file mode 100644
index 000000000..bc75e9b6a
--- /dev/null
+++ b/testing/bash/bash.install
@@ -0,0 +1,20 @@
+info_dir=usr/share/info
+info_files=(bash.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for f in ${info_files[@]}; do
+ usr/bin/install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for f in ${info_files[@]}; do
+ usr/bin/install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
diff --git a/testing/bash/dot.bash_logout b/testing/bash/dot.bash_logout
new file mode 100644
index 000000000..0e4e4f184
--- /dev/null
+++ b/testing/bash/dot.bash_logout
@@ -0,0 +1,3 @@
+#
+# ~/.bash_logout
+#
diff --git a/testing/bash/dot.bash_profile b/testing/bash/dot.bash_profile
new file mode 100644
index 000000000..5545f007e
--- /dev/null
+++ b/testing/bash/dot.bash_profile
@@ -0,0 +1,5 @@
+#
+# ~/.bash_profile
+#
+
+[[ -f ~/.bashrc ]] && . ~/.bashrc
diff --git a/testing/bash/dot.bashrc b/testing/bash/dot.bashrc
new file mode 100644
index 000000000..a355b0cd3
--- /dev/null
+++ b/testing/bash/dot.bashrc
@@ -0,0 +1,9 @@
+#
+# ~/.bashrc
+#
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+alias ls='ls --color=auto'
+PS1='[\u@\h \W]\$ '
diff --git a/testing/bash/system.bash_logout b/testing/bash/system.bash_logout
new file mode 100644
index 000000000..a76e48e4a
--- /dev/null
+++ b/testing/bash/system.bash_logout
@@ -0,0 +1,3 @@
+#
+# /etc/bash.bash_logout
+#
diff --git a/testing/bash/system.bashrc b/testing/bash/system.bashrc
new file mode 100644
index 000000000..84de2898c
--- /dev/null
+++ b/testing/bash/system.bashrc
@@ -0,0 +1,23 @@
+#
+# /etc/bash.bashrc
+#
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+PS1='[\u@\h \W]\$ '
+PS2='> '
+PS3='> '
+PS4='+ '
+
+case ${TERM} in
+ xterm*|rxvt*|Eterm|aterm|kterm|gnome*)
+ PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
+
+ ;;
+ screen)
+ PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033_%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
+ ;;
+esac
+
+[ -r /etc/bash_completion ] && . /etc/bash_completion
diff --git a/testing/bison/ChangeLog b/testing/bison/ChangeLog
new file mode 100644
index 000000000..5bb22be1d
--- /dev/null
+++ b/testing/bison/ChangeLog
@@ -0,0 +1,19 @@
+2010-03-25 Eric Belanger <eric@archlinux.org>
+
+ * bison 2.4.2-1
+ * Upstream update
+ * Removed texinfo dependency in install scriptlet
+ * Updated license
+ * Added sh depends
+
+2008-12-11 Eric Belanger <eric@archlinux.org>
+
+ * bison 2.4.1-1
+ * Upstream update
+
+2008-11-08 Eric Belanger <eric@archlinux.org>
+
+ * bison 2.4-1
+ * Upstream update
+ * Added info file support
+ * Added ChangeLog
diff --git a/testing/bison/PKGBUILD b/testing/bison/PKGBUILD
new file mode 100644
index 000000000..51af7528f
--- /dev/null
+++ b/testing/bison/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 141913 2011-11-03 06:08:40Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+
+pkgname=bison
+pkgver=2.5
+pkgrel=2
+pkgdesc="The GNU general-purpose parser generator"
+arch=('i686' 'x86_64')
+license=('GPL3')
+url="http://www.gnu.org/software/bison/bison.html"
+depends=('glibc' 'm4' 'sh')
+groups=('base-devel')
+install=bison.install
+source=(ftp://ftp.gnu.org/gnu/bison/${pkgname}-${pkgver}.tar.bz2{,.sig})
+md5sums=('9dba20116b13fc61a0846b0058fbe004'
+ '610b73db67bd4760209458efe7554ca3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --datadir=/usr/share
+ make
+}
+
+check() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make check
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/bison/bison.install b/testing/bison/bison.install
new file mode 100644
index 000000000..0081a194f
--- /dev/null
+++ b/testing/bison/bison.install
@@ -0,0 +1,16 @@
+infodir=usr/share/info
+file=bison.info.gz
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+}
diff --git a/testing/blender/PKGBUILD b/testing/blender/PKGBUILD
new file mode 100644
index 000000000..d23728377
--- /dev/null
+++ b/testing/blender/PKGBUILD
@@ -0,0 +1,93 @@
+# $Id: PKGBUILD 142137 2011-11-05 11:37:38Z ibiru $
+# Contributor: John Sowiak <john@archlinux.org>
+# Maintainer: tobias <tobias@archlinux.org>
+
+# Apparently, the blender guys refuse to release source tarballs for
+# intermediate releases that deal mainly with binaries but incorporate tiny
+# minor changes from svn. Since I'm sick and tired of the urges of users that
+# look for release numbers only, we make a messy PKGBUILD that can checkout svn
+# release if necessary.
+
+#_svn=true
+_svn=false
+
+pkgname=blender
+pkgver=2.60a
+pkgrel=2
+epoch=3
+pkgdesc="A fully integrated 3D graphics creation suite"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.blender.org"
+depends=('libpng' 'libtiff' 'openexr' 'python' 'desktop-file-utils' \
+ 'shared-mime-info' 'hicolor-icon-theme' 'xdg-utils' 'glew' \
+ 'freetype2' 'openal' 'libsndfile' 'ffmpeg')
+makedepends=('cmake')
+install=blender.install
+if [ $_svn = false ]; then
+ source=(http://download.blender.org/source/$pkgname-$pkgver.tar.gz)
+ md5sums=('cc7e4a56c9f7941c33c958ff0338f9a6')
+else
+ source=(ftp://ftp.archlinux.org/other/${pkgname}/$pkgname-$pkgver.tar.xz)
+ md5sums=('7579d1139d0d6025df8afcfca64a65c4')
+fi
+
+# source PKGBUILD && mksource
+mksource() {
+ [[ -x /usr/bin/svn ]] || (echo "svn not found. Install subversion." && return 1)
+ _svnver=38016
+ _svntrunk="https://svn.blender.org/svnroot/bf-blender/trunk/blender"
+ _svnmod="$pkgname-$pkgver"
+ mkdir ${pkgname}-$pkgver
+ pushd ${pkgname}-$pkgver
+ svn co $_svntrunk --config-dir ./ -r $_svnver $_svnmod
+ find . -depth -type d -name .svn -exec rm -rf {} \;
+ tar -cJf ../${pkgname}-$pkgver.tar.xz ${pkgname}-$pkgver/*
+ popd
+}
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ mkdir build
+ cd build
+
+ [[ $CARCH == i686 ]] && ENABLESSE2="-DSUPPORT_SSE2_BUILD:BOOL=OFF"
+
+ cmake .. \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_BUILD_TYPE:STRING=Release \
+ -DWITH_INSTALL_PORTABLE:BOOL=OFF \
+ -DWITH_PYTHON_INSTALL:BOOL=OFF \
+ -DWITH_OPENCOLLADA:BOOL=OFF \
+ -DWITH_GAMEENGINE:BOOL=ON \
+ -DWITH_PLAYER:BOOL=ON \
+ -DWITH_BUILTIN_GLEW:BOOL=OFF \
+ -DWITH_CODEC_FFMPEG:BOOL=ON \
+ -DWITH_CODEC_SNDFILE:BOOL=ON \
+ -DPYTHON_VERSION:STRING=3.2 \
+ -DPYTHON_LIBPATH:STRING=/usr/lib \
+ -DPYTHON_LIBRARY:STRING=python3.2mu \
+ -DPYTHON_INCLUDE_DIRS:STRING=/usr/include/python3.2mu \
+ $ENABLESSE2
+
+ make $MAKEFLAGS
+
+ cp -rf "$srcdir"/${pkgname}-$pkgver/release/plugins/* \
+ "$srcdir"/${pkgname}-$pkgver/source/blender/blenpluginapi/
+ cd "$srcdir"/${pkgname}-$pkgver/source/blender/blenpluginapi
+ chmod 755 bmake
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver/build"
+ make DESTDIR="${pkgdir}" install
+ python -m compileall "${pkgdir}/usr/share/blender"
+
+# install plugins
+ install -d -m755 "$pkgdir"/usr/share/blender/${pkgver%[a-z]}/plugins/{sequence,texture}
+ cp "$srcdir"/${pkgname}-$pkgver/source/blender/blenpluginapi/sequence/*.so \
+ "$pkgdir"/usr/share/blender/${pkgver%[a-z]}/plugins/sequence/
+ cp "$srcdir"/${pkgname}-$pkgver/source/blender/blenpluginapi/texture/*.so \
+ "$pkgdir"/usr/share/blender/${pkgver%[a-z]}/plugins/texture/
+}
diff --git a/testing/blender/blender.install b/testing/blender/blender.install
new file mode 100644
index 000000000..724bfce00
--- /dev/null
+++ b/testing/blender/blender.install
@@ -0,0 +1,13 @@
+post_install() {
+ update-desktop-database -q
+ update-mime-database usr/share/mime &> /dev/null
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/bzip2/PKGBUILD b/testing/bzip2/PKGBUILD
new file mode 100644
index 000000000..7a1b27f94
--- /dev/null
+++ b/testing/bzip2/PKGBUILD
@@ -0,0 +1,69 @@
+# $Id: PKGBUILD 141996 2011-11-03 21:01:23Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Judd <jvinet@zeroflux.org>
+
+pkgname=bzip2
+pkgver=1.0.6
+pkgrel=3
+pkgdesc="A high-quality data compression program"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://sources.redhat.com/bzip2"
+groups=('base')
+depends=('glibc')
+source=(http://www.bzip.org/$pkgver/bzip2-$pkgver.tar.gz
+ bzip2-1.0.4-bzip2recover.patch)
+sha1sums=('3f89f861209ce81a6bab1fd1998c0ef311712002'
+ '85ce76fdb67f52f152bba368c1de81132dcdbdb5')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # add large-file support
+ sed -e 's/^CFLAGS=\(.*\)$/CFLAGS=\1 \$(BIGFILES)/' -i ./Makefile-libbz2_so
+
+ # use our optimization
+ sed -i "s|-O2|${CFLAGS}|g" Makefile
+ sed -i "s|-O2|${CFLAGS}|g" Makefile-libbz2_so
+
+ patch -Np1 < ../bzip2-1.0.4-bzip2recover.patch
+
+ make -f Makefile-libbz2_so
+ make bzip2 bzip2recover libbz2.a
+}
+
+check() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make test
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ install -dm755 $pkgdir/bin
+ install -m755 bzip2-shared $pkgdir/bin/bzip2
+ install -m755 bzip2recover $pkgdir/bin
+ ln -sf bzip2 $pkgdir/bin/bunzip2
+ ln -sf bzip2 $pkgdir/bin/bzcat
+
+ install -dm755 $pkgdir/usr/bin
+ install -m755 bzdiff bzgrep bzmore $pkgdir/usr/bin
+
+ install -Dm755 libbz2.so.1.0.6 $pkgdir/lib/libbz2.so.1.0.6
+ ln -s libbz2.so.1.0.6 $pkgdir/lib/libbz2.so
+ ln -s libbz2.so.1.0.6 $pkgdir/lib/libbz2.so.1
+ ln -s libbz2.so.1.0.6 $pkgdir/lib/libbz2.so.1.0
+
+ install -Dm644 libbz2.a ${pkgdir}/usr/lib/libbz2.a
+ ln -sf ../../lib/libbz2.so ${pkgdir}/usr/lib/libbz2.so
+
+ install -Dm644 bzlib.h $pkgdir/usr/include/bzlib.h
+
+ install -Dm644 bzip2.1 $pkgdir/usr/share/man/man1/bzip2.1
+ ln -sf bzip2.1 $pkgdir/usr/share/man/man1/bunzip2.1
+ ln -sf bzip2.1 $pkgdir/usr/share/man/man1/bzcat.1
+ ln -sf bzip2.1 $pkgdir/usr/share/man/man1/bzip2recover.1
+
+ install -Dm644 $srcdir/${pkgname}-${pkgver}/LICENSE \
+ $pkgdir/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/testing/bzip2/bzip2-1.0.4-bzip2recover.patch b/testing/bzip2/bzip2-1.0.4-bzip2recover.patch
new file mode 100644
index 000000000..e2bfe1cc1
--- /dev/null
+++ b/testing/bzip2/bzip2-1.0.4-bzip2recover.patch
@@ -0,0 +1,12 @@
+--- bzip2-1.0.4/bzip2recover.c.pom 2007-01-03 03:00:55.000000000 +0100
++++ bzip2-1.0.4/bzip2recover.c 2007-02-05 11:55:17.000000000 +0100
+@@ -309,7 +309,8 @@
+ UInt32 buffHi, buffLo, blockCRC;
+ Char* p;
+
+- strcpy ( progName, argv[0] );
++ strncpy ( progName, argv[0], BZ_MAX_FILENAME-1);
++ progName[BZ_MAX_FILENAME-1]='\0';
+ inFileName[0] = outFileName[0] = 0;
+
+ fprintf ( stderr,
diff --git a/testing/cmus/PKGBUILD b/testing/cmus/PKGBUILD
new file mode 100644
index 000000000..15cc1fd2e
--- /dev/null
+++ b/testing/cmus/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 142139 2011-11-05 11:37:41Z ibiru $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=cmus
+pkgver=2.4.2
+pkgrel=2
+pkgdesc="A very feature-rich ncurses-based music player"
+arch=('i686' 'x86_64')
+url="http://cmus.sourceforge.net/"
+license=('GPL')
+depends=('ncurses')
+makedepends=('libao' 'libmpcdec' 'ffmpeg' 'flac' 'libmad' 'faad2' 'libmodplug'
+ 'libvorbis' 'libpulse' 'wavpack' 'libmp4v2')
+optdepends=('alsa-lib: for ALSA output plugin support'
+ 'libao: for AO output plugin support'
+ 'libpulse: for PulseAudio output plugin support'
+ 'ffmpeg: for ffmpeg input plugin support'
+ 'libmodplug: for modplug input plugin support'
+ 'faad2: for input AAC plugin support'
+ 'libmad: for mp3 input plugin support'
+ 'libmpcdec: for musepack input plugin support'
+ 'wavpack: for wavpack input plugin support'
+ 'libvorbis: for vorbis input plugin support'
+ 'flac: for flac input plugin support'
+ 'libmp4v2: for mp4 input plugin support')
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-v$pkgver.tar.bz2")
+md5sums=('f3ed7f14db20344ad7386aef48b98a4c')
+sha1sums=('12573e96e03435eca9b8a4aaeeb13a2da66f40a4')
+
+build() {
+ cd "$srcdir/$pkgname-v$pkgver"
+ ./configure prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-v$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -D -m 644 contrib/_cmus "$pkgdir/usr/share/zsh/site-functions/_cmus"
+}
diff --git a/testing/cryptsetup/PKGBUILD b/testing/cryptsetup/PKGBUILD
index 6210e7418..e3c2872f5 100644
--- a/testing/cryptsetup/PKGBUILD
+++ b/testing/cryptsetup/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 141489 2011-10-30 23:10:21Z thomas $
+# $Id: PKGBUILD 141965 2011-11-03 18:49:44Z thomas $
# Maintainer: Thomas Bächler <thomas@archlinux.org>
pkgname=cryptsetup
pkgver=1.4.0
-pkgrel=1
+pkgrel=2
pkgdesc="Userspace setup tool for transparent encryption of block devices using dm-crypt"
arch=(i686 x86_64)
license=('GPL')
@@ -13,23 +13,26 @@ conflicts=('mkinitcpio<0.7')
options=('!libtool' '!emptydirs')
source=(http://cryptsetup.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2
encrypt_hook
- encrypt_install)
+ encrypt_install
+ cryptsetup-fix-crypt_get_volume_key_size-for-plain-device.patch)
sha256sums=('96d682853c8019cfeae0b21250cd2d00af42e46251807e8dbda2ff8427c2e9ed'
'811bbea1337106ad811731c746d73ee81039bad00aef52398e3a377ad0766757'
- 'd4380195351b70abf8fcb3cd19461879c55a7a07e4915d1f0365b295b112a573')
+ 'd4380195351b70abf8fcb3cd19461879c55a7a07e4915d1f0365b295b112a573'
+ '6fa1d3172014ba3ba96f7a67acbcae7f26b24a61abb84b3917f526a54f81dd87')
build() {
- cd $srcdir/$pkgname-${pkgver}
+ cd "${srcdir}"/$pkgname-${pkgver}
+ patch -p0 -i "${srcdir}"/cryptsetup-fix-crypt_get_volume_key_size-for-plain-device.patch
./configure --prefix=/usr --disable-static --sbindir=/sbin --libdir=/lib
make
}
package() {
- cd $srcdir/$pkgname-${pkgver}
- make DESTDIR=$pkgdir install
+ cd "${srcdir}"/$pkgname-${pkgver}
+ make DESTDIR="${pkgdir}" install
# install hook
- install -D -m644 $srcdir/encrypt_hook $pkgdir/lib/initcpio/hooks/encrypt
- install -D -m644 $srcdir/encrypt_install $pkgdir/lib/initcpio/install/encrypt
+ install -D -m644 "${srcdir}"/encrypt_hook "${pkgdir}"/lib/initcpio/hooks/encrypt
+ install -D -m644 "${srcdir}"/encrypt_install "${pkgdir}"/lib/initcpio/install/encrypt
# Fix pkgconfig location
- install -d -m755 $pkgdir/usr/lib
- mv $pkgdir/lib/pkgconfig $pkgdir/usr/lib/
+ install -d -m755 "${pkgdir}"/usr/lib
+ mv "${pkgdir}"/lib/pkgconfig "${pkgdir}"/usr/lib/
}
diff --git a/testing/cryptsetup/cryptsetup-fix-crypt_get_volume_key_size-for-plain-device.patch b/testing/cryptsetup/cryptsetup-fix-crypt_get_volume_key_size-for-plain-device.patch
new file mode 100644
index 000000000..f35226122
--- /dev/null
+++ b/testing/cryptsetup/cryptsetup-fix-crypt_get_volume_key_size-for-plain-device.patch
@@ -0,0 +1,94 @@
+Index: ChangeLog
+===================================================================
+--- ChangeLog (Revision 664)
++++ ChangeLog (Revision 665)
+@@ -1,3 +1,6 @@
++2011-10-27 Milan Broz <mbroz@redhat.com>
++ * Fix crypt_get_volume_key_size() for plain device.
++
+ 2011-10-25 Milan Broz <mbroz@redhat.com>
+ * Print informative message in isLuks only in verbose mode.
+ * Version 1.4.0.
+Index: tests/api-test.c
+===================================================================
+--- tests/api-test.c (Revision 664)
++++ tests/api-test.c (Revision 665)
+@@ -660,6 +660,11 @@
+
+ FAIL_(crypt_init_by_name_and_header(&cd, CDEVICE_1, H_DEVICE),"can't init plain device by header device");
+ OK_(crypt_init_by_name(&cd, CDEVICE_1));
++ OK_(strcmp(cipher_mode,crypt_get_cipher_mode(cd)));
++ OK_(strcmp(cipher,crypt_get_cipher(cd)));
++ EQ_((int)key_size, crypt_get_volume_key_size(cd));
++ EQ_(params.skip, crypt_get_iv_offset(cd));
++ EQ_(params.offset, crypt_get_data_offset(cd));
+ OK_(crypt_deactivate(cd, CDEVICE_1));
+ crypt_free(cd);
+
+Index: lib/setup.c
+===================================================================
+--- lib/setup.c (Revision 664)
++++ lib/setup.c (Revision 665)
+@@ -56,6 +56,7 @@
+ char *plain_cipher;
+ char *plain_cipher_mode;
+ char *plain_uuid;
++ unsigned int plain_key_size;
+
+ /* used in CRYPT_LOOPAES */
+ struct crypt_params_loopaes loopaes_hdr;
+@@ -677,6 +678,7 @@
+ (*cd)->plain_hdr.hash = NULL; /* no way to get this */
+ (*cd)->plain_hdr.offset = dmd.offset;
+ (*cd)->plain_hdr.skip = dmd.iv_offset;
++ (*cd)->plain_key_size = dmd.vk->keylength;
+
+ r = crypt_parse_name_and_mode(dmd.cipher, cipher, NULL, cipher_mode);
+ if (!r) {
+@@ -754,6 +756,7 @@
+ return -EINVAL;
+ }
+
++ cd->plain_key_size = volume_key_size;
+ cd->volume_key = crypt_alloc_volume_key(volume_key_size, NULL);
+ if (!cd->volume_key)
+ return -ENOMEM;
+@@ -1516,7 +1519,7 @@
+ }
+
+ r = process_key(cd, cd->plain_hdr.hash,
+- cd->volume_key->keylength,
++ cd->plain_key_size,
+ passphrase, passphrase_size, &vk);
+ if (r < 0)
+ goto out;
+@@ -1586,7 +1589,7 @@
+ goto out;
+
+ r = process_key(cd, cd->plain_hdr.hash,
+- cd->volume_key->keylength,
++ cd->plain_key_size,
+ passphrase_read, passphrase_size_read, &vk);
+ if (r < 0)
+ goto out;
+@@ -1658,8 +1661,7 @@
+ if (!name)
+ return -EINVAL;
+
+- if (!volume_key || !volume_key_size || !cd->volume_key ||
+- volume_key_size != cd->volume_key->keylength) {
++ if (!volume_key || !volume_key_size || volume_key_size != cd->plain_key_size) {
+ log_err(cd, _("Incorrect volume key specified for plain device.\n"));
+ return -EINVAL;
+ }
+@@ -1976,8 +1978,8 @@
+
+ int crypt_get_volume_key_size(struct crypt_device *cd)
+ {
+- if (isPLAIN(cd->type) && cd->volume_key)
+- return cd->volume_key->keylength;
++ if (isPLAIN(cd->type))
++ return cd->plain_key_size;
+
+ if (isLUKS(cd->type))
+ return cd->hdr.keyBytes;
diff --git a/testing/db/PKGBUILD b/testing/db/PKGBUILD
new file mode 100644
index 000000000..7577ca553
--- /dev/null
+++ b/testing/db/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 142046 2011-11-04 22:40:39Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=db
+pkgver=5.2.36
+pkgrel=2
+pkgdesc="The Berkeley DB embedded database system"
+arch=('i686' 'x86_64')
+url="http://www.oracle.com/technology/software/products/berkeley-db/index.html"
+license=('custom')
+depends=('gcc-libs' 'sh')
+options=('!libtool')
+install=db.install
+source=(http://download.oracle.com/berkeley-db/db-${pkgver}.tar.gz)
+sha1sums=('1a7997e5bcdf504a439f90d9eaed63864806ed5f')
+
+build() {
+ cd "${srcdir}/$pkgname-${pkgver}/build_unix"
+ ../dist/configure --prefix=/usr --enable-compat185 \
+ --enable-shared --enable-static --enable-cxx --enable-dbm
+ make LIBSO_LIBS=-lpthread
+}
+
+package() {
+ cd "${srcdir}/$pkgname-${pkgver}/build_unix"
+ make DESTDIR="${pkgdir}" install
+ rm -rf "${pkgdir}"/usr/docs
+ install -Dm644 "${srcdir}"/${pkgname}-${pkgver}/LICENSE \
+ "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/testing/db/db.install b/testing/db/db.install
new file mode 100644
index 000000000..03b64042d
--- /dev/null
+++ b/testing/db/db.install
@@ -0,0 +1,5 @@
+post_upgrade() {
+ if [ "$(vercmp $2 5.1)" -lt 0 ]; then
+ echo " >> Major version update. Consider running db_upgrade on Berkeley DB databases."
+ fi
+}
diff --git a/testing/dhcpcd/PKGBUILD b/testing/dhcpcd/PKGBUILD
new file mode 100644
index 000000000..422486a8e
--- /dev/null
+++ b/testing/dhcpcd/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 142023 2011-11-04 06:51:06Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Tom Killian <tom.archlinux.org>
+# Contributor: Judd Vinet <jvinet.zeroflux.org>
+
+pkgname=dhcpcd
+pkgver=5.2.12
+pkgrel=3
+pkgdesc="RFC2131 compliant DHCP client daemon"
+url="http://roy.marples.name/dhcpcd/"
+arch=('i686' 'x86_64')
+license=('BSD')
+groups=('base')
+depends=('glibc' 'sh' 'inetutils' 'iproute2')
+backup=('etc/conf.d/dhcpcd' 'etc/dhcpcd.conf')
+options=('emptydirs') # We Need the Empty /var/lib/dhcpcd Directory
+source=("http://roy.marples.name/downloads/$pkgname/$pkgname-$pkgver.tar.bz2" \
+ 'dhcpcd.conf.d' 'remove_ifconfig.patch')
+sha1sums=('27378a251705c7888332e6d60eea7805d1f8aeb5'
+ 'b67b9ce6a2faaca75fea356966a16be2283b7db0'
+ 'de3e14a24b479b2832c6671ba12586444bd86ebe')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # remove ifconfig call but use ip (iproute2) instead
+ patch -Np0 -i ${srcdir}/remove_ifconfig.patch
+
+ # configure variables
+ ./configure --libexecdir=/usr/lib/dhcpcd --dbdir=/var/lib/dhcpcd
+
+ # Build
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # Create Binary Symlink
+ install -d ${pkgdir}/usr/sbin
+ ln -sf /sbin/dhcpcd ${pkgdir}/usr/sbin/dhcpcd
+
+ # Install Configuration File used in /etc/rc.d/network
+ install -D -m644 ../dhcpcd.conf.d $pkgdir/etc/conf.d/$pkgname
+
+ # Install License
+ install -d $pkgdir/usr/share/licenses/$pkgname
+ awk '{if(FNR<27)print $0}' ${srcdir}/${pkgname}-${pkgver}/configure.h \
+ >> ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+
+ # Set Options in /etc/dhcpcd.conf
+ echo noipv4ll >> ${pkgdir}/etc/dhcpcd.conf # Disable ip4vall
+}
diff --git a/testing/dhcpcd/dhcpcd.conf.d b/testing/dhcpcd/dhcpcd.conf.d
new file mode 100644
index 000000000..83c6f14ad
--- /dev/null
+++ b/testing/dhcpcd/dhcpcd.conf.d
@@ -0,0 +1,6 @@
+#
+# Arguments to be passed to the DHCP client daemon
+#
+
+DHCPCD_ARGS="-q"
+
diff --git a/testing/dhcpcd/remove_ifconfig.patch b/testing/dhcpcd/remove_ifconfig.patch
new file mode 100644
index 000000000..5bcc4a68f
--- /dev/null
+++ b/testing/dhcpcd/remove_ifconfig.patch
@@ -0,0 +1,20 @@
+--- dhcpcd-hooks/10-mtu.orig 2011-11-04 07:45:46.477712667 +0100
++++ dhcpcd-hooks/10-mtu 2011-11-04 07:46:38.964379550 +0100
+@@ -7,7 +7,7 @@
+ elif [ -n "$new_interface_mtu" ] && $if_up; then
+ # The smalled MTU dhcpcd can work with is 576
+ if [ "$new_interface_mtu" -ge 576 ]; then
+- if ifconfig "$interface" mtu "$new_interface_mtu"; then
++ if ip link set "$interface" mtu "$new_interface_mtu"; then
+ syslog info "$interface: MTU set to $new_interface_mtu"
+ # Save the MTU so we can restore it later
+ if [ ! -e "$mtu_dir/$interface" ]; then
+@@ -21,7 +21,7 @@
+ # No MTU in this state, so restore the prior MTU
+ mtu=$(cat "$mtu_dir/$interface")
+ syslog info "$interface: MTU restored to $mtu"
+- ifconfig "$interface" mtu "$mtu"
++ ip link set "$interface" mtu "$new_interface_mtu"
+ rm "$mtu_dir/$interface"
+ fi
+ fi
diff --git a/testing/dialog/PKGBUILD b/testing/dialog/PKGBUILD
new file mode 100644
index 000000000..e1f83a78f
--- /dev/null
+++ b/testing/dialog/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 142048 2011-11-04 22:42:38Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=dialog
+pkgver=1.1_20111020
+pkgrel=1
+pkgdesc="A tool to display dialog boxes from shell scripts"
+arch=('i686' 'x86_64')
+url="http://invisible-island.net/dialog/"
+license=('LGPL2.1')
+depends=('ncurses')
+source=(ftp://invisible-island.net/${pkgname}/${pkgname}-${pkgver/_/-}.tgz)
+sha1sums=('ddabc0950275db4e9cef382a862ff3b20746e843')
+
+build() {
+ cd "${srcdir}/$pkgname-${pkgver/_/-}"
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --with-ncursesw --enable-nls
+ make
+}
+
+package() {
+ cd "${srcdir}/$pkgname-${pkgver/_/-}"
+ make DESTDIR="${pkgdir}" install install-lib
+}
diff --git a/testing/dnsutils/PKGBUILD b/testing/dnsutils/PKGBUILD
new file mode 100644
index 000000000..a159d301b
--- /dev/null
+++ b/testing/dnsutils/PKGBUILD
@@ -0,0 +1,55 @@
+# $Id: PKGBUILD 142025 2011-11-04 07:03:15Z bisson $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: kevin <kevin@archlinux.org>
+# Contributor: mario <mario_vazq@hotmail.com>
+
+pkgname=dnsutils
+
+# Use a period and not a hyphen before the patch level for proper versioning.
+pkgver=9.8.1
+_pkgver=9.8.1
+pkgrel=2
+
+pkgdesc='DNS utilities: dig host nslookup'
+url='http://www.isc.org/software/bind/'
+license=('custom:ISC')
+arch=('i686' 'x86_64')
+options=('!makeflags')
+depends=('openssl' 'krb5' 'idnkit')
+source=("http://ftp.isc.org/isc/bind9/${_pkgver}/bind-${_pkgver}.tar.gz"
+ 'remove-bind.patch')
+sha1sums=('7e6ed6ebc896b1de33a9f440233066c60539de4c'
+ 'b465ef6160b004838f04de9978fe1be8422af777')
+
+replaces=('bind-tools' 'host')
+
+build() {
+ cd "${srcdir}/bind-${_pkgver}"
+
+ patch -p1 -i ../remove-bind.patch
+ export STD_CDEFINES='-DDIG_SIGCHASE'
+
+ # hack to remove unused bloat from the binaries
+ CFLAGS+=' -fdata-sections -ffunction-sections'
+ LDFLAGS+=' -Wl,--gc-sections'
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-linux-caps \
+ --with-openssl \
+ --with-idn \
+
+ make
+}
+
+package() {
+ cd "${srcdir}/bind-${_pkgver}"
+
+ install -Dm644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+
+ cd bin
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/dnsutils/remove-bind.patch b/testing/dnsutils/remove-bind.patch
new file mode 100644
index 000000000..19d650964
--- /dev/null
+++ b/testing/dnsutils/remove-bind.patch
@@ -0,0 +1,25 @@
+diff -aur old/bin/Makefile.in new/bin/Makefile.in
+--- old/bin/Makefile.in 2009-10-05 05:07:08.000000000 -0700
++++ new/bin/Makefile.in 2011-08-28 19:16:17.245495043 -0700
+@@ -19,8 +19,7 @@
+ VPATH = @srcdir@
+ top_srcdir = @top_srcdir@
+
+-SUBDIRS = named rndc dig dnssec tests tools nsupdate \
+- check confgen @PKCS11_TOOLS@
++SUBDIRS = dig
+ TARGETS =
+
+ @BIND9_MAKE_RULES@
+diff -aur old/lib/Makefile.in new/lib/Makefile.in
+--- old/lib/Makefile.in 2007-06-19 16:47:13.000000000 -0700
++++ new/lib/Makefile.in 2011-08-28 19:17:50.828688599 -0700
+@@ -23,7 +23,7 @@
+ # Attempt to disable parallel processing.
+ .NOTPARALLEL:
+ .NO_PARALLEL:
+-SUBDIRS = isc isccc dns isccfg bind9 lwres tests
++SUBDIRS = isc dns isccfg bind9 lwres
+ TARGETS =
+
+ @BIND9_MAKE_RULES@
diff --git a/testing/e2fsprogs/MIT-LICENSE b/testing/e2fsprogs/MIT-LICENSE
new file mode 100644
index 000000000..d849b28f2
--- /dev/null
+++ b/testing/e2fsprogs/MIT-LICENSE
@@ -0,0 +1,25 @@
+Copyright (c) 2003-2007 Theodore Ts'o <tytso@mit.edu>
+Copyright (c) 1997-2003 Yann Dirson <dirson@debian.org>
+Copyright (c) 2001 Alcove <http://www.alcove.com/>
+Copyright (c) 1997 Klee Dienes
+Copyright (c) 1995-1996 Michael Nonweiler <mrn20@cam.ac.uk>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject
+to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/testing/e2fsprogs/PKGBUILD b/testing/e2fsprogs/PKGBUILD
new file mode 100644
index 000000000..86d97da13
--- /dev/null
+++ b/testing/e2fsprogs/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 141998 2011-11-03 21:12:45Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=e2fsprogs
+pkgver=1.41.14
+pkgrel=2
+pkgdesc="Ext2/3/4 filesystem utilities"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL' 'MIT')
+url="http://e2fsprogs.sourceforge.net"
+groups=('base')
+depends=('sh' 'util-linux-ng')
+makedepends=('bc')
+source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ 'MIT-LICENSE')
+backup=('etc/mke2fs.conf')
+install=${pkgname}.install
+sha1sums=('24f9364fa3d4c0d7d00cb627b819d0e51055d6c5'
+ 'f4a0d5b0cdb980e3fedd6f5e7dde0b0ffb7bbdfb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Remove unnecessary init.d directory
+ sed -i '/init\.d/s|^|#|' misc/Makefile.in
+
+ ./configure --prefix=/usr --with-root-prefix="" --enable-elf-shlibs \
+ --disable-fsck --disable-uuidd \
+ --disable-libuuid --disable-libblkid
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install install-libs
+
+ sed -i -e 's/^AWK=.*/AWK=awk/' "${pkgdir}/usr/bin/compile_et"
+
+ # remove references to build directory
+ sed -i -e 's#^SS_DIR=.*#SS_DIR="/usr/share/ss"#' "${pkgdir}/usr/bin/mk_cmds"
+ sed -i -e 's#^ET_DIR=.*#ET_DIR="/usr/share/et"#' "${pkgdir}/usr/bin/compile_et"
+
+ # install MIT license
+ install -Dm644 "${srcdir}/MIT-LICENSE" \
+ "${pkgdir}/usr/share/licenses/${pkgname}/MIT-LICENSE"
+}
diff --git a/testing/e2fsprogs/e2fsprogs.install b/testing/e2fsprogs/e2fsprogs.install
new file mode 100644
index 000000000..1a7fe20d7
--- /dev/null
+++ b/testing/e2fsprogs/e2fsprogs.install
@@ -0,0 +1,20 @@
+infodir=usr/share/info
+filelist=(libext2fs.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/testing/e2fsprogs/mke2fs.conf b/testing/e2fsprogs/mke2fs.conf
new file mode 100644
index 000000000..92464e3b4
--- /dev/null
+++ b/testing/e2fsprogs/mke2fs.conf
@@ -0,0 +1,26 @@
+[defaults]
+ base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
+ blocksize = 4096
+ inode_size = 128
+ inode_ratio = 16384
+
+[fs_types]
+ small = {
+ blocksize = 1024
+ inode_size = 128
+ inode_ratio = 4096
+ }
+ floppy = {
+ blocksize = 1024
+ inode_size = 128
+ inode_ratio = 8192
+ }
+ news = {
+ inode_ratio = 4096
+ }
+ largefile = {
+ inode_ratio = 1048576
+ }
+ largefile4 = {
+ inode_ratio = 4194304
+ }
diff --git a/testing/expat/CVE-2009-3560.patch b/testing/expat/CVE-2009-3560.patch
new file mode 100644
index 000000000..5fe9c36c8
--- /dev/null
+++ b/testing/expat/CVE-2009-3560.patch
@@ -0,0 +1,13 @@
+diff -urNad trunk~/lib/xmlparse.c trunk/lib/xmlparse.c
+--- trunk~/lib/xmlparse.c 2007-05-08 04:25:35.000000000 +0200
++++ trunk/lib/xmlparse.c 2009-12-29 21:57:22.141732904 +0100
+@@ -3703,6 +3703,9 @@
+ return XML_ERROR_UNCLOSED_TOKEN;
+ case XML_TOK_PARTIAL_CHAR:
+ return XML_ERROR_PARTIAL_CHAR;
++ case -XML_TOK_PROLOG_S:
++ tok = -tok;
++ break;
+ case XML_TOK_NONE:
+ #ifdef XML_DTD
+ /* for internal PE NOT referenced between declarations */
diff --git a/testing/expat/CVE-2009-3720.patch b/testing/expat/CVE-2009-3720.patch
new file mode 100644
index 000000000..65d16431f
--- /dev/null
+++ b/testing/expat/CVE-2009-3720.patch
@@ -0,0 +1,12 @@
+diff -urNad trunk~/lib/xmltok_impl.c trunk/lib/xmltok_impl.c
+--- trunk~/lib/xmltok_impl.c 2006-11-26 18:34:46.000000000 +0100
++++ trunk/lib/xmltok_impl.c 2009-10-22 21:42:41.000000000 +0200
+@@ -1744,7 +1744,7 @@
+ const char *end,
+ POSITION *pos)
+ {
+- while (ptr != end) {
++ while (ptr < end) {
+ switch (BYTE_TYPE(enc, ptr)) {
+ #define LEAD_CASE(n) \
+ case BT_LEAD ## n: \
diff --git a/testing/expat/PKGBUILD b/testing/expat/PKGBUILD
new file mode 100644
index 000000000..eee7e94b9
--- /dev/null
+++ b/testing/expat/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 141915 2011-11-03 06:22:06Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=expat
+pkgver=2.0.1
+pkgrel=7
+pkgdesc="An XML parser library"
+arch=('i686' 'x86_64')
+url="http://expat.sourceforge.net/"
+license=('custom')
+depends=('glibc')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/expat/${pkgname}-${pkgver}.tar.gz
+ CVE-2009-3560.patch
+ CVE-2009-3720.patch)
+md5sums=('ee8b492592568805593f81f8cdf2a04c'
+ '50603cac0f03aabc7087415251f592be'
+ 'f3eeb796f28945899216b815e5901996')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i $srcdir/CVE-2009-3560.patch
+ patch -Np1 -i $srcdir/CVE-2009-3720.patch
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+check() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/testing/ffmpeg/PKGBUILD b/testing/ffmpeg/PKGBUILD
new file mode 100644
index 000000000..97d25fe08
--- /dev/null
+++ b/testing/ffmpeg/PKGBUILD
@@ -0,0 +1,55 @@
+# $Id: PKGBUILD 142121 2011-11-05 11:37:18Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: Paul Mattal <paul@archlinux.org>
+
+pkgname=ffmpeg
+pkgver=20111105
+pkgrel=1
+pkgdesc="Complete and free Internet live audio and video broadcasting solution for Linux/Unix"
+arch=('i686' 'x86_64')
+url="http://ffmpeg.org/"
+license=('GPL')
+depends=('bzip2' 'lame' 'sdl' 'libvorbis' 'xvidcore' 'zlib' 'x264' 'libtheora' 'opencore-amr' 'alsa-lib' 'libvdpau' 'libxfixes' 'schroedinger' 'libvpx' 'libva' 'openjpeg' 'rtmpdump')
+makedepends=('yasm' 'git')
+#git clone git://git.videolan.org/ffmpeg.git
+source=(ftp://ftp.archlinux.org/other/ffmpeg/${pkgname}-${pkgver}.tar.xz)
+md5sums=('d1889c07a929cd0efaf7f486ff2f55e0')
+
+build() {
+ cd "$srcdir/$pkgname"
+
+ ./configure \
+ --prefix=/usr \
+ --enable-libmp3lame \
+ --enable-libvorbis \
+ --enable-libxvid \
+ --enable-libx264 \
+ --enable-libvpx \
+ --enable-libtheora \
+ --enable-postproc \
+ --enable-shared \
+ --enable-x11grab \
+ --enable-libopencore_amrnb \
+ --enable-libopencore_amrwb \
+ --enable-libschroedinger \
+ --enable-libopenjpeg \
+ --enable-librtmp \
+ --enable-gpl \
+ --enable-version3 \
+ --enable-runtime-cpudetect \
+ --disable-debug \
+ --disable-static
+
+ make
+ make tools/qt-faststart
+ make doc/ff{mpeg,play,server}.1
+}
+
+package() {
+ cd "$srcdir/$pkgname"
+ make DESTDIR="$pkgdir" install install-man
+ install -D -m755 tools/qt-faststart "$pkgdir/usr/bin/qt-faststart"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/ffmpegthumbnailer/PKGBUILD b/testing/ffmpegthumbnailer/PKGBUILD
new file mode 100644
index 000000000..3fed7aae2
--- /dev/null
+++ b/testing/ffmpegthumbnailer/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 23110 2010-08-06 11:01:51Z rvanharen $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: boromil@gmail.com
+
+pkgname=ffmpegthumbnailer
+pkgver=2.0.7
+pkgrel=2
+pkgdesc="Lightweight video thumbnailer that can be used by file managers."
+url="http://code.google.com/p/ffmpegthumbnailer/"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('ffmpeg' 'libjpeg' 'libpng')
+optdepends=('gvfs: support for gio uris')
+source=("http://ffmpegthumbnailer.googlecode.com/files/$pkgname-$pkgver.tar.gz"
+ 'ffmpegthumbnailer.desktop')
+options=('!libtool')
+sha1sums=('b8f5371aa995fefd1fb75e306e8cd76e8c9f3a73'
+ 'bdd3ae35a5c6f0e1f4b0c7926f72b3429b2eaa53')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --enable-gio
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # FS#24105: Generate thumbnails in nautilus
+ install -Dm644 ${srcdir}/ffmpegthumbnailer.desktop \
+ ${pkgdir}/usr/share/thumbnailers/ffmpegthumbnailer.desktop
+}
diff --git a/testing/ffmpegthumbnailer/ffmpegthumbnailer.desktop b/testing/ffmpegthumbnailer/ffmpegthumbnailer.desktop
new file mode 100644
index 000000000..79203e5bc
--- /dev/null
+++ b/testing/ffmpegthumbnailer/ffmpegthumbnailer.desktop
@@ -0,0 +1,4 @@
+[Thumbnailer Entry]
+TryExec=ffmpegthumbnailer
+Exec=ffmpegthumbnailer -s %s -i %u -o %o -c png -f -t 10
+MimeType=video/flv;video/webm;video/mkv;video/mp4;video/mpeg;video/avi;video/ogg;video/quicktime;video/x-avi;video/x-flv;video/x-mp4;video/x-mpeg;video/x-webm;video/x-mkv;application/x-extension-webm;video/x-matroska;video/x-ms-wmv;video/x-msvideo;video/x-msvideo/avi;video/x-theora/ogg;video/x-theora/ogv;video/x-ms-asf;video/x-m4v;
diff --git a/testing/flex/PKGBUILD b/testing/flex/PKGBUILD
new file mode 100644
index 000000000..828cd9b84
--- /dev/null
+++ b/testing/flex/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 141917 2011-11-03 06:31:54Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=flex
+pkgver=2.5.35
+pkgrel=5
+pkgdesc="A tool for generating text-scanning programs"
+arch=('i686' 'x86_64')
+url="http://flex.sourceforge.net"
+license=('custom')
+groups=('base-devel')
+depends=('glibc' 'm4' 'sh')
+install=flex.install
+source=(http://downloads.sourceforge.net/sourceforge/flex/flex-$pkgver.tar.bz2
+ flex-2.5.35-gcc44.patch
+ flex-2.5.35-hardening.patch
+ flex-2.5.35-missing-prototypes.patch
+ flex-2.5.35-sign.patch
+ lex.sh)
+md5sums=('10714e50cea54dc7a227e3eddcd44d57'
+ 'e4444ef5c07db71a43280be74139bdea'
+ 'de952b3ed7cc074bc8c3e6ab73634048'
+ '6b83f56b1b654c6a321cdc530a3ec68d'
+ 'd87fd9e9762ba7e230d516bdcf1c8c6f'
+ 'f725259ec23a9e87ee29e2ef82eda9a5')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ patch -Np1 -i $srcdir/flex-2.5.35-gcc44.patch
+ patch -Np1 -i $srcdir/flex-2.5.35-hardening.patch
+ patch -Np1 -i $srcdir/flex-2.5.35-missing-prototypes.patch
+ patch -Np1 -i $srcdir/flex-2.5.35-sign.patch
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man --infodir=/usr/share/info
+ make
+}
+
+check() {
+ cd $srcdir/$pkgname-$pkgver
+ make check
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+
+ make prefix=$pkgdir/usr \
+ mandir=$pkgdir/usr/share/man \
+ infodir=$pkgdir/usr/share/info \
+ install
+ install -Dm755 $srcdir/lex.sh $pkgdir/usr/bin/lex
+
+ install -Dm644 COPYING \
+ $pkgdir/usr/share/licenses/$pkgname/license.txt
+
+}
+
diff --git a/testing/flex/flex-2.5.35-gcc44.patch b/testing/flex/flex-2.5.35-gcc44.patch
new file mode 100644
index 000000000..7929fc092
--- /dev/null
+++ b/testing/flex/flex-2.5.35-gcc44.patch
@@ -0,0 +1,22 @@
+diff -urNp flex-2.5.35.orig/flex.skl flex-2.5.35/flex.skl
+--- flex-2.5.35.orig/flex.skl 2009-04-20 03:09:46.000000000 +0530
++++ flex-2.5.35/flex.skl 2009-04-20 07:46:58.000000000 +0530
+@@ -217,6 +217,7 @@ m4preproc_include(`flexint.h')
+ /* begin standard C++ headers. */
+ #include <iostream>
+ #include <errno.h>
++#include <cstdio>
+ #include <cstdlib>
+ #include <cstring>
+ /* end standard C++ headers. */
+diff -urNp flex-2.5.35.orig/skel.c flex-2.5.35/skel.c
+--- flex-2.5.35.orig/skel.c 2009-04-20 03:09:46.000000000 +0530
++++ flex-2.5.35/skel.c 2009-04-20 07:46:40.000000000 +0530
+@@ -284,6 +284,7 @@ const char *skel[] = {
+ "/* begin standard C++ headers. */",
+ "#include <iostream> ",
+ "#include <errno.h>",
++ "#include <cstdio>",
+ "#include <cstdlib>",
+ "#include <cstring>",
+ "/* end standard C++ headers. */",
diff --git a/testing/flex/flex-2.5.35-hardening.patch b/testing/flex/flex-2.5.35-hardening.patch
new file mode 100644
index 000000000..7d608ea23
--- /dev/null
+++ b/testing/flex/flex-2.5.35-hardening.patch
@@ -0,0 +1,36 @@
+diff -u flex-2.5.35/scan.c flex-2.5.35/scan.c
+--- flex-2.5.35/scan.c
++++ flex-2.5.35/scan.c
+@@ -2096,7 +2096,7 @@
+ /* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+-#define ECHO fwrite( yytext, yyleng, 1, yyout )
++#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+ #endif
+
+ /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+diff -u flex-2.5.35/flex.skl flex-2.5.35/flex.skl
+--- flex-2.5.35/flex.skl
++++ flex-2.5.35/flex.skl
+@@ -1075,7 +1075,7 @@
+ /* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+-#define ECHO fwrite( yytext, yyleng, 1, yyout )
++#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+ %endif
+ %if-c++-only C++ definition
+ #define ECHO LexerOutput( yytext, yyleng )
+diff -u flex-2.5.35/skel.c flex-2.5.35/skel.c
+--- flex-2.5.35/skel.c
++++ flex-2.5.35/skel.c
+@@ -1142,7 +1142,7 @@
+ "/* This used to be an fputs(), but since the string might contain NUL's,",
+ " * we now use fwrite().",
+ " */",
+- "#define ECHO fwrite( yytext, yyleng, 1, yyout )",
++ "#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)",
+ "%endif",
+ "%if-c++-only C++ definition",
+ "#define ECHO LexerOutput( yytext, yyleng )",
diff --git a/testing/flex/flex-2.5.35-missing-prototypes.patch b/testing/flex/flex-2.5.35-missing-prototypes.patch
new file mode 100644
index 000000000..5cde0660e
--- /dev/null
+++ b/testing/flex/flex-2.5.35-missing-prototypes.patch
@@ -0,0 +1,53 @@
+diff -up flex-2.5.35/flex.skl\~ flex-2.5.35/flex.skl
+--- flex-2.5.35/flex.skl~ 2010-07-13 17:18:43.000000000 +0200
++++ flex-2.5.35/flex.skl 2010-07-13 17:23:49.000000000 +0200
+@@ -960,6 +960,22 @@ m4_ifdef( [[M4_YY_NO_SET_LINENO]],,
+ void yyset_lineno M4_YY_PARAMS( int line_number M4_YY_PROTO_LAST_ARG );
+ ]])
+
++m4_ifdef( [[M4_YY_REENTRANT]],
++[[
++m4_ifdef( [[M4_YY_NO_GET_COLUMN]],,
++[[
++int yyget_column M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );
++]])
++]])
++
++m4_ifdef( [[M4_YY_REENTRANT]],
++[[
++m4_ifdef( [[M4_YY_NO_SET_COLUMN]],,
++[[
++void yyset_column M4_YY_PARAMS( int column_no M4_YY_PROTO_LAST_ARG );
++]])
++]])
++
+ %if-bison-bridge
+ m4_ifdef( [[M4_YY_NO_GET_LVAL]],,
+ [[
+
+Diff finished. Tue Jul 13 17:27:50 2010
+--- flex-2.5.35/skel.c~ 2010-07-14 13:15:42.000000000 +0200
++++ flex-2.5.35/skel.c 2010-07-14 13:16:05.000000000 +0200
+@@ -1027,6 +1027,22 @@
+ "void yyset_lineno M4_YY_PARAMS( int line_number M4_YY_PROTO_LAST_ARG );",
+ "]])",
+ "",
++ "m4_ifdef( [[M4_YY_REENTRANT]],",
++ "[[",
++ "m4_ifdef( [[M4_YY_NO_GET_COLUMN]],,",
++ "[[",
++ "int yyget_column M4_YY_PARAMS( M4_YY_PROTO_ONLY_ARG );",
++ "]])",
++ "]])",
++ "",
++ "m4_ifdef( [[M4_YY_REENTRANT]],",
++ "[[",
++ "m4_ifdef( [[M4_YY_NO_SET_COLUMN]],,",
++ "[[",
++ "void yyset_column M4_YY_PARAMS( int column_no M4_YY_PROTO_LAST_ARG );",
++ "]])",
++ "]])",
++ "",
+ "%if-bison-bridge",
+ "m4_ifdef( [[M4_YY_NO_GET_LVAL]],,",
+ "[[",
diff --git a/testing/flex/flex-2.5.35-sign.patch b/testing/flex/flex-2.5.35-sign.patch
new file mode 100644
index 000000000..fbee18bde
--- /dev/null
+++ b/testing/flex/flex-2.5.35-sign.patch
@@ -0,0 +1,11 @@
+--- flex-2.5.35/gen.c-orig 2008-04-30 22:51:08.000000000 +0200
++++ flex-2.5.35/gen.c 2008-04-30 22:51:14.000000000 +0200
+@@ -1890,7 +1890,7 @@
+ outn ("\tif ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \\");
+ outn ("\t\t{ \\");
+ outn ("\t\tint c = '*'; \\");
+- outn ("\t\tint n; \\");
++ outn ("\t\tunsigned n; \\");
+ outn ("\t\tfor ( n = 0; n < max_size && \\");
+ outn ("\t\t\t (c = getc( yyin )) != EOF && c != '\\n'; ++n ) \\");
+ outn ("\t\t\tbuf[n] = (char) c; \\");
diff --git a/testing/flex/flex.install b/testing/flex/flex.install
new file mode 100644
index 000000000..5b328c722
--- /dev/null
+++ b/testing/flex/flex.install
@@ -0,0 +1,22 @@
+infodir=/usr/share/info
+filelist=(flex.info{,-1,-2})
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/flex/lex.sh b/testing/flex/lex.sh
new file mode 100644
index 000000000..13e7de692
--- /dev/null
+++ b/testing/flex/lex.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /usr/bin/flex -l "$@"
diff --git a/testing/gdbm/PKGBUILD b/testing/gdbm/PKGBUILD
new file mode 100644
index 000000000..b56c4a3b0
--- /dev/null
+++ b/testing/gdbm/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 142050 2011-11-04 22:53:48Z stephane $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=gdbm
+pkgver=1.8.3
+pkgrel=9
+pkgdesc="GNU database library"
+url="http://www.gnu.org/software/gdbm/gdbm.html"
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('glibc' 'sh')
+source=(ftp://ftp.gnu.org/gnu/gdbm/${pkgname}-${pkgver}.tar.gz
+ gdbm-1.8.3-zeroheaders.patch
+ gdbm-1.8.3-fhs.patch)
+options=('!libtool' '!makeflags')
+install=gdbm.install
+md5sums=('1d1b1d5c0245b1c00aff92da751e9aa1'
+ 'a2ed344be9258775bd718074cf2e4ec6'
+ '66a7c235416c136dc89efc7d03352514')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Prevent gdbm from storing uninitialized memory content
+ # to database files. This patch improves security, as the
+ # uninitialized memory might contain sensitive informations
+ # from other applications.
+ # https://bugzilla.redhat.com/show_bug.cgi?id=4457
+ # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=208927
+ patch -Np1 -i ../gdbm-1.8.3-zeroheaders.patch
+
+ # Make gdbm buildable.
+ patch -Np1 -i ../gdbm-1.8.3-fhs.patch
+
+ libtoolize --force --copy
+ aclocal
+ autoconf
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
+
+ # flock does not work on nfs, we use fcntl instead
+ # https://bugzilla.redhat.com/show_bug.cgi?id=477300
+ echo "/* We use fcntl locking (POSIX) instead of flock (BSD) */" >> autoconf.h
+ echo "#undef HAVE_FLOCK" >> autoconf.h
+
+ make prefix=/usr
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make prefix=$pkgdir/usr \
+ manprefix=$pkgdir/usr/share/man \
+ man3dir=$pkgdir/usr/share/man/man3 \
+ infodir=$pkgdir/usr/share/info \
+ install install-compat
+
+ ln -sf gdbm/gdbm.h $pkgdir/usr/include
+}
diff --git a/testing/gdbm/gdbm-1.8.3-fhs.patch b/testing/gdbm/gdbm-1.8.3-fhs.patch
new file mode 100644
index 000000000..58ce4de0b
--- /dev/null
+++ b/testing/gdbm/gdbm-1.8.3-fhs.patch
@@ -0,0 +1,138 @@
+diff -up gdbm-1.8.3/Makefile.in.fhs gdbm-1.8.3/Makefile.in
+--- gdbm-1.8.3/Makefile.in.fhs 2002-10-08 18:09:12.000000000 +0200
++++ gdbm-1.8.3/Makefile.in 2010-03-10 15:41:01.516025096 +0100
+@@ -1,7 +1,7 @@
+ #### Start of system configuration section. ####
+
+ srcdir = @srcdir@
+-top_builddir = .
++top_builddir = @top_builddir@
+ VPATH = @srcdir@
+
+ CC = @CC@
+@@ -14,17 +14,13 @@ INSTALL = @INSTALL@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_DATA = @INSTALL_DATA@
+
+-# File ownership and group
+-BINOWN = bin
+-BINGRP = bin
+-
+ MAKEINFO = makeinfo
+ TEXI2DVI = texi2dvi
+
+-DEFS =
++DEFS = @DEFS@
+
+ # Where the system [n]dbm routines are...
+-LIBS = @LIBS@ -lc
++LIBS = @LIBS@
+
+ CFLAGS = @CFLAGS@
+ LDFLAGS = @LDFLAGS@
+@@ -32,16 +28,17 @@ LDFLAGS = @LDFLAGS@
+ # Common prefix for installation directories
+ prefix = @prefix@
+ exec_prefix = @exec_prefix@
+-binprefix = $(exec_prefix)
+-manprefix = $(prefix)
++datarootdir = @datarootdir@
+
+ # Directory in which to put libgdbm.a.
+ libdir = @libdir@
+ # The include directory for gdbm.h and dbm.h.
+ includedir = @includedir@
++pkgincludedir = $(includedir)/gdbm
+ # Info and man directories.
+ infodir = @infodir@
+-man3dir = @mandir@/man3
++mandir = @mandir@
++man3dir = $(mandir)/man3
+ manext = 3
+
+ #### End of system configuration section. ####
+@@ -57,7 +54,7 @@ manext = 3
+
+ SHELL = /bin/sh
+
+-PROGS = libgdbm.la testgdbm testdbm testndbm tndbm tdbm conv2gdbm
++PROGS = libgdbm.la testgdbm testdbm testndbm conv2gdbm
+
+ DBM_CF = dbminit.c delete.c fetch.c store.c seq.c close.c
+
+@@ -127,26 +124,17 @@ all: libgdbm.la libgdbm_compat.la
+ progs: $(PROGS)
+
+ install: libgdbm.la gdbm.h gdbm.info
+- $(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \
+- $(INSTALL_ROOT)$(includedir) $(INSTALL_ROOT)$(man3dir) \
+- $(INSTALL_ROOT)$(infodir)
+- $(LIBTOOL) $(INSTALL) -c libgdbm.la $(INSTALL_ROOT)$(libdir)/libgdbm.la
+- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) gdbm.h \
+- $(INSTALL_ROOT)$(includedir)/gdbm.h
+- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.3 \
+- $(INSTALL_ROOT)$(man3dir)/gdbm.3
+- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/gdbm.info \
+- $(INSTALL_ROOT)$(infodir)/gdbm.info
++ $(srcdir)/mkinstalldirs $(libdir) $(pkgincludedir) $(man3dir) $(infodir)
++ $(LIBTOOL) install install libgdbm.la $(libdir)/libgdbm.la
++ $(INSTALL_DATA) gdbm.h $(pkgincludedir)/gdbm.h
++ $(INSTALL_DATA) $(srcdir)/gdbm.3 $(man3dir)/gdbm.3
++ $(INSTALL_DATA) $(srcdir)/gdbm.info $(infodir)/gdbm.info
+
+ install-compat:
+- $(srcdir)/mkinstalldirs $(INSTALL_ROOT)$(libdir) \
+- $(INSTALL_ROOT)$(includedir)
+- $(LIBTOOL) $(INSTALL) -c libgdbm_compat.la \
+- $(INSTALL_ROOT)$(libdir)/libgdbm_compat.la
+- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/dbm.h \
+- $(INSTALL_ROOT)$(includedir)/dbm.h
+- $(INSTALL_DATA) -o $(BINOWN) -g $(BINGRP) $(srcdir)/ndbm.h \
+- $(INSTALL_ROOT)$(includedir)/ndbm.h
++ $(srcdir)/mkinstalldirs $(libdir) $(pkgincludedir)
++ $(LIBTOOL) install install libgdbm_compat.la $(libdir)/libgdbm_compat.la
++ $(INSTALL_DATA) $(srcdir)/dbm.h $(pkgincludedir)/dbm.h
++ $(INSTALL_DATA) $(srcdir)/ndbm.h $(pkgincludedir)/ndbm.h
+
+ #libgdbm.a: $(OBJS) gdbm.h
+ # rm -f libgdbm.a
+@@ -161,7 +149,7 @@ libgdbm.la: $(LOBJS) gdbm.h
+ libgdbm_compat.la: $(C_LOBJS) gdbm.h
+ rm -f libgdbm_compat.la
+ $(LIBTOOL) --mode=link $(CC) -o libgdbm_compat.la -rpath $(libdir) \
+- -version-info $(SHLIB_VER) $(C_LOBJS)
++ -version-info $(SHLIB_VER) $(C_LOBJS) -lgdbm
+
+ gdbm.h: gdbm.proto gdbmerrno.h gdbm.proto2
+ rm -f gdbm.h
+@@ -172,10 +160,10 @@ gdbm.h: gdbm.proto gdbmerrno.h gdbm.prot
+ chmod -w gdbm.h
+
+ testgdbm: testgdbm.o libgdbm.la @LIBOBJS@
+- $(LIBTOOL) $(CC) $(LDFLAGS) -o testgdbm testgdbm.o libgdbm.la @LIBOBJS@
++ $(LIBTOOL) link $(CC) $(LDFLAGS) -o testgdbm testgdbm.o libgdbm.la @LIBOBJS@
+
+ testdbm: testdbm.o libgdbm.la libgdbm_compat.la
+- $(LIBTOOL) $(CC) $(LDFLAGS) -o testdbm testdbm.o libgdbm.la libgdbm_compat.la
++ $(LIBTOOL) link $(CC) $(LDFLAGS) -o testdbm testdbm.o $(LIBS) libgdbm_compat.la
+
+ tdbm: testdbm.o
+ $(CC) $(LDFLAGS) -o tdbm testdbm.o $(LIBS)
+@@ -184,7 +172,7 @@ testndbm.o: testndbm.c
+ $(CC) -c -I. -I$(srcdir) $(CFLAGS) $(DEFS) -DGNU $(srcdir)/testndbm.c
+
+ testndbm: testndbm.o libgdbm.la libgdbm_compat.la
+- $(LIBTOOL) $(CC) $(LDFLAGS) -o testndbm testndbm.o libgdbm.la libgdbm_compat.la
++ $(LIBTOOL) link $(CC) $(LDFLAGS) -o testndbm testndbm.o libgdbm_compat.la
+
+ tndbm.o: testndbm.c
+ cp $(srcdir)/testndbm.c ./tndbm.c
+@@ -195,7 +183,7 @@ tndbm: tndbm.o
+ $(CC) $(LDFLAGS) -o tndbm tndbm.o $(LIBS)
+
+ conv2gdbm: conv2gdbm.o libgdbm.la @LIBOBJS@
+- $(LIBTOOL) $(CC) $(LDFLAGS) -o conv2gdbm conv2gdbm.o $(LIBS) libgdbm.la @LIBOBJS@
++ $(LIBTOOL) link $(CC) $(LDFLAGS) -o conv2gdbm conv2gdbm.o $(LIBS) libgdbm_compat.la @LIBOBJS@
+
+ lintgdbm:
+ lint $(DEFS) $(LFLAGS) $(DBM_CF) $(NDBM_CF) $(GDBM_CF) testgdbm.c
diff --git a/testing/gdbm/gdbm-1.8.3-zeroheaders.patch b/testing/gdbm/gdbm-1.8.3-zeroheaders.patch
new file mode 100644
index 000000000..088956aef
--- /dev/null
+++ b/testing/gdbm/gdbm-1.8.3-zeroheaders.patch
@@ -0,0 +1,44 @@
+02_zero-headers.patch by Jeff Johnson <jbj@redhat.com> and Colin Watson <cjwatson@debian.org>
+
+diff -urNad a/falloc.c b/falloc.c
+--- a/falloc.c 2001-02-28 06:52:33.000000000 +0000
++++ b/falloc.c 2003-09-08 23:58:43.000000000 +0100
+@@ -272,7 +272,7 @@
+
+
+ /* Split the header block. */
+- temp = (avail_block *) malloc (av_size);
++ temp = (avail_block *) calloc (1, av_size);
+ if (temp == NULL) _gdbm_fatal (dbf, "malloc error");
+ /* Set the size to be correct AFTER the pop_avail_block. */
+ temp->size = dbf->header->avail.size;
+diff -urNad a/gdbmopen.c b/gdbmopen.c
+--- a/gdbmopen.c 2003-09-08 23:58:01.000000000 +0100
++++ b/gdbmopen.c 2003-09-08 23:58:43.000000000 +0100
+@@ -212,7 +212,7 @@
+ file_block_size = block_size;
+
+ /* Get space for the file header. */
+- dbf->header = (gdbm_file_header *) malloc (file_block_size);
++ dbf->header = (gdbm_file_header *) calloc (1, file_block_size);
+ if (dbf->header == NULL)
+ {
+ gdbm_close (dbf);
+@@ -256,7 +256,7 @@
+ (dbf->header->block_size - sizeof (hash_bucket))
+ / sizeof (bucket_element) + 1;
+ dbf->header->bucket_size = dbf->header->block_size;
+- dbf->bucket = (hash_bucket *) malloc (dbf->header->bucket_size);
++ dbf->bucket = (hash_bucket *) calloc (1, dbf->header->bucket_size);
+ if (dbf->bucket == NULL)
+ {
+ gdbm_close (dbf);
+@@ -420,7 +420,7 @@
+ for(index = 0; index < size; index++)
+ {
+ (dbf->bucket_cache[index]).ca_bucket
+- = (hash_bucket *) malloc (dbf->header->bucket_size);
++ = (hash_bucket *) calloc (1, dbf->header->bucket_size);
+ if ((dbf->bucket_cache[index]).ca_bucket == NULL)
+ {
+ gdbm_errno = GDBM_MALLOC_ERROR;
diff --git a/testing/gdbm/gdbm.install b/testing/gdbm/gdbm.install
new file mode 100644
index 000000000..2d1ce2c5a
--- /dev/null
+++ b/testing/gdbm/gdbm.install
@@ -0,0 +1,21 @@
+infodir=/usr/share/info
+filelist=(gdbm.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ usr/bin/install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ usr/bin/install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/testing/gegl/0.1.6-ffmpeg.patch b/testing/gegl/0.1.6-ffmpeg.patch
new file mode 100644
index 000000000..51fb95d28
--- /dev/null
+++ b/testing/gegl/0.1.6-ffmpeg.patch
@@ -0,0 +1,33 @@
+diff -urN gegl-0.1.6.old//operations/external/ff-load.c gegl-0.1.6/operations/external/ff-load.c
+--- gegl-0.1.6.old//operations/external/ff-load.c 2011-01-24 19:03:30.000000000 -0300
++++ gegl-0.1.6/operations/external/ff-load.c 2011-05-04 09:59:48.910379742 -0300
+@@ -69,17 +69,17 @@
+ {
+ switch (err)
+ {
+- case AVERROR_NUMEXPECTED:
++ case AVERROR(EDOM):
+ g_warning ("%s: Incorrect image filename syntax.\n"
+ "Use '%%d' to specify the image number:\n"
+ " for img1.jpg, img2.jpg, ..., use 'img%%d.jpg';\n"
+ " for img001.jpg, img002.jpg, ..., use 'img%%03d.jpg'.\n",
+ filename);
+ break;
+- case AVERROR_INVALIDDATA:
++ case AVERROR(EINVAL):
+ g_warning ("%s: Error while parsing header\n", filename);
+ break;
+- case AVERROR_NOFMT:
++ case AVERROR(EILSEQ):
+ g_warning ("%s: Unknown format\n", filename);
+ break;
+ default:
+@@ -278,7 +278,7 @@
+ for (i = 0; i< p->ic->nb_streams; i++)
+ {
+ AVCodecContext *c = p->ic->streams[i]->codec;
+- if (c->codec_type == CODEC_TYPE_VIDEO)
++ if (c->codec_type == AVMEDIA_TYPE_VIDEO)
+ {
+ p->video_st = p->ic->streams[i];
+ p->video_stream = i;
diff --git a/testing/gegl/PKGBUILD b/testing/gegl/PKGBUILD
new file mode 100644
index 000000000..cdae0afcc
--- /dev/null
+++ b/testing/gegl/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 142143 2011-11-05 11:37:45Z ibiru $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
+
+pkgname=gegl
+pkgver=0.1.6
+pkgrel=2
+pkgdesc="Graph based image processing framework"
+arch=('i686' 'x86_64')
+url="http://www.gegl.org/"
+license=('GPL3' 'LGPL3')
+depends=('babl' 'gtk2')
+makedepends=('ruby' 'lua' 'openexr' 'ffmpeg' 'librsvg' 'jasper' 'exiv2')
+optdepends=('openexr: for using the openexr plugin' \
+ 'ffmpeg: for using the ffmpeg plugin' \
+ 'librsvg: for using the svg plugin' \
+ 'jasper: for using the jasper plugin')
+options=('!libtool')
+source=(ftp://ftp.gimp.org/pub/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2 \
+ 0.1.6-ffmpeg.patch)
+sha1sums=('27bedcfd077da7a6913b82966dbec904b22c121d'
+ 'd62d4987f1c0fc256f5968271fc65cce0cc4c195')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/0.1.6-ffmpeg.patch"
+ ./configure --prefix=/usr --with-sdl --with-openexr --with-librsvg \
+ --with-libavformat --with-jasper --disable-docs
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/gettext/PKGBUILD b/testing/gettext/PKGBUILD
new file mode 100644
index 000000000..3bd769036
--- /dev/null
+++ b/testing/gettext/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 142033 2011-11-04 11:47:22Z tpowa $
+# Maintainer:
+
+pkgname=gettext
+pkgver=0.18.1.1
+pkgrel=4
+pkgdesc="GNU internationalization library"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/gettext/"
+license=('GPL')
+groups=('base')
+depends=('gcc-libs' 'acl' 'sh' 'glib2')
+optdepends=('cvs: for autopoint tool')
+options=(!libtool !docs)
+install=gettext.install
+source=(ftp://ftp.gnu.org/pub/gnu/gettext/${pkgname}-${pkgver}.tar.gz)
+md5sums=('3dd55b952826d2b32f51308f2f91aa89')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e 's/libexpat.so.0/libexpat.so.1/' gettext-tools/src/x-glade.c
+ ./configure --prefix=/usr --enable-csharp
+ make
+}
+
+#check() {
+# cd "${srcdir}/${pkgname}-${pkgver}"
+# make check
+#}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/gettext/gettext.install b/testing/gettext/gettext.install
new file mode 100644
index 000000000..0ff52942f
--- /dev/null
+++ b/testing/gettext/gettext.install
@@ -0,0 +1,22 @@
+infodir=/usr/share/info
+filelist=(gettext.info.gz autosprintf.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/grep/PKGBUILD b/testing/grep/PKGBUILD
new file mode 100644
index 000000000..8366d083c
--- /dev/null
+++ b/testing/grep/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 141919 2011-11-03 06:55:30Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=grep
+pkgver=2.9
+pkgrel=2
+pkgdesc="A string search utility"
+arch=('i686' 'x86_64')
+license=('GPL3')
+url="http://www.gnu.org/software/grep/grep.html"
+groups=('base')
+depends=('glibc' 'pcre' 'sh')
+makedepends=('texinfo')
+install=${pkgname}.install
+source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig})
+md5sums=('25e41b2aa201104354740961ef36005a'
+ '78b903e88d23890d9e737e1415f4de21')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --bindir=/bin --without-included-regex
+ make
+}
+
+check() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/testing/grep/grep.install b/testing/grep/grep.install
new file mode 100644
index 000000000..7cd31301f
--- /dev/null
+++ b/testing/grep/grep.install
@@ -0,0 +1,21 @@
+infodir=usr/share/info
+filelist=(grep.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/testing/gstreamer0.10-ugly/PKGBUILD b/testing/gstreamer0.10-ugly/PKGBUILD
new file mode 100644
index 000000000..6f355ef8a
--- /dev/null
+++ b/testing/gstreamer0.10-ugly/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 142123 2011-11-05 11:37:20Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gstreamer0.10-ugly
+pkgname=('gstreamer0.10-ugly' 'gstreamer0.10-ugly-plugins')
+pkgver=0.10.18
+pkgrel=4
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('pkgconfig' 'gstreamer0.10-base>=0.10.34' 'libdvdread' 'lame' 'libmpeg2' 'a52dec' 'libid3tag' 'libmad' 'libsidplay' 'libcdio' 'x264' 'opencore-amr')
+url="http://gstreamer.freedesktop.org/"
+options=(!libtool)
+source=(${url}/src/gst-plugins-ugly/gst-plugins-ugly-${pkgver}.tar.bz2)
+md5sums=('04a7009a4efea2844075949c111f5e4d')
+
+build() {
+ cd "${srcdir}/gst-plugins-ugly-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static --enable-experimental \
+ --with-package-name="GStreamer Ugly Plugins (Archlinux)" \
+ --with-package-origin="http://www.archlinux.org/"
+ make
+ sed -e 's/gst-libs gst ext/gst-libs gst/' -i Makefile
+}
+
+package_gstreamer0.10-ugly() {
+ pkgdesc="GStreamer Multimedia Framework Ugly plugin libraries"
+ depends=('gstreamer0.10-base>=0.10.34')
+
+ cd "${srcdir}/gst-plugins-ugly-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_gstreamer0.10-ugly-plugins() {
+ pkgdesc="GStreamer Multimedia Framework Ugly Plugins (gst-plugins-ugly)"
+ depends=("gstreamer0.10-ugly=${pkgver}" 'libdvdread' 'lame' 'libmpeg2' 'a52dec' 'libid3tag' 'libmad' 'libsidplay' 'libcdio' 'x264' 'opencore-amr')
+ groups=('gstreamer0.10-plugins')
+ replaces=('gstreamer0.10-dvdread' 'gstreamer0.10-mpeg2dec' 'gstreamer0.10-mad' 'gstreamer0.10-lame' 'gstreamer0.10-sidplay' 'gstreamer0.10-a52dec')
+ conflicts=('gstreamer0.10-dvdread' 'gstreamer0.10-mpeg2dec' 'gstreamer0.10-mad' 'gstreamer0.10-lame' 'gstreamer0.10-sidplay' 'gstreamer0.10-a52dec')
+
+ cd "${srcdir}/gst-plugins-ugly-${pkgver}"
+ make -C ext DESTDIR="${pkgdir}" install
+}
diff --git a/testing/gzip/PKGBUILD b/testing/gzip/PKGBUILD
new file mode 100644
index 000000000..a71b9cf1c
--- /dev/null
+++ b/testing/gzip/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 141921 2011-11-03 07:20:16Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=gzip
+pkgver=1.4
+pkgrel=4
+pkgdesc="GNU compression utility"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/gzip/"
+license=('GPL3')
+groups=('base')
+depends=('glibc' 'bash')
+makedepends=('patch')
+install=gzip.install
+source=(ftp://ftp.gnu.org/pub/gnu/gzip/gzip-$pkgver.tar.gz{,.sig})
+md5sums=('e381b8506210c794278f5527cba0e765'
+ '3b11d485d1638f2d16f7494a0486a6e8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # By default Gzip uses assembly code. While this may preform better,
+ # it is not position independent. The DEFS environment variable is
+ # set to use only C code.
+ export DEFS="NO_ASM"
+ ./configure --prefix=/usr
+ make
+}
+
+check() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make check
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make prefix=${pkgdir}/usr install
+
+ install -dm755 ${pkgdir}/bin
+ mv ${pkgdir}/usr/bin/{gunzip,gzip,uncompress,zcat} ${pkgdir}/bin/
+}
diff --git a/testing/gzip/gzip.install b/testing/gzip/gzip.install
new file mode 100644
index 000000000..24c8b8fb9
--- /dev/null
+++ b/testing/gzip/gzip.install
@@ -0,0 +1,20 @@
+infodir=usr/share/info
+filelist=(gzip.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ usr/bin/install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ usr/bin/install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
diff --git a/testing/hdparm/PKGBUILD b/testing/hdparm/PKGBUILD
new file mode 100644
index 000000000..fcb007d04
--- /dev/null
+++ b/testing/hdparm/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 141929 2011-11-03 08:40:42Z tpowa $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+
+pkgname=hdparm
+pkgver=9.37
+pkgrel=2
+pkgdesc="A shell utility for manipulating Linux IDE drive/driver parameters"
+arch=(i686 x86_64)
+depends=('glibc')
+optdepends=('sh: required by idectl and ultrabayd')
+source=(http://downloads.sourceforge.net/sourceforge/hdparm/${pkgname}-${pkgver}.tar.gz
+ wiper.sh.2_6.max-ranges.patch)
+license=('BSD')
+url="http://sourceforge.net/projects/hdparm/"
+optdepends=('bash: for wiper.sh script')
+options=('emptydirs')
+md5sums=('0bb94ddd1bedd5c02b1ca62f1caaf6de'
+ '74e368f384166a7710b447573cda120a')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # Fix Range input/output error when wiping Intel G2 and OCZ drives
+ patch -Np1 -i $srcdir/wiper.sh.2_6.max-ranges.patch
+
+ # build
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # install
+ mkdir -p ${pkgdir}/{usr,sbin}
+ make DESTDIR=${pkgdir} install
+ install -m755 contrib/idectl ${pkgdir}/sbin
+ install -m755 contrib/ultrabayd ${pkgdir}/sbin
+
+ install -D -m 0644 $srcdir/$pkgname-$pkgver/wiper/README.txt $pkgdir/usr/share/doc/wiper/README.txt
+ install -D -m 0755 $srcdir/$pkgname-$pkgver/wiper/wiper.sh $pkgdir/usr/sbin/wiper.sh
+
+ #install license file
+ install -D -m 644 LICENSE.TXT $pkgdir/usr/share/licenses/hdparm/LICENSE.TXT
+}
diff --git a/testing/hdparm/wiper.sh.2_6.max-ranges.patch b/testing/hdparm/wiper.sh.2_6.max-ranges.patch
new file mode 100644
index 000000000..c55f7b149
--- /dev/null
+++ b/testing/hdparm/wiper.sh.2_6.max-ranges.patch
@@ -0,0 +1,84 @@
+--- hdparm-9.28/wiper/wiper.sh.orig 2010-03-09 06:17:37.000000000 -0800
+--- hdparm-9.28/wiper/wiper.sh 2010-05-15 03:08:02.182856971 -0700
+@@ -29,7 +29,7 @@
+ function usage_error(){
+ echo >&2
+ echo "Linux tune-up (TRIM) utility for SATA SSDs"
+- echo "Usage: $0 [--verbose] [--commit] <mount_point|block_device>" >&2
++ echo "Usage: $0 [--max-ranges <num>] [--verbose] [--commit] <mount_point|block_device>" >&2
+ echo " Eg: $0 /dev/sda1" >&2
+ echo >&2
+ exit 1
+@@ -44,6 +44,7 @@
+
+ export verbose=0
+ commit=""
++max_ranges=-1
+ destroy_me=""
+ argc=$#
+ arg=""
+@@ -51,6 +52,10 @@
+ commit=yes
+ elif [ "$1" = "--verbose" ]; then
+ verbose=$((verbose + 1))
++ elif [ "$1" = "--max-ranges" -a $argc -gt 1 ]; then
++ max_ranges=$2
++ argc=$((argc - 1))
++ shift
+ elif [ "$1" = "" ]; then
+ usage_error
+ else
+@@ -499,6 +550,18 @@
+ fi
+ fi
+
++## Different SSD's have a different maximum number of ranges they'll accept
++## in a single TRIM command.
++if [ $max_ranges -le 0 ] ; then
++ model=`$HDPARM -I $rawdev | $GAWK '/Model Number/ { print $NF }'`
++ case "$model" in
++ SSDSA[12]*) max_ranges=512 ;; # Intel X18-M/X25-M
++ OCZ-VERTEX2) max_ranges=64 ;; # OCZ Vertex2
++ *) max_ranges=65535
++ esac
++fi
++[ $verbose -gt 0 ] && echo "max-ranges = $max_ranges"
++
+ ## All ready. Now let the user know exactly what we intend to do:
+ ##
+ mountstatus="$fstype non-mounted"
+@@ -608,7 +671,7 @@
+ nsectors += count;
+ while (count > 0) {
+ this_count = (count > 65535) ? 65535 : count
+- printf "%u:%u ", lba, this_count
++ printf "%u:%u \n", lba, this_count
+ if (verbose > 1)
+ printf "%u:%u ", lba, this_count > "/dev/stderr"
+ lba += this_count
+@@ -695,6 +758,22 @@
+ -v verbose="$verbose" \
+ -v xfs_blksects="$xfs_blksects" \
+ -v xfs_agoffsets="$xfs_agoffsets" \
+- "$GAWKPROG" | $TRIM
++ "$GAWKPROG" | (
++ i=0
++ while read range ; do
++ ranges=$ranges" "$range
++ ((i++))
++ if [ $i -ge $max_ranges ] ; then
++ [ $verbose -gt 0 ] && echo -e "Trim ranges:"$ranges"\n"
++ echo $ranges | $TRIM
++ ranges=""
++ i=0
++ fi
++ done
++ if [ $i -gt 0 ] ; then
++ [ $verbose -gt 0 ] && echo -e "Trim ranges:"$ranges"\n"
++ echo $ranges | $TRIM
++ fi
++ )
+
+ do_cleanup $?
+
+
diff --git a/testing/heirloom-mailx/PKGBUILD b/testing/heirloom-mailx/PKGBUILD
new file mode 100644
index 000000000..eaa3bdddc
--- /dev/null
+++ b/testing/heirloom-mailx/PKGBUILD
@@ -0,0 +1,64 @@
+# $Id: PKGBUILD 142042 2011-11-04 20:49:22Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s@arch@gmail.com>
+# Contributor: Andreas Wagner <Andreas.Wagner@em.uni-frankfurt.de>
+
+pkgname=heirloom-mailx
+pkgver=12.5
+pkgrel=3
+pkgdesc="A commandline utility for sending and receiving email"
+arch=('i686' 'x86_64')
+url="http://heirloom.sourceforge.net/mailx.html"
+license=('custom')
+groups=('base')
+depends=('openssl' 'krb5')
+optdepends=('smtp-forwarder: for sending mail')
+replaces=('mailx' 'mailx-heirloom')
+provides=('mailx' 'mailx-heirloom')
+conflicts=('mailx' 'mailx-heirloom')
+backup=(etc/mail.rc)
+source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz)
+sha1sums=('1998dd6168a68400e533712ae7163c72b6a7c056')
+options=('!makeflags') # Does not build with MAKEFLAGS=-jX, X>1
+
+# source PKGBUILD && mksource
+mksource() {
+ export CVSROOT=:pserver:anonymous@nail.cvs.sourceforge.net:/cvsroot/nail
+ D=nail
+ [ -d "${D}" ] && cvs up "${D}" || cvs co "${D}"
+
+ _dirname=${pkgname}-${pkgver}
+ mv $D ${_dirname}
+ tar -cJv --exclude=CVS -f ${_dirname}.tar.xz ${_dirname}
+ rm -rf ${_dirname}
+}
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i 's|/etc/nail.rc|/etc/mail.rc|g' mailx.1
+
+ # For Linux and BSD, this should be set.
+ echo "set bsdcompat" >> nail.rc
+
+ sed -i "s/pg/less/" cmd1.c
+
+ echo PREFIX=/usr \
+ MAILRC=/etc/mail.rc \
+ SENDMAIL=/usr/sbin/sendmail \
+ MAILSPOOL=/var/spool/mail \
+ UCBINSTALL=/bin/install > makeflags
+
+ make `cat makeflags` IPv6=-DHAVE_IPv6_FUNCS
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" `cat makeflags` install
+
+ # For compatibility with the old mailx program
+ ln -sf mailx "${pkgdir}"/usr/bin/mail
+ ln -sf mailx.1.gz "${pkgdir}"/usr/share/man/man1/mail.1.gz
+
+ install -D -m0644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/testing/iproute2/PKGBUILD b/testing/iproute2/PKGBUILD
new file mode 100644
index 000000000..9d84c9a7d
--- /dev/null
+++ b/testing/iproute2/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 141994 2011-11-03 20:58:44Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=iproute2
+pkgver=2.6.39
+pkgrel=2
+pkgdesc="IP Routing Utilities"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.linux-foundation.org/en/Net:Iproute2"
+depends=('perl')
+makedepends=('linux-atm')
+optdepends=('linux-atm: ATM support')
+provides=('iproute')
+conflicts=('iproute')
+replaces=('iproute')
+options=('!makeflags')
+backup=('etc/iproute2/ematch_map' 'etc/iproute2/rt_dsfield' 'etc/iproute2/rt_protos' \
+ 'etc/iproute2/rt_realms' 'etc/iproute2/rt_scopes' 'etc/iproute2/rt_tables')
+source=(http://devresources.linux-foundation.org/dev/iproute2/download/iproute2-${pkgver}.tar.gz
+ 'iproute2-fhs.patch')
+sha1sums=('9044ad0b4a34a377a54197724373330294d743c7'
+ '2416b11252364d7a6c742eabb4a6924a75637a46')
+
+
+build() {
+ cd $srcdir/iproute2-${pkgver}
+
+ # set correct fhs structure
+ patch -Np1 -i ${srcdir}/iproute2-fhs.patch
+
+ ./configure
+
+ make
+}
+
+package() {
+ cd $srcdir/iproute2-${pkgver}
+
+ make DESTDIR=$pkgdir install
+
+ # allow loopback to be started before /usr is mounted, this may not be supported in the future
+ mkdir -p ${pkgdir}/sbin
+ mv ${pkgdir}/usr/sbin/ip ${pkgdir}/sbin/ip
+ ln -s /sbin/ip ${pkgdir}/usr/sbin/ip
+
+ # libnetlink isn't installed, install it FS#19385
+ install -Dm644 include/libnetlink.h ${pkgdir}/usr/include/libnetlink.h
+ install -Dm644 lib/libnetlink.a ${pkgdir}/usr/lib/libnetlink.a
+}
diff --git a/testing/iproute2/iproute2-fhs.patch b/testing/iproute2/iproute2-fhs.patch
new file mode 100644
index 000000000..2608414db
--- /dev/null
+++ b/testing/iproute2/iproute2-fhs.patch
@@ -0,0 +1,84 @@
+diff -Naur iproute2.old/Makefile iproute2-2.6.29/Makefile
+--- iproute2.old/Makefile 2009-11-11 22:05:21.251407668 +0100
++++ iproute2-2.6.29/Makefile 2009-11-11 22:07:09.891833516 +0100
+@@ -1,11 +1,12 @@
+ DESTDIR=/usr/
+ ROOTDIR=$(DESTDIR)
+ LIBDIR=/usr/lib/
+-SBINDIR=/sbin
++SBINDIR=/usr/sbin
+ CONFDIR=/etc/iproute2
+-DOCDIR=/share/doc/iproute2
+-MANDIR=/share/man
++DOCDIR=/usr/share/doc/iproute2
++MANDIR=/usr/share/man
+ ARPDDIR=/var/lib/arpd
++SHAREDIR=/usr/share
+
+ # Path to db_185.h include
+ DBM_INCLUDE:=$(ROOTDIR)/usr/include
+diff -Naur iproute2.old/tc/tc_util.c iproute2-2.6.29/tc/tc_util.c
+--- iproute2.old/tc/tc_util.c 2009-11-11 22:05:21.298076943 +0100
++++ iproute2-2.6.29/tc/tc_util.c 2009-11-11 22:09:32.865152646 +0100
+@@ -24,8 +24,8 @@
+ #include "utils.h"
+ #include "tc_util.h"
+
+-#ifndef LIBDIR
+-#define LIBDIR "/usr/lib/"
++#ifndef SHAREDIR
++#define SHAREDIR "/usr/share"
+ #endif
+
+ const char *get_tc_lib(void)
+@@ -34,7 +34,7 @@
+
+ lib_dir = getenv("TC_LIB_DIR");
+ if (!lib_dir)
+- lib_dir = LIBDIR "/tc/";
++ lib_dir = SHAREDIR "/tc/";
+
+ return lib_dir;
+ }
+diff -Naur iproute2.old/netem/Makefile iproute2-2.6.35/netem/Makefile
+--- iproute2.old/netem/Makefile 2010-08-06 11:30:48.640940183 +0200
++++ iproute2-2.6.35/netem/Makefile 2010-08-06 11:32:34.210908892 +0200
+@@ -20,9 +20,9 @@
+ $(HOSTCC) $(CCOPTS) -I../include -o $@ $@.c -lm
+
+ install: all
+- mkdir -p $(DESTDIR)$(LIBDIR)/tc
++ mkdir -p $(DESTDIR)$(SHAREDIR)/tc
+ for i in $(DISTDATA); \
+- do install -m 644 $$i $(DESTDIR)$(LIBDIR)/tc; \
++ do install -m 644 $$i $(DESTDIR)$(SHAREDIR)/tc; \
+ done
+
+ clean:
+diff -Naur iproute2.old/tc/Makefile iproute2-2.6.35/tc/Makefile
+--- iproute2.old/tc/Makefile 2010-08-06 11:48:35.607472252 +0200
++++ iproute2-2.6.35/tc/Makefile 2010-08-06 11:49:36.977473380 +0200
+@@ -99,18 +99,11 @@
+ $(AR) rcs $@ $(TCLIB)
+
+ install: all
+- mkdir -p $(MODDESTDIR)
+- install -m 0755 tc $(DESTDIR)$(SBINDIR)
+- for i in $(TCSO); \
+- do install -m 755 $$i $(MODDESTDIR); \
+- done
+- if [ ! -f $(MODDESTDIR)/m_ipt.so ]; then \
+- if [ -f $(MODDESTDIR)/m_xt.so ]; \
+- then ln -s m_xt.so $(MODDESTDIR)/m_ipt.so ; \
+- elif [ -f $(MODDESTDIR)/m_xt_old.so ]; \
+- then ln -s m_xt_old.so $(MODDESTDIR)/m_ipt.so ; \
+- fi; \
+- fi
++ mkdir -p $(DESTDIR)$(LIBDIR)/tc
++ install -m 0755 tc $(DESTDIR)$(SBINDIR)
++ for i in $(TCSO); \
++ do install -m 755 $$i $(DESTDIR)$(LIBDIR)/tc; \
++ done
+
+ clean:
+ rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.yacc.h; \
diff --git a/testing/iputils/PKGBUILD b/testing/iputils/PKGBUILD
new file mode 100644
index 000000000..265d84d29
--- /dev/null
+++ b/testing/iputils/PKGBUILD
@@ -0,0 +1,65 @@
+# $Id: PKGBUILD 141976 2011-11-03 20:08:42Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+
+pkgname=iputils
+pkgver=20101006
+_traceroutever=1.4a12
+pkgrel=2
+pkgdesc="IP Configuration Utilities (and Ping)"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.linuxfoundation.org/en/Net:Iputils"
+groups=('base')
+depends=('glibc' 'openssl' 'sysfsutils')
+conflicts=('netkit-base' 'arping' 'netkit-tftpd' 'traceroute')
+replaces=('netkit-base' 'traceroute')
+source=(http://www.skbuff.net/${pkgname}/${pkgname}-s${pkgver}.tar.bz2
+ ftp://ftp.ee.lbl.gov/traceroute-${_traceroutever}.tar.gz
+ 'permission-fix.patch'
+ 'iputils-s20101006-manpages.patch')
+options=('!makeflags')
+md5sums=('a36c25e9ec17e48be514dc0485e7376c'
+ '964d599ef696efccdeebe7721cd4828d'
+ '66109966cad06e425bb12a78bab85b70'
+ 'd02dffac6f16e841921a9fc73bd2d3bd')
+
+build() {
+ #build iptuils
+ cd "${srcdir}/${pkgname}-s${pkgver}"
+
+ # Doc fails to build (see FS#20251)
+ # As a temporary workaround, we use these man pages from Fedora & LFS
+ patch -Np1 -i ../iputils-s20101006-manpages.patch
+ make
+
+ # build traceroute
+ # this is combined in this package because it's awkward as a separate package
+ cd "${srcdir}/traceroute-${_traceroutever}"
+ patch -Np1 -i ../permission-fix.patch
+ ./configure --prefix=/usr \
+ --sbindir=/bin \
+ --mandir=/usr/share/man
+ make CFLAGS="${CFLAGS} -Ilinux-include/"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-s${pkgver}"
+ for i in arping clockdiff rarpd rdisc tftpd tracepath tracepath6; do
+ install -D -m755 $i "${pkgdir}/usr/sbin/$i"
+ done
+ for i in ping ping6 traceroute6; do
+ install -D -m4755 $i "${pkgdir}/bin/$i"
+ done
+
+ install -dm755 "${pkgdir}/usr/share/man/man8"
+ install -m644 doc/{arping,clockdiff,ping,rarpd,rdisc,tftpd,tracepath,traceroute6}.8 \
+ "${pkgdir}/usr/share/man/man8/"
+
+ cd "${pkgdir}/usr/share/man/man8"
+ ln -sf ping.8.gz ping6.8.gz
+ ln -sf tracepath.8.gz tracepath6.8.gz
+
+ cd "${srcdir}/traceroute-${_traceroutever}"
+ make DESTDIR="${pkgdir}" install install-man
+}
diff --git a/testing/iputils/iputils-s20101006-manpages.patch b/testing/iputils/iputils-s20101006-manpages.patch
new file mode 100644
index 000000000..764d0d36d
--- /dev/null
+++ b/testing/iputils/iputils-s20101006-manpages.patch
@@ -0,0 +1,1044 @@
+--- /dev/null 2011-01-26 09:02:28.396666668 -0500
++++ iputils-s20101006/doc/arping.8 2011-01-19 04:10:18.000000000 -0500
+@@ -0,0 +1,110 @@
++.\" This manpage has been automatically generated by docbook2man
++.\" from a DocBook document. This tool can be found at:
++.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
++.\" Please send any bug reports, improvements, comments, patches,
++.\" etc. to Steve Cheng <steve@ggi-project.org>.
++.TH "ARPING" "8" "19 January 2011" "iputils-101006" "System Manager's Manual: iputils"
++.SH NAME
++arping \- send ARP REQUEST to a neighbour host
++.SH SYNOPSIS
++
++\fBarping\fR [ \fB-AbDfhqUV\fR] [ \fB-c \fIcount\fB\fR] [ \fB-w \fIdeadline\fB\fR] [ \fB-s \fIsource\fB\fR] \fB-I \fIinterface\fB\fR \fB\fIdestination\fB\fR
++
++.SH "DESCRIPTION"
++.PP
++Ping \fIdestination\fR on device \fIinterface\fR by ARP packets,
++using source address \fIsource\fR.
++.SH "OPTIONS"
++.TP
++\fB-A\fR
++The same as \fB-U\fR, but ARP REPLY packets used instead
++of ARP REQUEST.
++.TP
++\fB-b\fR
++Send only MAC level broadcasts. Normally \fBarping\fR starts
++from sending broadcast, and switch to unicast after reply received.
++.TP
++\fB-c \fIcount\fB\fR
++Stop after sending \fIcount\fR ARP REQUEST
++packets. With
++\fIdeadline\fR
++option, \fBarping\fR waits for
++\fIcount\fR ARP REPLY packets, until the timeout expires.
++.TP
++\fB-D\fR
++Duplicate address detection mode (DAD). See
++RFC2131, 4.4.1.
++Returns 0, if DAD succeeded i.e. no replies are received
++.TP
++\fB-f\fR
++Finish after the first reply confirming that target is alive.
++.TP
++\fB-I \fIinterface\fB\fR
++Name of network device where to send ARP REQUEST packets. This option
++is required.
++.TP
++\fB-h\fR
++Print help page and exit.
++.TP
++\fB-q\fR
++Quiet output. Nothing is displayed.
++.TP
++\fB-s \fIsource\fB\fR
++IP source address to use in ARP packets.
++If this option is absent, source address is:
++.RS
++.TP 0.2i
++\(bu
++In DAD mode (with option \fB-D\fR) set to 0.0.0.0.
++.TP 0.2i
++\(bu
++In Unsolicited ARP mode (with options \fB-U\fR or \fB-A\fR)
++set to \fIdestination\fR.
++.TP 0.2i
++\(bu
++Otherwise, it is calculated from routing tables.
++.RE
++.TP
++\fB-U\fR
++Unsolicited ARP mode to update neighbours' ARP caches.
++No replies are expected.
++.TP
++\fB-V\fR
++Print version of the program and exit.
++.TP
++\fB-w \fIdeadline\fB\fR
++Specify a timeout, in seconds, before
++\fBarping\fR
++exits regardless of how many
++packets have been sent or received. In this case
++\fBarping\fR
++does not stop after
++\fIcount\fR
++packet are sent, it waits either for
++\fIdeadline\fR
++expire or until
++\fIcount\fR
++probes are answered.
++.SH "SEE ALSO"
++.PP
++\fBping\fR(8),
++\fBclockdiff\fR(8),
++\fBtracepath\fR(8).
++.SH "AUTHOR"
++.PP
++\fBarping\fR was written by
++Alexey Kuznetsov
++<kuznet@ms2.inr.ac.ru>.
++It is now maintained by
++YOSHIFUJI Hideaki
++<yoshfuji@skbuff.net>.
++.SH "SECURITY"
++.PP
++\fBarping\fR requires CAP_NET_RAWIO capability
++to be executed. It is not recommended to be used as set-uid root,
++because it allows user to modify ARP caches of neighbour hosts.
++.SH "AVAILABILITY"
++.PP
++\fBarping\fR is part of \fIiputils\fR package
++and the latest versions are available in source form at
++http://www.skbuff.net/iputils/iputils-current.tar.bz2.
+--- /dev/null 2011-01-26 09:02:28.396666668 -0500
++++ iputils-s20101006/doc/clockdiff.8 2011-01-19 04:10:19.000000000 -0500
+@@ -0,0 +1,81 @@
++.\" This manpage has been automatically generated by docbook2man
++.\" from a DocBook document. This tool can be found at:
++.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
++.\" Please send any bug reports, improvements, comments, patches,
++.\" etc. to Steve Cheng <steve@ggi-project.org>.
++.TH "CLOCKDIFF" "8" "19 January 2011" "iputils-101006" "System Manager's Manual: iputils"
++.SH NAME
++clockdiff \- measure clock difference between hosts
++.SH SYNOPSIS
++
++\fBclockdiff\fR [ \fB-o\fR] [ \fB-o1\fR] \fB\fIdestination\fB\fR
++
++.SH "DESCRIPTION"
++.PP
++\fBclockdiff\fR Measures clock difference between us and
++\fIdestination\fR with 1 msec resolution using ICMP TIMESTAMP
++[2]
++packets or, optionally, IP TIMESTAMP option
++[3]
++option added to ICMP ECHO.
++[1]
++.SH "OPTIONS"
++.TP
++\fB-o\fR
++Use IP TIMESTAMP with ICMP ECHO instead of ICMP TIMESTAMP
++messages. It is useful with some destinations, which do not support
++ICMP TIMESTAMP (f.e. Solaris <2.4).
++.TP
++\fB-o1\fR
++Slightly different form of \fB-o\fR, namely it uses three-term
++IP TIMESTAMP with prespecified hop addresses instead of four term one.
++What flavor works better depends on target host. Particularly,
++\fB-o\fR is better for Linux.
++.SH "WARNINGS"
++.TP 0.2i
++\(bu
++Some nodes (Cisco) use non-standard timestamps, which is allowed
++by RFC, but makes timestamps mostly useless.
++.TP 0.2i
++\(bu
++Some nodes generate messed timestamps (Solaris>2.4), when
++run \fBxntpd\fR. Seems, its IP stack uses a corrupted clock source,
++which is synchronized to time-of-day clock periodically and jumps
++randomly making timestamps mostly useless. Good news is that you can
++use NTP in this case, which is even better.
++.TP 0.2i
++\(bu
++\fBclockdiff\fR shows difference in time modulo 24 days.
++.SH "SEE ALSO"
++.PP
++\fBping\fR(8),
++\fBarping\fR(8),
++\fBtracepath\fR(8).
++.SH "REFERENCES"
++.PP
++[1] ICMP ECHO,
++RFC0792, page 14.
++.PP
++[2] ICMP TIMESTAMP,
++RFC0792, page 16.
++.PP
++[3] IP TIMESTAMP option,
++RFC0791, 3.1, page 16.
++.SH "AUTHOR"
++.PP
++\fBclockdiff\fR was compiled by
++Alexey Kuznetsov
++<kuznet@ms2.inr.ac.ru>. It was based on code borrowed
++from BSD \fBtimed\fR daemon.
++It is now maintained by
++YOSHIFUJI Hideaki
++<yoshfuji@skbuff.net>.
++.SH "SECURITY"
++.PP
++\fBclockdiff\fR requires CAP_NET_RAWIO capability
++to be executed. It is safe to be used as set-uid root.
++.SH "AVAILABILITY"
++.PP
++\fBclockdiff\fR is part of \fIiputils\fR package
++and the latest versions are available in source form at
++http://www.skbuff.net/iputils/iputils-current.tar.bz2.
+--- /dev/null 2011-01-26 09:02:28.396666668 -0500
++++ iputils-s20101006/doc/ping.8 2011-01-19 04:10:19.000000000 -0500
+@@ -0,0 +1,408 @@
++.\" This manpage has been automatically generated by docbook2man
++.\" from a DocBook document. This tool can be found at:
++.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
++.\" Please send any bug reports, improvements, comments, patches,
++.\" etc. to Steve Cheng <steve@ggi-project.org>.
++.TH "PING" "8" "19 January 2011" "iputils-101006" "System Manager's Manual: iputils"
++.SH NAME
++ping, ping6 \- send ICMP ECHO_REQUEST to network hosts
++.SH SYNOPSIS
++
++\fBping\fR [ \fB-LRUbdfnqrvVaAB\fR] [ \fB-c \fIcount\fB\fR] [ \fB-m \fImark\fB\fR] [ \fB-i \fIinterval\fB\fR] [ \fB-l \fIpreload\fB\fR] [ \fB-p \fIpattern\fB\fR] [ \fB-s \fIpacketsize\fB\fR] [ \fB-t \fIttl\fB\fR] [ \fB-w \fIdeadline\fB\fR] [ \fB-F \fIflowlabel\fB\fR] [ \fB-I \fIinterface\fB\fR] [ \fB-M \fIhint\fB\fR] [ \fB-N \fInioption\fB\fR] [ \fB-Q \fItos\fB\fR] [ \fB-S \fIsndbuf\fB\fR] [ \fB-T \fItimestamp option\fB\fR] [ \fB-W \fItimeout\fB\fR] [ \fB\fIhop\fB\fR\fI ...\fR] \fB\fIdestination\fB\fR
++
++.SH "DESCRIPTION"
++.PP
++\fBping\fR uses the ICMP protocol's mandatory ECHO_REQUEST
++datagram to elicit an ICMP ECHO_RESPONSE from a host or gateway.
++ECHO_REQUEST datagrams (``pings'') have an IP and ICMP
++header, followed by a struct timeval and then an arbitrary
++number of ``pad'' bytes used to fill out the packet.
++.PP
++\fBping6\fR can also send Node Information Queries (RFC4620).
++.SH "OPTIONS"
++.TP
++\fB-a\fR
++Audible ping.
++.TP
++\fB-A\fR
++Adaptive ping. Interpacket interval adapts to round-trip time, so that
++effectively not more than one (or more, if preload is set) unanswered probes
++present in the network. Minimal interval is 200msec for not super-user.
++On networks with low rtt this mode is essentially equivalent to flood mode.
++.TP
++\fB-b\fR
++Allow pinging a broadcast address.
++.TP
++\fB-B\fR
++Do not allow \fBping\fR to change source address of probes.
++The address is bound to one selected when \fBping\fR starts.
++.TP
++\fB-m \fImark\fB\fR
++use \fImark\fR to tag the packets going out. This is useful
++for variety of reasons within the kernel such as using policy
++routing to select specific outbound processing.
++.TP
++\fB-c \fIcount\fB\fR
++Stop after sending \fIcount\fR ECHO_REQUEST
++packets. With
++\fIdeadline\fR
++option, \fBping\fR waits for
++\fIcount\fR ECHO_REPLY packets, until the timeout expires.
++.TP
++\fB-d\fR
++Set the SO_DEBUG option on the socket being used.
++Essentially, this socket option is not used by Linux kernel.
++.TP
++\fB-F \fIflow label\fB\fR
++Allocate and set 20 bit flow label on echo request packets.
++(Only \fBping6\fR). If value is zero, kernel allocates random flow label.
++.TP
++\fB-f\fR
++Flood ping. For every ECHO_REQUEST sent a period ``.'' is printed,
++while for ever ECHO_REPLY received a backspace is printed.
++This provides a rapid display of how many packets are being dropped.
++If interval is not given, it sets interval to zero and
++outputs packets as fast as they come back or one hundred times per second,
++whichever is more.
++Only the super-user may use this option with zero interval.
++.TP
++\fB-i \fIinterval\fB\fR
++Wait \fIinterval\fR seconds between sending each packet.
++The default is to wait for one second between each packet normally,
++or not to wait in flood mode. Only super-user may set interval
++to values less 0.2 seconds.
++.TP
++\fB-I \fIinterface address\fB\fR
++Set source address to specified interface address. Argument
++may be numeric IP address or name of device. When pinging IPv6
++link-local address this option is required.
++.TP
++\fB-l \fIpreload\fB\fR
++If \fIpreload\fR is specified,
++\fBping\fR sends that many packets not waiting for reply.
++Only the super-user may select preload more than 3.
++.TP
++\fB-L\fR
++Suppress loopback of multicast packets. This flag only applies if the ping
++destination is a multicast address.
++.TP
++\fB-N \fInioption\fB\fR
++Send ICMPv6 Node Information Queries (RFC4620), instead of Echo Request.
++.RS
++.TP
++\fBname\fR
++Queries for Node Names.
++.RE
++.RS
++.TP
++\fBipv6\fR
++Queries for IPv6 Addresses. There are several IPv6 specific flags.
++.RS
++.TP
++\fBipv6-global\fR
++Request IPv6 global-scope addresses.
++.RE
++.RS
++.TP
++\fBipv6-sitelocal\fR
++Request IPv6 site-local addresses.
++.RE
++.RS
++.TP
++\fBipv6-linklocal\fR
++Request IPv6 link-local addresses.
++.RE
++.RS
++.TP
++\fBipv6-all\fR
++Request IPv6 addresses on other interfaces.
++.RE
++.RE
++.RS
++.TP
++\fBipv4\fR
++Queries for IPv4 Addresses. There is one IPv4 specific flag.
++.RS
++.TP
++\fBipv4-all\fR
++Request IPv4 addresses on other interfaces.
++.RE
++.RE
++.RS
++.TP
++\fBsubject-ipv6=\fIipv6addr\fB\fR
++IPv6 subject address.
++.RE
++.RS
++.TP
++\fBsubject-ipv4=\fIipv4addr\fB\fR
++IPv4 subject address.
++.RE
++.RS
++.TP
++\fBsubject-name=\fInodename\fB\fR
++Subject name. If it contains more than one dot,
++fully-qualified domain name is assumed.
++.RE
++.RS
++.TP
++\fBsubject-fqdn=\fInodename\fB\fR
++Subject name. Fully-qualified domain name is
++always assumed.
++.RE
++.TP
++\fB-n\fR
++Numeric output only.
++No attempt will be made to lookup symbolic names for host addresses.
++.TP
++\fB-p \fIpattern\fB\fR
++You may specify up to 16 ``pad'' bytes to fill out the packet you send.
++This is useful for diagnosing data-dependent problems in a network.
++For example, \fB-p ff\fR will cause the sent packet
++to be filled with all ones.
++.TP
++\fB-D\fR
++Print timestamp (unix time + microseconds as in gettimeofday) before
++each line.
++.TP
++\fB-Q \fItos\fB\fR
++Set Quality of Service -related bits in ICMP datagrams.
++\fItos\fR can be either decimal or hex number.
++Traditionally (RFC1349), these have been interpreted as: 0 for reserved
++(currently being redefined as congestion control), 1-4 for Type of Service
++and 5-7 for Precedence.
++Possible settings for Type of Service are: minimal cost: 0x02,
++reliability: 0x04, throughput: 0x08, low delay: 0x10. Multiple TOS bits
++should not be set simultaneously. Possible settings for
++special Precedence range from priority (0x20) to net control (0xe0). You
++must be root (CAP_NET_ADMIN capability) to use Critical or
++higher precedence value. You cannot set
++bit 0x01 (reserved) unless ECN has been enabled in the kernel.
++In RFC2474, these fields has been redefined as 8-bit Differentiated
++Services (DS), consisting of: bits 0-1 of separate data (ECN will be used,
++here), and bits 2-7 of Differentiated Services Codepoint (DSCP).
++.TP
++\fB-q\fR
++Quiet output.
++Nothing is displayed except the summary lines at startup time and
++when finished.
++.TP
++\fB-R\fR
++Record route.
++Includes the RECORD_ROUTE option in the ECHO_REQUEST
++packet and displays the route buffer on returned packets.
++Note that the IP header is only large enough for nine such routes.
++Many hosts ignore or discard this option.
++.TP
++\fB-r\fR
++Bypass the normal routing tables and send directly to a host on an attached
++interface.
++If the host is not on a directly-attached network, an error is returned.
++This option can be used to ping a local host through an interface
++that has no route through it provided the option \fB-I\fR is also
++used.
++.TP
++\fB-s \fIpacketsize\fB\fR
++Specifies the number of data bytes to be sent.
++The default is 56, which translates into 64 ICMP
++data bytes when combined with the 8 bytes of ICMP header data.
++.TP
++\fB-S \fIsndbuf\fB\fR
++Set socket sndbuf. If not specified, it is selected to buffer
++not more than one packet.
++.TP
++\fB-t \fIttl\fB\fR
++Set the IP Time to Live.
++.TP
++\fB-T \fItimestamp option\fB\fR
++Set special IP timestamp options.
++\fItimestamp option\fR may be either
++\fItsonly\fR (only timestamps),
++\fItsandaddr\fR (timestamps and addresses) or
++\fItsprespec host1 [host2 [host3 [host4]]]\fR
++(timestamp prespecified hops).
++.TP
++\fB-M \fIhint\fB\fR
++Select Path MTU Discovery strategy.
++\fIhint\fR may be either \fIdo\fR
++(prohibit fragmentation, even local one),
++\fIwant\fR (do PMTU discovery, fragment locally when packet size
++is large), or \fIdont\fR (do not set DF flag).
++.TP
++\fB-U\fR
++Print full user-to-user latency (the old behaviour). Normally
++\fBping\fR
++prints network round trip time, which can be different
++f.e. due to DNS failures.
++.TP
++\fB-v\fR
++Verbose output.
++.TP
++\fB-V\fR
++Show version and exit.
++.TP
++\fB-w \fIdeadline\fB\fR
++Specify a timeout, in seconds, before
++\fBping\fR
++exits regardless of how many
++packets have been sent or received. In this case
++\fBping\fR
++does not stop after
++\fIcount\fR
++packet are sent, it waits either for
++\fIdeadline\fR
++expire or until
++\fIcount\fR
++probes are answered or for some error notification from network.
++.TP
++\fB-W \fItimeout\fB\fR
++Time to wait for a response, in seconds. The option affects only timeout
++in absense of any responses, otherwise \fBping\fR waits for two RTTs.
++.PP
++When using \fBping\fR for fault isolation, it should first be run
++on the local host, to verify that the local network interface is up
++and running. Then, hosts and gateways further and further away should be
++``pinged''. Round-trip times and packet loss statistics are computed.
++If duplicate packets are received, they are not included in the packet
++loss calculation, although the round trip time of these packets is used
++in calculating the minimum/average/maximum round-trip time numbers.
++When the specified number of packets have been sent (and received) or
++if the program is terminated with a
++SIGINT, a brief summary is displayed. Shorter current statistics
++can be obtained without termination of process with signal
++SIGQUIT.
++.PP
++If \fBping\fR does not receive any reply packets at all it will
++exit with code 1. If a packet
++\fIcount\fR
++and
++\fIdeadline\fR
++are both specified, and fewer than
++\fIcount\fR
++packets are received by the time the
++\fIdeadline\fR
++has arrived, it will also exit with code 1.
++On other error it exits with code 2. Otherwise it exits with code 0. This
++makes it possible to use the exit code to see if a host is alive or
++not.
++.PP
++This program is intended for use in network testing, measurement and
++management.
++Because of the load it can impose on the network, it is unwise to use
++\fBping\fR during normal operations or from automated scripts.
++.SH "ICMP PACKET DETAILS"
++.PP
++An IP header without options is 20 bytes.
++An ICMP ECHO_REQUEST packet contains an additional 8 bytes worth
++of ICMP header followed by an arbitrary amount of data.
++When a \fIpacketsize\fR is given, this indicated the size of this
++extra piece of data (the default is 56). Thus the amount of data received
++inside of an IP packet of type ICMP ECHO_REPLY will always be 8 bytes
++more than the requested data space (the ICMP header).
++.PP
++If the data space is at least of size of struct timeval
++\fBping\fR uses the beginning bytes of this space to include
++a timestamp which it uses in the computation of round trip times.
++If the data space is shorter, no round trip times are given.
++.SH "DUPLICATE AND DAMAGED PACKETS"
++.PP
++\fBping\fR will report duplicate and damaged packets.
++Duplicate packets should never occur, and seem to be caused by
++inappropriate link-level retransmissions.
++Duplicates may occur in many situations and are rarely (if ever) a
++good sign, although the presence of low levels of duplicates may not
++always be cause for alarm.
++.PP
++Damaged packets are obviously serious cause for alarm and often
++indicate broken hardware somewhere in the
++\fBping\fR packet's path (in the network or in the hosts).
++.SH "TRYING DIFFERENT DATA PATTERNS"
++.PP
++The (inter)network layer should never treat packets differently depending
++on the data contained in the data portion.
++Unfortunately, data-dependent problems have been known to sneak into
++networks and remain undetected for long periods of time.
++In many cases the particular pattern that will have problems is something
++that doesn't have sufficient ``transitions'', such as all ones or all
++zeros, or a pattern right at the edge, such as almost all zeros.
++It isn't necessarily enough to specify a data pattern of all zeros (for
++example) on the command line because the pattern that is of interest is
++at the data link level, and the relationship between what you type and
++what the controllers transmit can be complicated.
++.PP
++This means that if you have a data-dependent problem you will probably
++have to do a lot of testing to find it.
++If you are lucky, you may manage to find a file that either can't be sent
++across your network or that takes much longer to transfer than other
++similar length files.
++You can then examine this file for repeated patterns that you can test
++using the \fB-p\fR option of \fBping\fR.
++.SH "TTL DETAILS"
++.PP
++The TTL value of an IP packet represents the maximum number of IP routers
++that the packet can go through before being thrown away.
++In current practice you can expect each router in the Internet to decrement
++the TTL field by exactly one.
++.PP
++The TCP/IP specification states that the TTL field for TCP
++packets should be set to 60, but many systems use smaller values
++(4.3 BSD uses 30, 4.2 used 15).
++.PP
++The maximum possible value of this field is 255, and most Unix systems set
++the TTL field of ICMP ECHO_REQUEST packets to 255.
++This is why you will find you can ``ping'' some hosts, but not reach them
++with
++\fBtelnet\fR(1)
++or
++\fBftp\fR(1).
++.PP
++In normal operation ping prints the ttl value from the packet it receives.
++When a remote system receives a ping packet, it can do one of three things
++with the TTL field in its response:
++.TP 0.2i
++\(bu
++Not change it; this is what Berkeley Unix systems did before the
++4.3BSD Tahoe release. In this case the TTL value in the received packet
++will be 255 minus the number of routers in the round-trip path.
++.TP 0.2i
++\(bu
++Set it to 255; this is what current Berkeley Unix systems do.
++In this case the TTL value in the received packet will be 255 minus the
++number of routers in the path \fBfrom\fR
++the remote system \fBto\fR the \fBping\fRing host.
++.TP 0.2i
++\(bu
++Set it to some other value. Some machines use the same value for
++ICMP packets that they use for TCP packets, for example either 30 or 60.
++Others may use completely wild values.
++.SH "BUGS"
++.TP 0.2i
++\(bu
++Many Hosts and Gateways ignore the RECORD_ROUTE option.
++.TP 0.2i
++\(bu
++The maximum IP header length is too small for options like
++RECORD_ROUTE to be completely useful.
++There's not much that that can be done about this, however.
++.TP 0.2i
++\(bu
++Flood pinging is not recommended in general, and flood pinging the
++broadcast address should only be done under very controlled conditions.
++.SH "SEE ALSO"
++.PP
++\fBnetstat\fR(1),
++\fBifconfig\fR(8).
++.SH "HISTORY"
++.PP
++The \fBping\fR command appeared in 4.3BSD.
++.PP
++The version described here is its descendant specific to Linux.
++.SH "SECURITY"
++.PP
++\fBping\fR requires CAP_NET_RAWIO capability
++to be executed. It may be used as set-uid root.
++.SH "AVAILABILITY"
++.PP
++\fBping\fR is part of \fIiputils\fR package
++and the latest versions are available in source form at
++http://www.skbuff.net/iputils/iputils-current.tar.bz2.
+--- /dev/null 2011-01-26 09:02:28.396666668 -0500
++++ iputils-s20101006/doc/rdisc.8 2011-01-19 04:10:20.000000000 -0500
+@@ -0,0 +1,110 @@
++.\" This manpage has been automatically generated by docbook2man
++.\" from a DocBook document. This tool can be found at:
++.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
++.\" Please send any bug reports, improvements, comments, patches,
++.\" etc. to Steve Cheng <steve@ggi-project.org>.
++.TH "RDISC" "8" "19 January 2011" "iputils-101006" "System Manager's Manual: iputils"
++.SH NAME
++rdisc \- network router discovery daemon
++.SH SYNOPSIS
++
++\fBrdisc\fR [ \fB-abdfstvV\fR] [ \fB\fIsend_address\fB\fR] [ \fB\fIreceive_address\fB\fR]
++
++.SH "DESCRIPTION"
++.PP
++\fBrdisc\fR implements client side of the ICMP router discover protocol.
++\fBrdisc\fR is invoked at boot time to populate the network
++routing tables with default routes.
++.PP
++\fBrdisc\fR listens on the ALL_HOSTS (224.0.0.1) multicast address
++(or \fIreceive_address\fR provided it is given)
++for ROUTER_ADVERTISE messages from routers. The received
++messages are handled by first ignoring those listed router addresses
++with which the host does not share a network. Among the remaining addresses
++the ones with the highest preference are selected as default routers
++and a default route is entered in the kernel routing table
++for each one of them.
++.PP
++Optionally, \fBrdisc\fR can avoid waiting for routers to announce
++themselves by sending out a few ROUTER_SOLICITATION messages
++to the ALL_ROUTERS (224.0.0.2) multicast address
++(or \fIsend_address\fR provided it is given)
++when it is started.
++.PP
++A timer is associated with each router address and the address will
++no longer be considered for inclusion in the the routing tables if the
++timer expires before a new
++\fBadvertise\fR message is received from the router.
++The address will also be excluded from consideration if the host receives an
++\fBadvertise\fR
++message with the preference being maximally negative.
++.PP
++Server side of router discovery protocol is supported by Cisco IOS
++and by any more or less complete UNIX routing daemon, f.e \fBgated\fR.
++.SH "OPTIONS"
++.TP
++\fB-a\fR
++Accept all routers independently of the preference they have in their
++\fBadvertise\fR messages.
++Normally \fBrdisc\fR only accepts (and enters in the kernel routing
++tables) the router or routers with the highest preference.
++.TP
++\fB-b\fR
++Opposite to \fB-a\fR, i.e. install only router with the best
++preference value. It is default behaviour.
++.TP
++\fB-d\fR
++Send debugging messages to syslog.
++.TP
++\fB-f\fR
++Run \fBrdisc\fR forever even if no routers are found.
++Normally \fBrdisc\fR gives up if it has not received any
++\fBadvertise\fR message after after soliciting three times,
++in which case it exits with a non-zero exit code.
++If \fB-f\fR is not specified in the first form then
++\fB-s\fR must be specified.
++.TP
++\fB-s\fR
++Send three \fBsolicitation\fR messages initially to quickly discover
++the routers when the system is booted.
++When \fB-s\fR is specified \fBrdisc\fR
++exits with a non-zero exit code if it can not find any routers.
++This can be overridden with the \fB-f\fR option.
++.TP
++\fB-t\fR
++Test mode. Do not go to background.
++.TP
++\fB-v\fR
++Be verbose i.e. send lots of debugging messages to syslog.
++.TP
++\fB-V\fR
++Print version and exit.
++.SH "HISTORY"
++.PP
++This program was developed by Sun Microsystems (see copyright
++notice in source file). It was ported to Linux by
++Alexey Kuznetsov
++<kuznet@ms2.inr.ac.ru>.
++It is now maintained by
++YOSHIFUJI Hideaki
++<yoshfuji@skbuff.net>.
++.SH "SEE ALSO"
++.PP
++\fBicmp\fR(7),
++\fBinet\fR(7),
++\fBping\fR(8).
++.SH "REFERENCES"
++.PP
++Deering, S.E.,ed "ICMP Router Discovery Messages",
++RFC1256, Network Information Center, SRI International,
++Menlo Park, Calif., September 1991.
++.SH "SECURITY"
++.PP
++\fBrdisc\fR requires CAP_NET_RAWIO to listen
++and send ICMP messages and capability CAP_NET_ADMIN
++to update routing tables.
++.SH "AVAILABILITY"
++.PP
++\fBrdisc\fR is part of \fIiputils\fR package
++and the latest versions are available in source form at
++http://www.skbuff.net/iputils/iputils-current.tar.bz2.
+--- /dev/null 2011-01-26 09:02:28.396666668 -0500
++++ iputils-s20101006/doc/tracepath.8 2011-01-19 04:10:20.000000000 -0500
+@@ -0,0 +1,97 @@
++.\" This manpage has been automatically generated by docbook2man
++.\" from a DocBook document. This tool can be found at:
++.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
++.\" Please send any bug reports, improvements, comments, patches,
++.\" etc. to Steve Cheng <steve@ggi-project.org>.
++.TH "TRACEPATH" "8" "19 January 2011" "iputils-101006" "System Manager's Manual: iputils"
++.SH NAME
++tracepath, tracepath6 \- traces path to a network host discovering MTU along this path
++.SH SYNOPSIS
++
++\fBtracepath\fR [ \fB-n\fR] [ \fB-b\fR] [ \fB-l \fIpktlen\fB\fR] \fB\fIdestination\fB\fR [ \fB\fIport\fB\fR]
++
++.SH "DESCRIPTION"
++.PP
++It traces path to \fIdestination\fR discovering MTU along this path.
++It uses UDP port \fIport\fR or some random port.
++It is similar to \fBtraceroute\fR, only does not require superuser
++privileges and has no fancy options.
++.PP
++\fBtracepath6\fR is good replacement for \fBtraceroute6\fR
++and classic example of application of Linux error queues.
++The situation with IPv4 is worse, because commercial
++IP routers do not return enough information in icmp error messages.
++Probably, it will change, when they will be updated.
++For now it uses Van Jacobson's trick, sweeping a range
++of UDP ports to maintain trace history.
++.SH "OPTIONS"
++.TP
++\fB-n\fR
++Print primarily IP addresses numerically.
++.TP
++\fB-b\fR
++Print both of host names and IP addresses.
++.TP
++\fB-l\fR
++Sets the initial packet length to \fIpktlen\fR instead of
++65536 for \fBtracepath\fR or 128000 for \fBtracepath6\fR.
++.SH "OUTPUT"
++.PP
++
++.nf
++root@mops:~ # tracepath6 3ffe:2400:0:109::2
++ 1?: [LOCALHOST] pmtu 1500
++ 1: dust.inr.ac.ru 0.411ms
++ 2: dust.inr.ac.ru asymm 1 0.390ms pmtu 1480
++ 2: 3ffe:2400:0:109::2 463.514ms reached
++ Resume: pmtu 1480 hops 2 back 2
++.fi
++.PP
++The first column shows TTL of the probe, followed by colon.
++Usually value of TTL is obtained from reply from network,
++but sometimes reply does not contain necessary information and
++we have to guess it. In this case the number is followed by ?.
++.PP
++The second column shows the network hop, which replied to the probe.
++It is either address of router or word [LOCALHOST], if
++the probe was not sent to the network.
++.PP
++The rest of line shows miscellaneous information about path to
++the correspinding hetwork hop. As rule it contains value of RTT.
++Additionally, it can show Path MTU, when it changes.
++If the path is asymmetric
++or the probe finishes before it reach prescribed hop, difference
++between number of hops in forward and backward direction is shown
++following keyword async. This information is not reliable.
++F.e. the third line shows asymmetry of 1, it is because the first probe
++with TTL of 2 was rejected at the first hop due to Path MTU Discovery.
++.PP
++The last line summarizes information about all the path to the destination,
++it shows detected Path MTU, amount of hops to the destination and our
++guess about amount of hops from the destination to us, which can be
++different when the path is asymmetric.
++.SH "SEE ALSO"
++.PP
++\fBtraceroute\fR(8),
++\fBtraceroute6\fR(8),
++\fBping\fR(8).
++.SH "AUTHOR"
++.PP
++\fBtracepath\fR was written by
++Alexey Kuznetsov
++<kuznet@ms2.inr.ac.ru>.
++.SH "SECURITY"
++.PP
++No security issues.
++.PP
++This lapidary deserves to be elaborated.
++\fBtracepath\fR is not a privileged program, unlike
++\fBtraceroute\fR, \fBping\fR and other beasts of this kind.
++\fBtracepath\fR may be executed by everyone who has some access
++to network, enough to send UDP datagrams to investigated destination
++using given port.
++.SH "AVAILABILITY"
++.PP
++\fBtracepath\fR is part of \fIiputils\fR package
++and the latest versions are available in source form at
++http://www.skbuff.net/iputils/iputils-current.tar.bz2.
+diff -Naur /dev/null iputils-s20101006/doc/rarpd.8
+--- /dev/null 2011-01-26 09:02:28.396666668 -0500
++++ iputils-s20101006/doc/rarpd.8 2011-01-08 20:09:51.270811811 -0500
+@@ -0,0 +1,84 @@
++.\" This manpage has been automatically generated by docbook2man
++.\" from a DocBook document. This tool can be found at:
++.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
++.\" Please send any bug reports, improvements, comments, patches,
++.\" etc. to Steve Cheng <steve@ggi-project.org>.
++.TH "RARPD" "8" "08 January 2011" "iputils-101006" "System Manager's Manual: iputils"
++.SH NAME
++rarpd \- answer RARP REQUESTs
++.SH SYNOPSIS
++
++\fBarping\fR [\fB-aAvde\fR] [\fB-b \fIbootdir\fB\fR] [\fB\fIinterface\fB\fR]
++
++.SH "DESCRIPTION"
++.PP
++Listens
++RARP
++requests from clients. Provided MAC address of client
++is found in \fI/etc/ethers\fR database and
++obtained host name is resolvable to an IP address appropriate
++for attached network, \fBrarpd\fR answers to client with RARPD
++reply carrying an IP address.
++.PP
++To allow multiple boot servers on the network \fBrarpd\fR
++optionally checks for presence Sun-like bootable image in TFTP directory.
++It should have form \fBHexadecimal_IP.ARCH\fR, f.e. to load
++sparc 193.233.7.98 \fIC1E90762.SUN4M\fR is linked to
++an image appropriate for SUM4M in directory \fI/etc/tftpboot\fR.
++.SH "WARNING"
++.PP
++This facility is deeply obsoleted by
++BOOTP
++and later
++DHCP protocols.
++However, some clients really still need this to boot.
++.SH "OPTIONS"
++.TP
++\fB-a\fR
++Listen on all the interfaces. Currently it is an internal
++option, its function is overridden with \fIinterface\fR
++argument. It should not be used.
++.TP
++\fB-A\fR
++Listen not only RARP but also ARP messages, some rare clients
++use ARP by some unknown reason.
++.TP
++\fB-v\fR
++Be verbose.
++.TP
++\fB-d\fR
++Debug mode. Do not go to background.
++.TP
++\fB-e\fR
++Do not check for presence of a boot image, reply if MAC address
++resolves to a valid IP address using \fI/etc/ethers\fR
++database and DNS.
++.TP
++\fB-b \fIbootdir\fB\fR
++TFTP boot directory. Default is \fI/etc/tftpboot\fR
++.SH "SEE ALSO"
++.PP
++\fBarping\fR(8),
++\fBtftpd\fR(8).
++.SH "AUTHOR"
++.PP
++\fBrarpd\fR was written by
++Alexey Kuznetsov
++<kuznet@ms2.inr.ac.ru>.
++It is now maintained by
++YOSHIFUJI Hideaki
++<yoshfuji@skbuff.net>.
++.SH "SECURITY"
++.PP
++\fBrarpd\fR requires CAP_NET_RAWIO capability
++to listen and send RARP and ARP packets. It also needs CAP_NET_ADMIN
++to give to kernel hint for ARP resolution; this is not strictly required,
++but some (most of, to be more exact) clients are so badly broken that
++are not able to answer ARP before they are finally booted. This is
++not wonderful taking into account that clients using RARPD in 2002
++are all unsupported relic creatures of 90's and even earlier.
++.SH "AVAILABILITY"
++.PP
++\fBrarpd\fR is part of \fIiputils\fR package
++and the latest versions are available in source form at
++http://www.skbuff.net/iputils/iputils-current.tar.bz2.
+diff -Naur /dev/null iputils-s20101006/doc/tftpd.8
+--- /dev/null 2011-01-26 09:02:28.396666668 -0500
++++ iputils-s20101006/doc/tftpd.8 2011-01-08 20:09:51.723407498 -0500
+@@ -0,0 +1,85 @@
++.\" This manpage has been automatically generated by docbook2man
++.\" from a DocBook document. This tool can be found at:
++.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
++.\" Please send any bug reports, improvements, comments, patches,
++.\" etc. to Steve Cheng <steve@ggi-project.org>.
++.TH "TFTPD" "8" "08 January 2011" "iputils-101006" "System Manager's Manual: iputils"
++.SH NAME
++tftpd \- Trivial File Transfer Protocol server
++.SH SYNOPSIS
++
++\fBtftpd\fR \fB\fIdirectory\fB\fR
++
++.SH "DESCRIPTION"
++.PP
++\fBtftpd\fR is a server which supports the DARPA
++Trivial File Transfer Protocol
++(RFC1350).
++The TFTP server is started
++by \fBinetd\fR(8).
++.PP
++\fIdirectory\fR is required argument; if it is not given
++\fBtftpd\fR aborts. This path is prepended to any file name requested
++via TFTP protocol, effectively chrooting \fBtftpd\fR to this directory.
++File names are validated not to escape out of this directory, however
++administrator may configure such escape using symbolic links.
++.PP
++It is in difference of variants of \fBtftpd\fR usually distributed
++with unix-like systems, which take a list of directories and match
++file names to start from one of given prefixes or to some random
++default, when no arguments were given. There are two reasons not to
++behave in this way: first, it is inconvenient, clients are not expected
++to know something about layout of filesystem on server host.
++And second, TFTP protocol is not a tool for browsing of server's filesystem,
++it is just an agent allowing to boot dumb clients.
++.PP
++In the case when \fBtftpd\fR is used together with
++\fBrarpd\fR(8),
++tftp directories in these services should coincide and it is expected
++that each client booted via TFTP has boot image corresponding
++its IP address with an architecture suffix following Sun Microsystems
++conventions. See
++\fBrarpd\fR(8)
++for more details.
++.SH "SECURITY"
++.PP
++TFTP protocol does not provide any authentication.
++Due to this capital flaw \fBtftpd\fR is not able to restrict
++access to files and will allow only publically readable
++files to be accessed. Files may be written only if they already
++exist and are publically writable.
++.PP
++Impact is evident, directory exported via TFTP \fBmust not\fR
++contain sensitive information of any kind, everyone is allowed
++to read it as soon as a client is allowed. Boot images do not contain
++such information as rule, however you should think twice before
++publishing f.e. Cisco IOS config files via TFTP, they contain
++\fBunencrypted\fR passwords and may contain some information
++about the network, which you were not going to make public.
++.PP
++The \fBtftpd\fR server should be executed by \fBinetd\fR
++with dropped root privileges, namely with a user ID giving minimal
++access to files published in tftp directory. If it is executed
++as superuser occasionally, \fBtftpd\fR drops its UID and GID
++to 65534, which is most likely not the thing which you expect.
++However, this is not very essential; remember, only files accessible
++for everyone can be read or written via TFTP.
++.SH "SEE ALSO"
++.PP
++\fBrarpd\fR(8),
++\fBtftp\fR(1),
++\fBinetd\fR(8).
++.SH "HISTORY"
++.PP
++The \fBtftpd\fR command appeared in 4.2BSD. The source in iputils
++is cleaned up both syntactically (ANSIized) and semantically (UDP socket IO).
++.PP
++It is distributed with iputils mostly as good demo of an interesting feature
++(MSG_CONFIRM) allowing to boot long images by dumb clients
++not answering ARP requests until they are finally booted.
++However, this is full functional and can be used in production.
++.SH "AVAILABILITY"
++.PP
++\fBtftpd\fR is part of \fIiputils\fR package
++and the latest versions are available in source form at
++http://www.skbuff.net/iputils/iputils-current.tar.bz2.
+diff -Naur /dev/null iputils-s20101006/doc/traceroute6.8
+--- /dev/null 1969-12-31 19:00:00.000000000 -0500
++++ iputils-s20101006/doc/traceroute6.8 2011-01-08 20:09:52.114781859 -0500
+@@ -0,0 +1,42 @@
++.\" This manpage has been automatically generated by docbook2man
++.\" from a DocBook document. This tool can be found at:
++.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/>
++.\" Please send any bug reports, improvements, comments, patches,
++.\" etc. to Steve Cheng <steve@ggi-project.org>.
++.TH "TRACEROUTE6" "8" "08 January 2011" "iputils-101006" "System Manager's Manual: iputils"
++.SH NAME
++traceroute6 \- traces path to a network host
++.SH SYNOPSIS
++
++\fBtraceroute6\fR [\fB-dnrvV\fR] [\fB-i \fIinterface\fB\fR] [\fB-m \fImax_ttl\fB\fR] [\fB-p \fIport\fB\fR] [\fB-q \fImax_probes\fB\fR] [\fB-s \fIsource\fB\fR] [\fB-w \fIwait time\fB\fR] \fB\fIdestination\fB\fR [\fB\fIsize\fB\fR]
++
++.SH "DESCRIPTION"
++.PP
++Description can be found in
++\fBtraceroute\fR(8),
++all the references to IP replaced to IPv6. It is needless to copy
++the description from there.
++.SH "SEE ALSO"
++.PP
++\fBtraceroute\fR(8),
++\fBtracepath\fR(8),
++\fBping\fR(8).
++.SH "HISTORY"
++.PP
++This program has long history. Author of \fBtraceroute\fR
++is Van Jacobson and it first appeared in 1988. This clone is
++based on a port of \fBtraceroute\fR to IPv6 published
++in NRL IPv6 distribution in 1996. In turn, it was ported
++to Linux by Pedro Roque. After this it was kept in sync by
++Alexey Kuznetsov
++<kuznet@ms2.inr.ac.ru>. And eventually entered
++\fBiputils\fR package.
++.SH "SECURITY"
++.PP
++\fBtracepath6\fR requires CAP_NET_RAWIO capability
++to be executed. It is safe to be used as set-uid root.
++.SH "AVAILABILITY"
++.PP
++\fBtraceroute6\fR is part of \fIiputils\fR package
++and the latest versions are available in source form at
++http://www.skbuff.net/iputils/iputils-current.tar.bz2.
diff --git a/testing/iputils/permission-fix.patch b/testing/iputils/permission-fix.patch
new file mode 100644
index 000000000..c47636f84
--- /dev/null
+++ b/testing/iputils/permission-fix.patch
@@ -0,0 +1,15 @@
+--- traceroute-1.4a12/Makefile.in.old 2000-11-23 21:05:29.000000000 +0100
++++ traceroute-1.4a12/Makefile.in 2008-09-27 20:04:30.000000000 +0200
+@@ -90,10 +90,10 @@
+ sed -e 's/.*/char version[] = "&";/' $(srcdir)/VERSION > $@
+
+ install: force
+- $(INSTALL) -m 4555 -o root -g bin traceroute $(DESTDIR)$(BINDEST)
++ $(INSTALL) -m 4555 -o root -g root traceroute $(DESTDIR)$(BINDEST)
+
+ install-man: force
+- $(INSTALL) -m 444 -o bin -g bin traceroute.8 $(DESTDIR)$(MANDEST)/man8
++ $(INSTALL) -m 644 -o root -g root traceroute.8 $(DESTDIR)$(MANDEST)/man8
+
+ lint: $(GENSRC) force
+ lint -hbxn $(SRC) | \
diff --git a/testing/isdn4k-utils/PKGBUILD b/testing/isdn4k-utils/PKGBUILD
new file mode 100644
index 000000000..59f7943ca
--- /dev/null
+++ b/testing/isdn4k-utils/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 141935 2011-11-03 10:53:42Z tpowa $
+# Contributor: Dennis "Gyroplast" Herbrich <dennis@archlinux.org>
+# Maintainer: dorphell <dorphell@archlinux.org>
+
+pkgname=isdn4k-utils
+pkgver=3.2p1
+pkgrel=7
+pkgdesc="User space administration programs and tools for ISDN"
+arch=('i686' 'x86_64')
+url="http://www.isdn4linux.de/"
+license=('GPL')
+depends=('ncurses')
+backup=(etc/isdn/{callerid.conf,isdn.conf,rate.conf,isdnlog.isdnctrl0.options})
+options=('!makeflags')
+source=(ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/${pkgname}.v${pkgver}.tar.bz2
+ isdn4k-utils-3.2p1-build.patch
+ config)
+md5sums=('d347afa462e46eccfd1284aebae227b6'
+ '7f056ddac093c77d8be4e076d0e9421c'
+ '3429894039f33c114fef5ef9f866920e')
+
+build() {
+ cd $srcdir/$pkgname
+ patch -Np1 -i $srcdir/isdn4k-utils-3.2p1-build.patch
+ cp $srcdir/config ./.config
+ make subconfig
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname
+ install -dm755 $pkgdir/sbin
+ make DESTDIR=$pkgdir install
+}
diff --git a/testing/isdn4k-utils/config b/testing/isdn4k-utils/config
new file mode 100644
index 000000000..fe0810209
--- /dev/null
+++ b/testing/isdn4k-utils/config
@@ -0,0 +1,100 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+
+#
+# Code maturity level options
+#
+# CONFIG_EXPERIMENTAL is not set
+
+#
+# General configuration
+#
+# CONFIG_BUILDX11 is not set
+CONFIG_KERNELDIR='/usr/src/linux'
+CONFIG_BINDIR='/usr/bin'
+CONFIG_SBINDIR='/sbin'
+CONFIG_MANDIR='/usr/share/man'
+CONFIG_RUNDIR='/var/run'
+CONFIG_LOCKDIR='/var/lock'
+CONFIG_LOCKFILE='LCK..'
+CONFIG_I4LCONFDIR='/etc/isdn'
+CONFIG_CONFFILE='isdn.conf'
+CONFIG_CALLERIDFILE='callerid.conf'
+CONFIG_USERCONFFILE='~/.isdn'
+CONFIG_COUNTRYCODE='49'
+CONFIG_AREACODE=''
+CONFIG_COUNTRY_PREFIX='+'
+CONFIG_AREA_PREFIX='0'
+CONFIG_DATADIR='/usr/lib/isdn'
+
+#
+# Runtime configuration tools
+#
+CONFIG_ISDNCTRL=y
+CONFIG_ISDNCTRL_CONF=y
+# CONFIG_ISDNCTRL_TIMRU is not set
+# CONFIG_IPROFD is not set
+# CONFIG_DIVERTCTRL is not set
+
+#
+# Card configuration tools
+#
+CONFIG_HISAXCTRL=y
+CONFIG_ICNCTRL=y
+# CONFIG_ICNCTRL_DEBUG is not set
+CONFIG_PCBITCTL=y
+# CONFIG_AVMCAPICTRL is not set
+# CONFIG_EICONCTRL is not set
+
+#
+# Tools for monitoring activity
+#
+CONFIG_IMON=y
+CONFIG_IMONTTY=y
+CONFIG_ISDNLOG=y
+
+#
+# Options for isdnlog package
+#
+CONFIG_ISDNLOG_SERV_PORT=20011
+CONFIG_ISDNLOG_USERFILE='isdnlog.users'
+CONFIG_ISDNLOG_CHARGEFILE='charge.dat'
+CONFIG_ISDNLOG_LOGFILE='/var/log/isdn.log'
+CONFIG_ISDNLOG_RELOADCMD='reload'
+CONFIG_ISDNLOG_STOPCMD='stop'
+CONFIG_ISDNLOG_REBOOTCMD='/sbin/reboot'
+CONFIG_ISDNLOG_OLDI4LCONFDIR='/etc/isdnlog'
+CONFIG_ISDNLOG_OLDI4LCONFFILE='isdnlog.conf'
+# CONFIG_ISDNLOG_POSTGRES is not set
+# CONFIG_ISDNLOG_MYSQLDB is not set
+# CONFIG_ISDNLOG_ORACLE is not set
+CONFIG_ISDN_LOG_DE=y
+CONFIG_ISDN_LOG_CC_DE=y
+CONFIG_ISDN_LOG_DEST_DE=y
+CONFIG_ISDN_LOG_DEST_AT=y
+CONFIG_ISDN_LOG_DEST_NL=y
+CONFIG_ISDN_LOG_DEST_CH=y
+CONFIG_IPPPSTATS=y
+# CONFIG_XISDNLOAD is not set
+# CONFIG_XMONISDN is not set
+
+#
+# Applications
+#
+# CONFIG_VBOX is not set
+CONFIG_IPPPD=y
+
+#
+# Options for ipppd
+#
+# CONFIG_IPPPD_MSCHAP is not set
+# CONFIG_IPPPD_RADIUS is not set
+# CONFIG_RADIUS_WTMP_LOGGING is not set
+RADIUS_CLIENT_CONFIG_FILE=''
+
+#
+# Documentation
+#
+CONFIG_GENMAN=y
+# CONFIG_FAQ is not set
diff --git a/testing/isdn4k-utils/isdn4k-utils-3.2p1-build.patch b/testing/isdn4k-utils/isdn4k-utils-3.2p1-build.patch
new file mode 100644
index 000000000..63239fcad
--- /dev/null
+++ b/testing/isdn4k-utils/isdn4k-utils-3.2p1-build.patch
@@ -0,0 +1,2028 @@
+diff -Naur isdn4k-utils-orig//eicon/eiconctrl.c isdn4k-utils/eicon/eiconctrl.c
+--- isdn4k-utils-orig//eicon/eiconctrl.c 2001-06-22 02:34:45.000000000 +1000
++++ isdn4k-utils/eicon/eiconctrl.c 2010-12-04 20:44:11.093338893 +1000
+@@ -1970,7 +1970,7 @@
+ val = strtol(p, &q, 16);
+ p = q;
+ val = strtol(p, &q, 16);
+- (unsigned short) *buffer = (unsigned short) val;
++ *buffer = (unsigned short) val;
+ pos = 2;
+ while ((p != q) && (*q != 0)) {
+ p = q;
+diff -Naur isdn4k-utils-orig//hisax/hisaxctrl.c isdn4k-utils/hisax/hisaxctrl.c
+--- isdn4k-utils-orig//hisax/hisaxctrl.c 2000-06-30 19:37:38.000000000 +1000
++++ isdn4k-utils/hisax/hisaxctrl.c 2010-12-04 20:44:11.093338893 +1000
+@@ -43,7 +43,8 @@
+ fprintf(stderr, "cannot open file %s\n", fname);
+ exit(-1);
+ }
+- p = (int *) buffer = (unsigned char *) malloc(MAX_SIZE+4);
++ buffer = (unsigned char *) malloc(MAX_SIZE+4);
++ p = (int *) buffer;
+ if (!buffer) {
+ fprintf(stderr, "cannot get %d byte memory\n", MAX_SIZE+4);
+ exit(-1);
+diff -Naur isdn4k-utils-orig//hisax/Makefile.in isdn4k-utils/hisax/Makefile.in
+--- isdn4k-utils-orig//hisax/Makefile.in 2002-07-20 05:03:51.000000000 +1000
++++ isdn4k-utils/hisax/Makefile.in 2010-12-04 20:44:03.726672225 +1000
+@@ -30,7 +30,7 @@
+ #.SUFFIXES:
+ #.SUFFIXES: .c .o
+
+-%.8: %.man
++%.8: %.man.in
+ cp $< $@
+
+ all: $(PROGRAMS) $(MANPAGES)
+diff -Naur isdn4k-utils-orig//ipppd/main.c isdn4k-utils/ipppd/main.c
+--- isdn4k-utils-orig//ipppd/main.c 2002-07-18 10:06:21.000000000 +1000
++++ isdn4k-utils/ipppd/main.c 2010-12-04 20:44:11.093338893 +1000
+@@ -1041,9 +1041,14 @@
+ static char line[256]; /* line to be logged accumulated here */
+ static char *linep;
+
++#ifdef __STDC__
++static void pr_log(void *arg, char *fmt, ...);
++#else /* __STDC__ */
++static void pr_log(arg, fmt, va_alist);
++#endif
++
+ void log_packet(u_char *p,int len,char *prefix,int linkunit)
+ {
+- static void pr_log __P((void *, char *, ...));
+
+ int i, n;
+ u_short proto;
+diff -Naur isdn4k-utils-orig//ipppd/options.c isdn4k-utils/ipppd/options.c
+--- isdn4k-utils-orig//ipppd/options.c 2002-07-06 10:34:08.000000000 +1000
++++ isdn4k-utils/ipppd/options.c 2010-12-04 20:43:57.890005560 +1000
+@@ -479,26 +479,24 @@
+ #define IMPLEMENTATION ""
+ #endif
+
+-static char *usage_string = "\
+-ipppd version %s patch level %d%s\n\
+-Usage: %s [ options ], where options are:\n\
+-\t<device> Communicate over the named device\n\
++static char *usage_string = "ipppd version %s patch level %d%s\n"
++"Usage: %s [ options ], where options are:\n"
++"\t<device> Communicate over the named device\n"
+ #ifdef INCLUDE_OBSOLETE_FEATURES
+-\tcrtscts Use hardware RTS/CTS flow control\n\
+-\t<speed> Set the baud rate to <speed>\n\
+-\tmodem Use modem control lines\n\
++"\tcrtscts Use hardware RTS/CTS flow control\n"
++"\t<speed> Set the baud rate to <speed>\n"
++"\tmodem Use modem control lines\n"
+ #endif
+-\t<loc>:<rem> Set the local and/or remote interface IP\n\
+-\t\taddresses. (you also may use the option 'useifip' to get IPs).\n\
+-\tasyncmap <n> Set the desired async map to hex <n>\n\
+-\tauth Require authentication from peer\n\
+-\tconnect <p> Invoke shell command <p> to set up the serial line\n\
+-\tdefaultroute Add default route through interface\n\
+-\tfile <f> Take options from file <f>\n\
+-\tmru <n> Set MRU value to <n> for negotiation\n\
+-\tnetmask <n> Set interface netmask to <n>\n\
+-See ipppd(8) for more options.\n\
+-";
++"\t<loc>:<rem> Set the local and/or remote interface IP\n"
++"\t\t\taddresses. (you also may use the option 'useifip' to get IPs).\n"
++"\tasyncmap <n> Set the desired async map to hex <n>\n"
++"\tauth Require authentication from peer\n"
++"\tconnect <p> Invoke shell command <p> to set up the serial line\n"
++"\tdefaultroute Add default route through interface\n"
++"\tfile <f> Take options from file <f>\n"
++"\tmru <n> Set MRU value to <n> for negotiation\n"
++"\tnetmask <n> Set interface netmask to <n>\n"
++"See ipppd(8) for more options.\n";
+
+ static char *current_option; /* the name of the option being parsed */
+
+diff -Naur isdn4k-utils-orig//isdnlog/isdnlog/isdnlog.h isdn4k-utils/isdnlog/isdnlog/isdnlog.h
+--- isdn4k-utils-orig//isdnlog/isdnlog/isdnlog.h 2001-06-22 02:34:56.000000000 +1000
++++ isdn4k-utils/isdnlog/isdnlog/isdnlog.h 2010-12-04 20:44:03.780005559 +1000
+@@ -460,7 +460,7 @@
+
+ _EXTERN void dotrace(void);
+ _EXTERN int morectrl(int card);
+-_EXTERN void moreinfo(void);
++extern void moreinfo(void);
+ _EXTERN void morekbd(void);
+ _EXTERN void processcint(void);
+ _EXTERN void processflow(void);
+diff -Naur isdn4k-utils-orig//isdnlog/isdnlog/processor.c isdn4k-utils/isdnlog/isdnlog/processor.c
+--- isdn4k-utils-orig//isdnlog/isdnlog/processor.c 2002-04-02 04:06:10.000000000 +1000
++++ isdn4k-utils/isdnlog/isdnlog/processor.c 2010-12-04 20:44:03.783338893 +1000
+@@ -5293,7 +5293,7 @@
+ tei = BROADCAST; /* Wenn nach einer tei-Zeile keine hex:-Zeile kommt, tei ungueltig machen! */
+
+ if ((type == SETUP) && !replay) { /* fetch additional info from "/dev/isdninfo" */
+- static void moreinfo(); /* soviel zu Objektorientiertem Denken ;-) */
++ /*static void moreinfo(); */ /* soviel zu Objektorientiertem Denken ;-) */
+ moreinfo();
+ } /* if */
+
+diff -Naur isdn4k-utils-orig//isdnlog/Makefile.in isdn4k-utils/isdnlog/Makefile.in
+--- isdn4k-utils-orig//isdnlog/Makefile.in 2002-07-20 05:03:55.000000000 +1000
++++ isdn4k-utils/isdnlog/Makefile.in 2010-12-04 20:44:03.730005560 +1000
+@@ -1842,9 +1842,6 @@
+ $(INSTALL_DATA) $$f $(DESTDIR)$(DATADIR); \
+ echo Installing $(DESTDIR)$(DATADIR)/$$f; \
+ done
+- @(grep isdnlog $(SERVICEFILE) >/dev/null) || \
+- (echo "";echo "";echo "Add a line to the file $(SERVICEFILE)" ;echo "";echo ""; \
+- echo "isdnlog $(SERV_PORT)/tcp isdnlog" >> $(SERVICEFILE))
+
+ install-strip:
+ $(MAKE) INSTALL_BIN='$(INSTALL_BIN) -s' \
+diff -Naur isdn4k-utils-orig//isdnlog/tools/cdb/cdbmake.c isdn4k-utils/isdnlog/tools/cdb/cdbmake.c
+--- isdn4k-utils-orig//isdnlog/tools/cdb/cdbmake.c 2002-02-22 21:10:25.000000000 +1000
++++ isdn4k-utils/isdnlog/tools/cdb/cdbmake.c 2010-12-04 20:44:03.786672226 +1000
+@@ -3,8 +3,6 @@
+ #include "freecdbmake.h"
+ #include <unistd.h>
+
+-extern char *malloc();
+-
+ void diesys(why) char *why; { perror(why); exit(111); }
+
+ void writeerror() { diesys("cdbmake: fatal: unable to write"); }
+diff -Naur isdn4k-utils-orig//isdnlog/tools/isdnrate.c isdn4k-utils/isdnlog/tools/isdnrate.c
+--- isdn4k-utils-orig//isdnlog/tools/isdnrate.c 2001-06-22 02:34:56.000000000 +1000
++++ isdn4k-utils/isdnlog/tools/isdnrate.c 2010-12-04 20:44:11.096672226 +1000
+@@ -304,7 +304,7 @@
+
+ static void print_header(void);
+
+-static char *myname, *myshortname;
++char *myname, *myshortname;
+ static char options[] = "ab:d:f:h:l:op:st:v::x:CD::G:HLNP:O:S:TUVX::Z";
+ static char usage[] = "%s: usage: %s [ -%s ] Destination ...\n";
+
+@@ -313,7 +313,7 @@
+ static int usestat = 0;
+ static int duration = LCR_DURATION;
+ static time_t start;
+-static int day, month, year, hour, min, sec;
++int day, month, year, hour, min, sec;
+ static char ignore[MAXPROVIDER];
+ static char *fromarea = 0;
+ static char wanted_day;
+diff -Naur isdn4k-utils-orig//isdnlog/tools/isdnrate.c.orig isdn4k-utils/isdnlog/tools/isdnrate.c.orig
+--- isdn4k-utils-orig//isdnlog/tools/isdnrate.c.orig 1970-01-01 10:00:00.000000000 +1000
++++ isdn4k-utils/isdnlog/tools/isdnrate.c.orig 2001-06-22 02:34:56.000000000 +1000
+@@ -0,0 +1,1806 @@
++/* $Id: isdnrate.c,v 1.38 2001/03/01 14:59:16 paul Exp $
++
++ * ISDN accounting for isdn4linux. (rate evaluation)
++ *
++ * Copyright 1995 .. 2000 by Andreas Kool (akool@isdn4linux.de)
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2, or (at your option)
++ * any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ * $Log: isdnrate.c,v $
++ * Revision 1.38 2001/03/01 14:59:16 paul
++ * Various patches to fix errors when using the newest glibc,
++ * replaced use of insecure tempnam() function
++ * and to remove warnings etc.
++ *
++ * Revision 1.37 2000/07/17 16:34:23 akool
++ * isdnlog-4.32
++ * - added new Prefixes 0160 (D1) and 0162 (D2) to "country-de.dat"
++ * - corrected all german mobil phone numbers (many thank's to
++ * Tobias Becker <i4l-projects@talypso.de> for the tool "fix_rates.pl")
++ * - isdnlog/tools/rate.c ... New R:-tag
++ * - isdnlog/tools/isdnrate.c ... print warnings from getRate if verbose
++ * - isdnlog/tools/rate-files.man ... New R:-tag
++ * - isdnlog/tools/NEWS ... New R:-tag
++ * - isdnlog/README ... New R:-tag
++ * - isdnlog/samples/rtest.dat ... example rate-file for testing R:
++ *
++ * Revision 1.36 2000/03/09 18:50:03 akool
++ * isdnlog-4.16
++ * - isdnlog/samples/isdn.conf.no ... changed VBN
++ * - isdnlog/isdnlog/isdnlog.c .. ciInterval
++ * - isdnlog/isdnlog/processor.c .. ciInterval
++ * - isdnlog/tools/tools.h .. ciInterval, abclcr conf option
++ * - isdnlog/tools/isdnconf.c .. ciInterval, abclcr conf option
++ * - isdnlog/tools/isdnrate.c .. removed a warning
++ * - isdnlog/NEWS ... updated
++ * - isdnlog/README ... updated
++ * - isdnlog/isdnlog/isdnlog.8.in ... updated
++ * - isdnlog/isdnlog/isdnlog.5.in ... updated
++ * - isdnlog/samples/provider ... NEW
++ *
++ * ==> Please run a make clean, and be sure to read isdnlog/NEWS for changes
++ * ==> and new features.
++ *
++ * Revision 1.35 2000/03/06 07:03:21 akool
++ * isdnlog-4.15
++ * - isdnlog/tools/tools.h ... moved one_call, sum_calls to isdnrep.h
++ * ==> DO A 'make clean' PLEASE
++ * - isdnlog/tools/telnum.c ... fixed a small typo
++ * - isdnlog/isdnrep/rep_main.c ... incl. dest.h
++ * - isdnlog/isdnrep/isdnrep.c ... fixed %l, %L
++ * - isdnlog/isdnrep/isdnrep.h ... struct one_call, sum_calls are now here
++ *
++ * Support for Norway added. Many thanks to Tore Ferner <torfer@pvv.org>
++ * - isdnlog/rate-no.dat ... NEW
++ * - isdnlog/holiday-no.dat ... NEW
++ * - isdnlog/samples/isdn.conf.no ... NEW
++ * - isdnlog/samples/rate.conf.no ... NEW
++ *
++ * Revision 1.34 2000/02/28 19:53:56 akool
++ * isdnlog-4.14
++ * - Patch from Roland Rosenfeld <roland@spinnaker.de> fix for isdnrep
++ * - isdnlog/tools/rate.c ... epnum
++ * - isdnlog/tools/rate-at.c ... new rates
++ * - isdnlog/rate-at.dat
++ * - isdnlog/tools/rate-files.man ... %.3f
++ * - doc/Configure.help ... unknown cc
++ * - isdnlog/configure.in ... unknown cc
++ * - isdnlog/.Config.in ... unknown cc
++ * - isdnlog/Makefile.in ... unknown cc
++ * - isdnlog/tools/dest/Makefile.in ... LANG => DEST_LANG
++ * - isdnlog/samples/rate.conf.pl ... NEW
++ * - isdnlog/samples/isdn.conf.pl ... NEW
++ * - isdnlog/rate-pl.dat ... NEW
++ * - isdnlog/tools/isdnrate.c ... fixed -P pid_dir, restarts on HUP now
++ * - isdnlog/tools/isdnrate.man ... SIGHUP documented
++ *
++ * Revision 1.33 2000/02/12 16:40:24 akool
++ * isdnlog-4.11
++ * - isdnlog/Makefile.in ... sep install-targets, installs samples, no isdnconf
++ * - isdnlog/samples/rate.conf.{lu,nl} ... NEW
++ * - isdnlog/samples/isdn.conf.lu ... chg provider
++ * - isdnlog/samples/stop ... chg \d,\d => \d.\d
++ * - isdnlog/samples/isdnlog.isdnctrl0.options ... NEW
++ * - isdnlog/samples/isdnlog.users ... NEW
++ * - isdnlog/country-de.dat ... _DEMF again
++ * - isdnlog/isdnlog/processor.c ... LCR
++ * - isdnlog/tools/isdnrate.c ... fmt of s
++ *
++ * Old config is not installed anymore, to acomplish this do
++ *
++ * make install-old-conf
++ * make install
++ *
++ * A running isdnlog is now HUP-ed not KILL-ed
++ *
++ * Revision 1.32 2000/02/03 18:24:51 akool
++ * isdnlog-4.08
++ * isdnlog/tools/rate.c ... LCR patch again
++ * isdnlog/tools/isdnrate.c ... LCR patch again
++ * isdnbill enhanced/fixed
++ * DTAG AktivPlus fixed
++ *
++ * Revision 1.31 1999/12/31 13:57:20 akool
++ * isdnlog-4.00 (Millenium-Edition)
++ * - Oracle support added by Jan Bolt (Jan.Bolt@t-online.de)
++ * - resolved *any* warnings against rate-de.dat
++ * - Many new rates
++ * - CREDITS file added
++ *
++ * Revision 1.30 1999/12/24 14:17:05 akool
++ * isdnlog-3.81
++ * - isdnlog/tools/NEWS
++ * - isdnlog/tools/telrate/info.html.in ... bugfix
++ * - isdnlog/tools/telrate/telrate.cgi.in ... new Service query
++ * - isdnlog/tools/telrate/Makefile.in ... moved tmp below telrate
++ * - isdnlog/samples/rate.conf.at ... fixed
++ * - isdnlog/tools/rate-at.c ... some changes
++ * - isdnlog/rate-at.dat ... ditto
++ * - isdnlog/tools/Makefile ... added path to pp_rate
++ * - isdnlog/tools/rate.{c,h} ... getServiceNames, Date-Range in T:-Tag
++ * - isdnlog/tools/isdnrate.c ... fixed sorting of services, -X52 rets service names
++ * - isdnlog/tools/rate-files.man ... Date-Range in T:-Tag, moved from doc
++ * - isdnlog/tools/isdnrate.man ... moved from doc
++ * - doc/Makefile.in ... moved man's from doc to tools
++ * - isdnlog/Makefile.in ... man's, install isdn.conf.5
++ * - isdnlog/configure{,.in} ... sed, awk for man's
++ * - isdnlog/tools/zone/Makefile.in ... dataclean
++ * - isdnlog/tools/dest/Makefile.in ... dataclean
++ * - isdnlog/isdnlog/isdnlog.8.in ... upd
++ * - isdnlog/isdnlog/isdn.conf.5.in ... upd
++ *
++ * Revision 1.29 1999/12/17 22:51:55 akool
++ * isdnlog-3.79
++ * - isdnlog/isdnrep/isdnrep.{c,h} ... error -handling, print_msg
++ * - isdnlog/isdnrep/rep_main.c
++ * - isdnlog/isdnrep/isdnrep.1.in
++ * - isdnlog/tools/rate.c ... dupl entry in rate.conf
++ * - isdnlog/tools/NEWS
++ * - isdnlog/tools/isdnrate.c
++ * - isdnlog/tools/dest/configure{,.in}
++ * - isdnlog/tools/zone/configure{,.in}
++ *
++ * Revision 1.28 1999/12/16 23:08:28 akool
++ * isdnlog-3.78
++ * - isdnlog/tools/isdnrate.c ... new sOcket option
++ * - isdnlog/tools/NEWS ... new sOcket option
++ * - doc/isdnrate.man ... ditto
++ * - isdnlog/tools/telrate/config.in ... ditto
++ * - isdnlog/tools/telrate/telrate.cgi.in ... ditto
++ * - isdnlog/tools/telrate/README-telrate ditto
++ *
++ * Revision 1.27 1999/12/02 19:28:02 akool
++ * isdnlog-3.73
++ * - isdnlog/tools/telrate/telrate.cgi.in faster
++ * - doc/isdnrate.man ... -P
++ * - isdnlog/tools/isdnrate.c ... -P
++ * - isdnlog/tools/NEWS ... -P
++ * - isdnlog/tools/rate-at.c ... 194040
++ * - isdnlog/rate-at.dat
++ * - isdnlog/tools/rate.c ... SIGSEGV
++ *
++ * Revision 1.26 1999/12/01 21:47:25 akool
++ * isdnlog-3.72
++ * - new rates for 01051
++ * - next version of isdnbill
++ *
++ * - isdnlog/tools/telnum.c ... cleanup
++ * - isdnlog/tools/isdnrate.c ... -s Service
++ * - isdnlog/tools/rate.{c,h} ... -s
++ * - isdnlog/tools/NEWS ... -s
++ * - doc/isdnrate.man .. updated -o, -s
++ * - doc/rate-files.man ... updated
++ * - isdnlog/tools/dest/README.makedest ... updt.
++ * - isdnlog/isdnlog/isdnlog.8.in .. updt.
++ *
++ * Telrate
++ * - isdnlog/tools/telrate/README-telrate
++ * - isdnlog/tools/telrate/config.in NEW
++ * - isdnlog/tools/telrate/configure NEW
++ * - isdnlog/tools/telrate/Makefile.in NEW
++ * - isdnlog/tools/telrate/index.html.in was index.html
++ * - isdnlog/tools/telrate/info.html.in was info.html
++ * - isdnlog/tools/telrate/telrate.cgi.in was telrate.cgi
++ * - isdnlog/tools/telrate/leo.sample NEW sample config
++ * - isdnlog/tools/telrate/alex.sample NEW sample config
++ *
++ * Revision 1.25 1999/11/08 21:09:41 akool
++ * isdnlog-3.65
++ * - added "B:" Tag to "rate-xx.dat"
++ *
++ * Revision 1.24 1999/11/07 13:29:28 akool
++ * isdnlog-3.64
++ * - new "Sonderrufnummern" handling
++ *
++ * Revision 1.22 1999/10/26 18:17:14 akool
++ * isdnlog-3.62
++ * - many new rates
++ * - next try to fix "Sonderrufnummern"
++ *
++ * isdnlog-3.58
++ * - big cleanup ( > 1.3 Mb removed!)
++ * - v0.02 of destination support - better, but not perfect
++ * (does't work with gcc-2.7.2.3 yet - use egcs!)
++ *
++ * Revision 1.21 1999/10/25 18:30:03 akool
++ * isdnlog-3.57
++ * WARNING: Experimental version!
++ * Please use isdnlog-3.56 for production systems!
++ *
++ * Revision 1.20 1999/09/19 14:16:27 akool
++ * isdnlog-3.53
++ *
++ * Revision 1.19 1999/09/16 20:27:21 akool
++ * isdnlog-3.52
++ *
++ * Revision 1.18 1999/09/13 09:09:44 akool
++ * isdnlog-3.51
++ * - changed getProvider() to not return NULL on unknown providers
++ * many thanks to Matthias Eder <mateder@netway.at>
++ * - corrected zone-processing when doing a internal -> world call
++ *
++ * Revision 1.17 1999/09/09 11:21:05 akool
++ * isdnlog-3.49
++ *
++ * Revision 1.16 1999/08/04 23:06:52 akool
++ * Better codeall for .at
++ *
++ * Revision 1.15 1999/07/31 09:25:36 akool
++ * getRate() speedup
++ *
++ * Revision 1.14 1999/07/26 16:28:41 akool
++ * getRate() speedup from Leo
++ *
++ * Revision 1.13 1999/07/25 15:57:46 akool
++ * isdnlog-3.43
++ * added "telnum" module
++ *
++ * Revision 1.12 1999/07/24 08:45:17 akool
++ * isdnlog-3.42
++ * rate-de.dat 1.02-Germany [18-Jul-1999 10:44:21]
++ * better Support for Ackermann Euracom
++ * WEB-Interface for isdnrate
++ * many small fixes
++ *
++ * Revision 1.11 1999/07/15 16:42:04 akool
++ * small enhancement's and fixes
++ *
++ * Revision 1.10 1999/07/07 19:44:07 akool
++ * patches from Michael and Leo
++ *
++ * Revision 1.9 1999/07/04 20:47:05 akool
++ * rate-de.dat V:1.02-Germany [04-Jul-1999 22:56:37]
++ *
++ * Revision 1.8 1999/07/03 10:24:14 akool
++ * fixed Makefile
++ *
++ * Revision 1.7 1999/07/02 19:18:00 akool
++ * rate-de.dat V:1.02-Germany [02-Jul-1999 21:27:20]
++ *
++ * Revision 1.6 1999/07/02 18:20:50 akool
++ * rate-de.dat V:1.02-Germany [02-Jul-1999 20:29:21]
++ * country-de.dat V:1.02-Germany [02-Jul-1999 19:13:54]
++ *
++ * Revision 1.5 1999/07/01 20:40:07 akool
++ * isdnrate optimized
++ *
++ * Revision 1.4 1999/06/30 20:53:28 akool
++ * added "-t" option to "isdnrate"
++ *
++ * Revision 1.3 1999/06/30 17:17:37 akool
++ * isdnlog Version 3.39
++ *
++ * Revision 1.2 1999/06/29 20:11:25 akool
++ * now compiles with ndbm
++ * (many thanks to Nima <nima_ghasseminejad@public.uni-hamburg.de>)
++ *
++ * Revision 1.1 1999/06/28 19:16:33 akool
++ * isdnlog Version 3.38
++ * - new utility "isdnrate" started
++ *
++ */
++
++#include "isdnlog.h"
++#include "tools/zone.h"
++#include <unistd.h>
++#include "dest.h"
++
++#define WIDTH 19
++#define _MAXLAST 20 /* the real max */
++#define MAXLAST ((best>=_MAXLAST||best<=2)?5:best)
++
++
++static void print_header(void);
++
++static char *myname, *myshortname;
++static char options[] = "ab:d:f:h:l:op:st:v::x:CD::G:HLNP:O:S:TUVX::Z";
++static char usage[] = "%s: usage: %s [ -%s ] Destination ...\n";
++
++static int header = 0, best = MAXPROVIDER, table = 0, explain = 0;
++int verbose = 0;
++static int usestat = 0;
++static int duration = LCR_DURATION;
++static time_t start;
++static int day, month, year, hour, min, sec;
++static char ignore[MAXPROVIDER];
++static char *fromarea = 0;
++static char wanted_day;
++static int list = 0;
++static char *comment;
++static char **providers = 0; /* incl these */
++static int n_providers = 0;
++static int business = 0;
++static char **xproviders = 0; /* excl these */
++static int nx_providers = 0;
++static int xbusiness = 0;
++static int all = 0;
++static int booked = 0;
++static int service = 0;
++
++#define SOCKNAME "/tmp/isdnrate"
++static int is_daemon = 0;
++static int is_client = 0;
++static int we_are_daemon = 0;
++static int takt = 99999;
++static char sortby;
++static int need_dest;
++static int h_param = 0;
++static int lcr = 0;
++static TELNUM srcnum, destnum;
++static char *pid_dir = 0;
++static char *pid_file = 0;
++static char *socket_file = 0;
++static char **hup_argv; /* args to restart with */
++
++typedef struct {
++ int prefix;
++ double rate;
++ char *name;
++ char *explain;
++} SORT;
++
++typedef struct {
++ int weight;
++ int index;
++} SORT2;
++
++static SORT sort[MAXPROVIDER];
++
++#undef MAXPROVIDER
++#define MAXPROVIDER getNProvider()
++
++#undef BUFSIZ /* sorry but 8192 is too much for me */
++#define BUFSIZ 256
++
++int print_msg(int Level, const char *fmt,...)
++{
++ auto va_list ap;
++ auto char String[BUFSIZ * 3];
++
++ if ((Level > PRT_ERR && !verbose) || (Level > PRT_WARN && verbose < 2))
++ return (1);
++
++ va_start(ap, fmt);
++ (void) vsnprintf(String, BUFSIZ * 3, fmt, ap);
++ va_end(ap);
++
++ fprintf(stderr, "%s", String);
++
++ return (0);
++} /* print_msg */
++
++
++static void init()
++{
++ auto char *version, **message;
++
++ if (readconfig(myshortname) < 0)
++ exit(1);
++
++ if (verbose)
++ message = &version;
++ else
++ message = NULL;
++
++ initHoliday(holifile, message);
++
++ if (verbose && *version)
++ print_msg(PRT_V, "%s\n", version);
++ initDest(destfile, message);
++ if (verbose && *version)
++ print_msg(PRT_V, "%s\n", version);
++
++ initRate(rateconf, ratefile, zonefile, message);
++
++ if (verbose && *version)
++ print_msg(PRT_V, "%s\n", version);
++
++} /* init */
++
++#if 0
++static void deinit(void)
++{
++ exitRate();
++ exitDest();
++ exitHoliday();
++}
++#endif
++
++/* calc a day/time W | E | H */
++static void get_day(char d)
++{
++ struct tm *tm;
++ bitfield mask;
++ int what = 0;
++
++ tm = localtime(&start); /* now */
++ switch (d) {
++ case 'W': /* we need a normal weekday, so we take
++ today and inc. day if today is
++ holiday */
++ what = WORKDAY;
++ if (!h_param)
++ hour = 10;
++ break;
++ case 'N':
++ what = WORKDAY;
++ if (!h_param)
++ hour = 23;
++ break;
++ case 'E':
++ what = SUNDAY;
++ if (!h_param)
++ hour = 10;
++ break;
++ }
++ mask = 1 << what;
++ while (isDay(tm, mask, 0) != what) {
++ tm->tm_mday++;
++ }
++ min = sec = 0;
++ day = tm->tm_mday;
++ month = tm->tm_mon + 1;
++ year = tm->tm_year + 1900;
++}
++
++static void post_init()
++{
++
++ clearNum(&srcnum);
++ if (fromarea) {
++ Strncpy(srcnum.area, fromarea, TN_MAX_AREA_LEN);
++ free(fromarea);
++ fromarea = 0;
++ }
++ initNum(&srcnum);
++
++ if (wanted_day)
++ get_day(wanted_day);
++} /* post_init */
++
++static int opts(int argc, char *argv[])
++{
++ register int c;
++ register char *p;
++ int x;
++
++ h_param = 0;
++
++ optind = 0; /* make it repeatable */
++ need_dest = 1;
++ while ((c = getopt(argc, argv, options)) != EOF) {
++ switch (c) {
++ case 'a': /* all rates old/newer */
++ all++;
++ break;
++ case 'b':
++ best = strtol(optarg, NIL, 0);
++ break;
++
++/* case 'c': country */
++ break;
++
++ case 'd':
++ for (p = optarg; *p && isspace(*p); p++) ;
++ if (isdigit(*p)) {
++ wanted_day = '\0';
++ day = atoi(optarg);
++ if ((p = strchr(optarg, '.'))) {
++ month = atoi(p + 1);
++ if ((p = strchr(p + 1, '.'))) {
++ year = atoi(p + 1);
++ if (year < 50)
++ year += 2000;
++ else if (year < 100)
++ year += 1900;
++ }
++ }
++ } /* isdigit */
++ else {
++ wanted_day = *p;
++ }
++ break;
++
++ case 'f':
++ if (optarg) { /* from */
++ for (p = optarg; (isspace(*p) || *p == '0') && *p; p++) ;
++ fromarea = strdup(p);
++ }
++ break;
++
++ case 'h':
++ hour = atoi(optarg);
++ h_param++;
++ sec = 0;
++ if ((p = strchr(optarg + 1, ':'))) {
++ min = atoi(p + 1);
++ if ((p = strchr(p + 1, ':')))
++ sec = atoi(p + 1);
++ }
++ else
++ min = 0;
++ break;
++
++ case 'l':
++ duration = strtol(optarg, NIL, 0); /* l wie lt */
++ break;
++
++ case 'o': /* booked only */
++ booked++;
++ break;
++
++ case 's': /* service */
++ service++;
++ break;
++
++ case 't':
++ x = strtol(optarg, NIL, 0);
++ if (x > 0)
++ takt = x;
++ break;
++
++ case 'x': /* eXclude Poviders */
++ {
++ char *arg = strdup(optarg);
++
++ p = strtok(arg, ",");
++ while (p) {
++ if (*p == 'B') { /* Business Provider */
++ xbusiness = 1;
++ p = strtok(0, ",");
++ continue;
++ }
++ xproviders = realloc(xproviders, (nx_providers + 1) * sizeof(char *));
++
++ xproviders[nx_providers] = strdup(p);
++ p = strtok(0, ",");
++ nx_providers++;
++ }
++ free(arg);
++ }
++ break;
++
++ case 'p': /* Providers ... */
++ {
++ char *arg = strdup(optarg);
++
++ p = strtok(arg, ",");
++ while (p) {
++ if (*p == 'B') { /* Business Provider */
++ business = 1;
++ p = strtok(0, ",");
++ continue;
++ }
++ providers = realloc(providers, (n_providers + 1) * sizeof(char *));
++
++ providers[n_providers] = strdup(p);
++ p = strtok(0, ",");
++ n_providers++;
++ }
++ free(arg);
++ }
++ break;
++
++ case 'v':
++ verbose++;
++ if (optarg && (x = atoi(optarg)))
++ verbose = x;
++ break;
++/* Uppercase options are for output format */
++
++ case 'C':
++ is_client = 1;
++ break;
++
++ case 'D':
++ is_daemon = 1;
++ need_dest = 0;
++ if (optarg) {
++ x = atoi(optarg);
++ is_daemon = x;
++ if (we_are_daemon && x == 3) {
++ kill(getppid(), SIGTERM);
++ exit(EXIT_SUCCESS);
++ }
++ }
++ break;
++
++ case 'G':
++ explain = atoi(optarg);
++ break;
++ case 'H':
++ header++;
++ break;
++ case 'L':
++ list++;
++ explain = 9;
++ break;
++ case 'N':
++ explain = 55;
++ break;
++ case 'P':
++ pid_dir = strdup(optarg);
++ break;
++ case 'O':
++ free(socket_file);
++ socket_file = strdup(optarg);
++ break;
++ case 'S':
++ sortby = *optarg;
++ break;
++ case 'T':
++ table++;
++ break;
++/* Fixme: check/warn illegal kombinations of options */
++ case 'U':
++ usestat++;
++ break;
++
++ case 'V':
++ print_version(myshortname);
++ exit(0);
++
++ case 'X':
++ if (explain == 0) {
++ explain++;
++ if (optarg && isdigit(*optarg) && (x = atoi(optarg))) {
++ explain = x;
++ if (x == 50 || x == 51 || x == 52)
++ need_dest = 0;
++ }
++ else if (optarg) {
++ comment = strdup(optarg);
++ explain = 8;
++ need_dest = 0;
++ }
++ break;
++ }
++ /* fallthrough */
++ case '?':
++ print_msg(PRT_A, usage, myshortname, myshortname, options);
++ break;
++
++ case 'Z':
++ lcr++;
++ break;
++ } /* switch */
++ } /* while */
++ if (is_client && is_daemon != 3 && is_daemon) {
++ is_daemon = 0;
++ print_msg(PRT_V, "Conflicting options, -D disabled\n");
++ }
++ if (list && table) {
++ table = 0;
++ print_msg(PRT_V, "Conflicting options, -T disabled\n");
++ }
++ if (usestat && !table)
++ print_msg(PRT_V, "Conflicting options, -U ignored\n");
++ if ((list || table) && explain >= 10) {
++ list = table = 0;
++ print_msg(PRT_V, "Conflicting options, -T, -L disabled\n");
++ }
++ if (best < 1) {
++ best = MAXPROVIDER;
++ print_msg(PRT_V, "Illegal options, -b ignored\n");
++ }
++ if ((explain == 50 || explain == 51 || explain == 52) && header) {
++ print_msg(PRT_V, "Conflicting options, -H ignored\n");
++ }
++ if (explain >= 10 && service) {
++ print_msg(PRT_V, "Conflicting options, -s ignored\n");
++ service = 0;
++ }
++ if (argc > optind)
++ return (optind);
++ else
++ return (0);
++} /* opts */
++
++
++static int (*compare_func) (const void *s1, const void *s2);
++static int compare(const void *s1, const void *s2)
++{
++ return (((SORT *) s1)->rate > ((SORT *) s2)->rate);
++} /* compare */
++static int compare_vbn(const void *s1, const void *s2)
++{
++ return (((SORT *) s1)->prefix > ((SORT *) s2)->prefix);
++}
++static int compare_name(const void *s1, const void *s2)
++{
++ return strcasecmp(((SORT *) s1)->name, ((SORT *) s2)->name);
++}
++
++static int compare2(const void *s1, const void *s2)
++{
++ return (((SORT2 *) s1)->weight < ((SORT2 *) s2)->weight);
++} /* compare2 */
++
++char *short_explainRate(RATE * Rate)
++{
++
++ static char buffer[BUFSIZ];
++ char *p = buffer;
++
++ if (service && Rate->dst[1] && *Rate->dst[1])
++ p += sprintf(p, "%s, ", Rate->dst[1]);
++
++ if (Rate->Zone && *Rate->Zone)
++ p += sprintf(p, "%s", Rate->Zone);
++ else
++ p += sprintf(p, "Zone %d", Rate->zone);
++
++ if (!Rate->domestic && Rate->Country && *Rate->Country)
++ p += sprintf(p, " (%s)", Rate->Country);
++
++ if (Rate->Day && *Rate->Day)
++ p += sprintf(p, ", %s", Rate->Day);
++
++ if (Rate->Hour && *Rate->Hour)
++ p += sprintf(p, ", %s", Rate->Hour);
++
++ return buffer;
++}
++
++static char *printrate(RATE * Rate)
++{
++ static char message[BUFSIZ];
++
++ if (Rate->Basic > 0)
++ sprintf(message, "%s + %s/%.1fs = %s + %s/Min (%s)",
++ printRate(Rate->Basic),
++ printRate(Rate->Price),
++ Rate->Duration,
++ printRate(Rate->Basic),
++ printRate(60 * Rate->Price / Rate->Duration),
++ short_explainRate(Rate));
++ else
++ sprintf(message, "%s/%.1fs = %s/Min (%s)",
++ printRate(Rate->Price),
++ Rate->Duration,
++ printRate(60 * Rate->Price / Rate->Duration),
++ short_explainRate(Rate));
++
++ return (message);
++} /* printrate */
++
++
++static void buildtime()
++{
++ auto struct tm tm;
++
++ tm.tm_sec = sec;
++ tm.tm_min = min;
++ tm.tm_hour = hour;
++ tm.tm_mday = day;
++ tm.tm_mon = month - 1;
++ tm.tm_year = year - 1900; /* ja, ja, ich weiá ;-) */
++ tm.tm_isdst = -1;
++
++ start = mktime(&tm);
++} /* buildtime */
++
++
++static void splittime()
++{
++ auto struct tm *tm;
++
++ tm = localtime(&start);
++ sec = tm->tm_sec;
++ min = tm->tm_min;
++ hour = tm->tm_hour;
++ day = tm->tm_mday;
++ month = tm->tm_mon + 1;
++ year = tm->tm_year + 1900;
++} /* splittime */
++
++static char *Provider(int prefix)
++{
++ register char *p, *p1;
++ register int l;
++ static char s[BUFSIZ];
++ char prov[TN_MAX_PROVIDER_LEN];
++
++ if (prefix == UNKNOWN)
++ return ("?");
++
++ p = getProvider(prefix);
++
++ l = max(WIDTH, strlen(p)) - strlen(p);
++
++ p1 = prefix2provider_variant(prefix, prov);
++
++ l += (8 - strlen(p1));
++
++ sprintf(s, "%s:%s%*s", p1, p, l, "");
++
++ return (s);
++} /* Provider */
++
++static char *takt_str(RATE * Rate)
++{
++ static char s[BUFSIZ];
++
++ if (floor(Rate->Rhythm[0]) == Rate->Rhythm[0])
++ sprintf(s, "%.0f/", Rate->Rhythm[0]);
++ else
++ sprintf(s, "%.3f/", Rate->Rhythm[0]);
++ if (floor(Rate->Rhythm[1]) == Rate->Rhythm[1])
++ sprintf(s + strlen(s), "%.0f", Rate->Rhythm[1]);
++ else
++ sprintf(s + strlen(s), "%.3f", Rate->Rhythm[1]);
++ return s;
++}
++
++static inline char *P_EMPTY(char *s)
++{
++ char *p = s;
++
++ return p ? p : "";
++}
++
++#define DEL ';'
++static int compute(char *num)
++{
++ register int i, n = 0;
++ register int low = 0, high = MAXPROVIDER - 1;
++ auto RATE Rate;
++ auto char s[BUFSIZ];
++ struct tm *tm;
++ char prov[TN_MAX_PROVIDER_LEN];
++ int first = 1;
++ static char BUSINESS[] = "Business"; /* in C:GT:Tag */
++
++ if (destnum.nprovider != UNKNOWN) {
++ low = high = destnum.nprovider;
++ } /* if */
++ compare_func = compare;
++ switch (sortby) {
++ case 'v':
++ compare_func = compare_vbn;
++ break;
++ case 'n':
++ compare_func = compare_name;
++ break;
++ }
++
++ buildtime();
++ if (explain == 98 || explain == 97) { /* Minutenpreis fuer
++ diese Woche */
++ tm = localtime(&start);
++ tm->tm_hour = 0;
++ tm->tm_min = 1;
++ tm->tm_sec = 0;
++ start = mktime(tm);
++ if (explain == 98) {
++ while (tm->tm_wday) { /* find last monday */
++ start -= (60 * 60 * 24);
++ tm = localtime(&start);
++ } /* while */
++ start += (60 * 60 * 24);
++ }
++ }
++ if (service) {
++ num = getServiceNum(num);
++ if (!num || !*num) {
++ return 0;
++ }
++ }
++ do {
++ for (i = low; i <= high; i++) {
++ int found, p;
++ char *t;
++
++ if (ignore[i]) /* Fixme: */
++ continue;
++ if (booked && !isProviderBooked(i))
++ continue;
++ if (!all && !isProviderValid(i, start))
++ continue;
++ t = getProvider(i);
++ if (!t || t[strlen(t) - 1] == '?') /* UNKNOWN Provider */
++ continue;
++
++ t = getComment(i, "GT"); /* get Geb. Text comment */
++ if (business) { /* only business wanted */
++ if (t == 0)
++ continue;
++ else if (strstr(t, BUSINESS) == 0)
++ continue;
++ }
++ if (xbusiness) { /* no business wanted */
++ if (t && strstr(t, BUSINESS) > 0)
++ continue;
++ }
++ found = 0;
++ if (n_providers) {
++ for (p = 0; p < n_providers; p++)
++ if (pnum2prefix_variant(providers[p], start) == i) {
++ found = 1;
++ break;
++ }
++ if (!found)
++ continue;
++ }
++ if (nx_providers) {
++ for (p = 0; p < nx_providers; p++)
++ if (pnum2prefix_variant(xproviders[p], start) == i) {
++ found = 1;
++ break;
++ }
++ if (found)
++ continue;
++ }
++ clearRate(&Rate);
++ Rate.src[0] = srcnum.country;
++ Rate.src[1] = srcnum.area;
++ Rate.src[2] = "";
++
++ destnum.nprovider = i;
++ Strncpy(destnum.provider, getProvider(i), TN_MAX_PROVIDER_LEN);
++ if (normalizeNumber(num, &destnum, TN_ALL) == UNKNOWN) {
++ continue;
++ }
++
++ Rate.dst[0] = destnum.country;
++ Rate.dst[1] = destnum.area;
++ Rate.dst[2] = destnum.msn;
++ /* Rate.Service = "Internet by call"; */
++
++ Rate.prefix = i;
++
++ Rate.start = start;
++ Rate.now = start + duration - 1;
++ if (explain == 99) {
++ int j;
++ double oldCharge = -1.0;
++
++ if (first && header)
++ print_header();
++ first = 0;
++ printf("@ %s\n", prefix2provider_variant(Rate.prefix, prov));
++ Rate.now = start + 1;
++ for (j = 1; j < duration; j++) {
++ if (!getRate(&Rate, NULL) && (Rate.Price != 99.99)) {
++ if (Rate.Charge != oldCharge || j == duration - 1) {
++ printf("%d %.4f\n", j, Rate.Charge);
++ oldCharge = Rate.Charge;
++ }
++ }
++ else
++ break;
++ Rate.now++;
++ }
++ if (Rate.Duration <= takt)
++ printf("@----- %s %s\n", currency, Rate.Provider);
++ }
++ if (explain == 98 || explain == 97) { /* Minutenpreis fuer
++ diese Woche/Tag */
++ int j;
++
++ if (first && header)
++ print_header();
++ first = 0;
++ printf("@ %s\n", prefix2provider_variant(Rate.prefix, prov));
++ for (j = 0; j < (explain == 98 ? 7 * 24 : 24); j++) {
++ if (!getRate(&Rate, NULL) && (Rate.Price != 99.99)) {
++ printf("%d %.4f\n", j, Rate.Charge);
++ }
++ else
++ break;
++ Rate.now += 3600;
++ Rate.start += 3600;
++ }
++ if (Rate.Duration <= takt)
++ printf("@----- %s %s\n", currency, Rate.Provider);
++ }
++ else if (explain == 50 || explain == 51) {
++ int fi = 1;
++
++ while (getZoneRate(&Rate, explain - 50, fi) == 0) {
++ double cpm = Rate.Duration > 0 ? 60 * Rate.Price / Rate.Duration : 99.99;
++
++ if (Rate.Price == 0)
++ cpm = Rate.Basic;
++
++ fi = 0;
++ if (Rate.Price != 99.99)
++ printf("%s%c%s%c%s%c%.2f%c%.2f%c%s\n", prefix2provider(Rate.prefix, prov), DEL,
++ Rate.Provider, DEL, currency, DEL, Rate.Charge, DEL, cpm, DEL,
++ P_EMPTY(Rate.Country));
++ free(Rate.Country);
++ }
++ }
++ else {
++ /* kludge to suppress "impossible" Rates */
++ char **message, *msg;
++ if(verbose)
++ message = &msg;
++ else
++ message = NULL;
++ if (!getRate(&Rate, message) && (Rate.Price != 99.99)) {
++ if (!(Rate.Duration <= takt))
++ continue;
++ sort[n].prefix = Rate.prefix;
++ sort[n].rate = Rate.Charge;
++ sort[n].name = Rate.Provider;
++ switch (explain) {
++ case 1:
++ if (service)
++ sprintf(s, " (%s, %s)", P_EMPTY(Rate.dst[1]), Rate.Zone);
++ else
++ sprintf(s, " (%s)", Rate.Zone);
++ sort[n].explain = strdup(s);
++ break;
++ case 2:
++ sprintf(s, " (%s)", printrate(&Rate));
++ sort[n].explain = strdup(s);
++ break;
++ case 8:
++ sort[n].explain = strdup(P_EMPTY(getComment(i, comment)));
++ break;
++ case 9: /* used by list */
++ {
++ double cpm = Rate.Duration > 0 ? 60 * Rate.Price / Rate.Duration : 99.99;
++
++ if (Rate.Price == 0)
++ cpm = Rate.Basic;
++
++ sprintf(s, "%s%c"
++ "%s%c%s%c%s%c%s%c"
++ "%s%c"
++ "%.3f%c%.4f%c%.4f%c%.2f%c%.3f%c"
++ "%s%c%.2f",
++ prefix2provider_variant(Rate.prefix, prov), DEL,
++ Rate.Provider, DEL, P_EMPTY(Rate.Zone), DEL, P_EMPTY(Rate.Day), DEL, P_EMPTY(Rate.Hour), DEL,
++ currency, DEL, /* Fixme: global or per
++ Provider?? wg. EURO */
++ Rate.Charge, DEL, Rate.Basic, DEL, Rate.Price, DEL, Rate.Duration, DEL, cpm, DEL,
++ takt_str(&Rate), DEL, Rate.Sales);
++ sort[n].explain = strdup(s);
++ }
++ break;
++ default:
++ sort[n].explain = strdup("");
++ break;
++ }
++
++ n++;
++ } /* if */
++ else if(verbose && *msg)
++ print_msg(PRT_V, "%s\n", msg);
++
++ } /* else 99 */
++ } /* for i */
++ if (service)
++ num = getServiceNum(0); /* get next service num */
++ else
++ num = 0;
++ } while (num && *num);
++ if (explain < 10) {
++ qsort((void *) sort, n, sizeof(SORT), compare_func);
++ if (lcr && n) {
++ RATE Cheap;
++ int res = getLeastCost(&Rate, &Cheap, booked, -1);
++
++ if (res != UNKNOWN) {
++ sort[n].prefix = Cheap.prefix;
++ sort[n].rate = Cheap.Charge;
++ sort[n].name = Cheap.Provider;
++ sprintf(s, "(Cheapest: %s %s %s %s)", Cheap.dst[0], Cheap.dst[1], Cheap.dst[2], P_EMPTY(Cheap.Zone));
++ sort[n].explain = strdup(s);
++ n++;
++ } /* res */
++ } /* lcr */
++ } /* explain */
++ return (n);
++} /* compute */
++
++static void print_header(void)
++{
++ printf("Eine %d Sekunden lange Verbindung von %s nach %s kostet am %s\n",
++ duration, formatNumber("%F", &srcnum), formatNumber("%F", &destnum),
++ ctime(&start));
++}
++
++static void printList(int n)
++{
++ int i;
++
++ if (header)
++ print_header();
++ if (n > best)
++ n = best;
++
++ for (i = 0; i < n; i++)
++ printf("%s\n", sort[i].explain);
++}
++
++static void result(int n)
++{
++
++ register int i;
++
++ if (header)
++ print_header();
++
++ if (n > best)
++ n = best;
++ for (i = 0; i < n; i++)
++ printf("%s %s %8.3f %s\n",
++ Provider(sort[i].prefix), currency, sort[i].rate, sort[i].explain);
++} /* result */
++
++
++static void purge(int n)
++{
++ register int i;
++
++ for (i = 0; i < n; i++)
++ if (sort[i].explain)
++ free(sort[i].explain);
++} /* purge */
++
++/*
++ Werktag
++ Wochenende
++ Ortszone
++ Regionalzone
++ Fernzone
++ Handy
++ Internet
++ 0..23 Uhr
++ */
++
++#define STARTHOUR 8
++
++static void printTable(char *num)
++{
++ register int n, d, i, h, lasthour;
++ auto struct tm *tm;
++ auto SORT last[_MAXLAST];
++ auto int used[MAXPROVIDER];
++ auto int hours[MAXPROVIDER];
++ auto int weight[MAXPROVIDER];
++ auto int useds = 0, maxhour;
++ auto SORT2 wsort[MAXPROVIDER];
++ static int firsttime = 1;
++ int first;
++ int prefix;
++
++ memset(used, 0, sizeof(used));
++ memset(hours, 0, sizeof(hours));
++ memset(weight, 0, sizeof(weight));
++
++ for (d = 0; d < 3; d++) { /* Werktag, Samstag, Sonntag */
++ last[0].prefix = UNKNOWN;
++ lasthour = UNKNOWN;
++
++ buildtime();
++ tm = localtime(&start);
++
++ if (!d) { /* first time */
++ while (tm->tm_wday != 5) { /* find next Friday */
++ start += (60 * 60 * 24);
++ tm = localtime(&start);
++ } /* while */
++ }
++ else /* erst Samstag, dann */
++ start += (60 * 60 * 24); /* Sonntag */
++
++ splittime();
++ buildtime();
++
++ hour = STARTHOUR;
++ min = 0;
++
++ first = 1;
++
++ while (1) {
++ destnum.nprovider = UNKNOWN;
++ if (provider2prefix(num, &prefix)) /* set provider if it is in number */
++ normalizeNumber(num, &destnum, TN_PROVIDER);
++ n = compute(num);
++
++ if (header && first && d == 0 && firsttime)
++ print_header();
++
++ if (header && first) {
++ switch (d) {
++ case 0 : printf("\nWerktag:\n"); break;
++ case 1 : printf("\nSamstag:\n"); break;
++ case 2 : printf("\nSonntag:\n"); break;
++ } /* switch */
++
++ first = 0;
++ } /* if */
++
++ if (last[0].prefix == UNKNOWN) {
++ for (i = 0; i < min(n, MAXLAST); i++) {
++ if (sort[i].prefix) {
++ last[i].prefix = sort[i].prefix;
++ last[i].rate = sort[i].rate;
++ last[i].explain = strdup(sort[i].explain);
++ } /* if */
++ } /* for */
++ } /* if */
++
++ if (lasthour == UNKNOWN)
++ lasthour = hour;
++
++ if (sort[0].prefix != last[0].prefix) {
++ for (i = 0; i < min(n, MAXLAST); i++) {
++
++ if (!i)
++ printf(" %02d:00 .. %02d:59 %s = %s %s%s\n",
++ lasthour, hour - 1, Provider(last[i].prefix),
++ currency,
++ double2str(last[i].rate, 5, 3, DEB),
++ last[i].explain);
++ else
++ printf(" %s = %s %s%s\n",
++ Provider(last[i].prefix),
++ currency,
++ double2str(last[i].rate, 5, 3, DEB),
++ last[i].explain);
++ } /* for */
++
++ used[last[0].prefix]++;
++
++ if (lasthour >= hour)
++ h = ((24 - lasthour) + hour);
++ else
++ h = hour - lasthour;
++
++ hours[last[0].prefix] += h;
++
++ if ((lasthour > 8) && (lasthour < 21))
++ h *= 2;
++
++ weight[last[0].prefix] += h * (d ? 1 : 5);
++
++ for (i = 0; i < min(n, MAXLAST); i++) {
++ last[i].prefix = sort[i].prefix;
++ last[i].rate = sort[i].rate;
++ last[i].explain = strdup(sort[i].explain);
++ } /* for */
++
++ lasthour = hour;
++ } /* if */
++
++ purge(n);
++
++ hour++;
++
++ if (hour == 24)
++ hour = 0;
++ else if (hour == STARTHOUR)
++ break;
++ } /* while */
++
++ for (i = 0; i < min(n, MAXLAST); i++) {
++
++ if (!i) {
++ if ((lasthour == STARTHOUR) && (hour == STARTHOUR))
++ printf(" immer %s = %s %s%s\n",
++ Provider(last[i].prefix),
++ currency,
++ double2str(last[i].rate, 5, 3, DEB),
++ last[i].explain);
++ else
++ printf(" %02d:00 .. %02d:59 %s = %s %s%s\n",
++ lasthour, hour - 1, Provider(last[i].prefix),
++ currency,
++ double2str(last[i].rate, 5, 3, DEB),
++ last[i].explain);
++ }
++ else
++ printf(" %s = %s %s%s\n",
++ Provider(last[i].prefix),
++ currency,
++ double2str(last[i].rate, 5, 3, DEB),
++ last[i].explain);
++ } /* for */
++
++ used[last[0].prefix]++;
++
++ if (lasthour >= hour)
++ h = ((24 - lasthour) + hour);
++ else
++ h = hour - lasthour;
++
++ hours[last[0].prefix] += h;
++
++ if ((lasthour > 8) && (lasthour < 21))
++ h *= 2;
++
++ weight[last[0].prefix] += h * (d ? 1 : 5);
++
++ } /* for */
++
++ if (usestat) {
++ printf("\nProvider(s) used:\n");
++
++ maxhour = 9999999;
++ useds = 0;
++
++ for (i = 0; i < MAXPROVIDER; i++)
++ if (used[i]) {
++ printf("%s %d times, %d hours, weight = %d\n",
++ Provider(i), used[i], hours[i], weight[i]);
++
++ wsort[useds].weight = weight[i];
++ wsort[useds].index = i;
++
++ useds++;
++
++ if (hours[i] < maxhour)
++ maxhour = hours[i];
++ } /* if */
++
++ if ((best < MAXPROVIDER) && (best < useds)) {
++ printf("Retrying with only %d provider(s), eliminating %d provider(s)\n", best, useds - best);
++
++ qsort((void *) wsort, useds, sizeof(SORT2), compare2);
++
++ for (i = 0; i < useds; i++) {
++ printf("%s %d times, %d hours, weight = %d\n",
++ Provider(wsort[i].index), used[wsort[i].index], hours[wsort[i].index], weight[wsort[i].index]);
++
++ if (i == best - 1)
++ printf("\n");
++
++ if (i >= best - 1)
++ ignore[wsort[i].index]++;
++ } /* for */
++
++ if (firsttime)
++ printTable(num);
++
++ firsttime = 0;
++
++ } /* if */
++ } /* if */
++} /* printTable */
++
++
++static void clean_up()
++{
++ if (providers)
++ free(providers);
++ providers = 0;
++ fromarea = 0;
++ table = list = header = explain = 0;
++ usestat = 0;
++ duration = LCR_DURATION;
++ wanted_day = '\0';
++ takt = 99999;
++ if (comment)
++ free(comment);
++ comment = 0;
++ sortby = 0;
++ need_dest = 1;
++}
++
++static char * sub_sp(char *p)
++{
++ char *o = p;
++ int allupper=1;
++ for (; *p; p++)
++ if(!isupper(*p) && *p != '_' && !isdigit(*p)) { /* e.g. _DEMD1 */
++ allupper = 0;
++ break;
++ }
++ if (!allupper)
++ for (p = o; *p; p++)
++ if(*p == '_')
++ *p = ' ';
++ return o;
++}
++static void doit(int i, int argc, char *argv[])
++{
++ int n;
++ int prefix;
++ char *num;
++
++ post_init();
++ memset(ignore, 0, sizeof(ignore));
++ if (!need_dest && i == 0) {
++ i = 0;
++ argc = 1;
++ argv[0] = "2345";
++ }
++ while (i < argc) {
++ num = sub_sp(argv[i]);
++ if (explain == 55) {
++ if (n_providers) {
++ destnum.nprovider = pnum2prefix_variant(providers[0], 0);
++ Strncpy(destnum.provider, getProvider(destnum.nprovider), TN_MAX_PROVIDER_LEN);
++ normalizeNumber(num, &destnum, TN_NO_PROVIDER);
++ }
++ else
++ normalizeNumber(num, &destnum, TN_ALL);
++ printf("%s => %s \n", num, formatNumber("%l - %p", &destnum));
++ i++;
++ continue;
++ }
++ else if (explain == 52) { // enum Servce names
++
++ int first = 1;
++ char *p;
++
++ do {
++ p = getServiceNames(first);
++ if (p)
++ printf("%s\n", p);
++ first = 0;
++ }
++ while (p);
++ return;
++ }
++ destnum.nprovider = UNKNOWN;
++ if (provider2prefix(num, &prefix)) /* set provider if it is in
++ number */
++ normalizeNumber(num, &destnum, TN_PROVIDER);
++ if (table)
++ printTable(num);
++ else {
++ n = compute(num);
++ if (list)
++ printList(n);
++ else if (explain < 10)
++ result(n);
++ purge(n);
++ }
++ i++;
++ } /* while */
++ clean_up();
++}
++
++static void err(char *s)
++{
++ print_msg(PRT_A, "%s - '%s'\n", s, strerror(errno));
++ if (is_daemon == 2)
++ kill(getppid(), SIGTERM);
++ exit(2);
++}
++
++static int handle_client(int fd)
++{
++ char buffer[BUFSIZ];
++ int argc, n, i;
++ char **argv;
++ char *p;
++
++ if ((n = read(fd, buffer, BUFSIZ)) < 0)
++ err("Read");
++ if (n) {
++ argv = calloc(sizeof(char *), 20);
++
++ buffer[n] = '\0';
++ if (verbose)
++ fprintf(stderr, "got '%s'\n", buffer);
++ argc = 0;
++ argv[argc++] = strdup(myname);
++ p = strtok(buffer, "\t\n ");
++ while (p) {
++ argv[argc++] = strdup(p);
++ p = strtok(0, "\t\n ");
++ if (argc >= 20)
++ break;
++ }
++ time(&start); /* set time of call */
++ splittime(); /* date time my be overridden by opts */
++ we_are_daemon = 1;
++ if ((i = opts(argc, argv)) || need_dest == 0) {
++ if (shutdown(fd, 0) < 0) /* no read any more */
++ err("shutdown");
++ if (dup2(fd, STDOUT_FILENO) < 0) /* stdout to sock */
++ err("dup");
++ doit(i, argc, argv);
++ fflush(stdout);
++ fclose(stdout);
++ }
++ for (i = 0; i < argc; i++)
++ free(argv[i]);
++ free(argv);
++ }
++ return n == 0 ? -1 : 0;
++}
++
++void catch_sig(int sig)
++{
++ print_msg(PRT_A, "Signal %d\n", sig);
++ unlink(socket_file);
++ if (pid_dir)
++ unlink(pid_file);
++ err("Sig");
++}
++
++static void del_sock(void)
++{
++ if (getppid() > 0) {
++ unlink(socket_file);
++ if (pid_dir)
++ unlink(pid_file);
++ }
++}
++
++static volatile sig_atomic_t stopped = 0;
++static volatile sig_atomic_t reinit = 0;
++
++static void catch_term(int sig)
++{
++ stopped = 1;
++}
++
++static void catch_hup(int sig)
++{
++ print_msg(PRT_A, "Signal %d restarting %s\n", sig, myname);
++ del_sock();
++ execvp(myname, hup_argv);
++ print_msg(PRT_A, "- failed\n");
++}
++
++static void do_reinit(void)
++{
++ /* deinit(), init() doesn't */
++ reinit=0;
++}
++
++/* thank's to Jochen Erwied for this: */
++#ifndef TEMP_FAILURE_RETRY
++#define TEMP_FAILURE_RETRY(expression) \
++ (__extension__ \
++ ({ long int __result; \
++ do __result = (long int) (expression); \
++ while (__result == -1L && errno == EINTR); \
++ __result; })) \
++
++#endif
++
++static void setup_daemon()
++{
++ int sock;
++ struct sockaddr_un sa;
++ struct sockaddr_in client;
++ fd_set active_fd_set, read_fd_set;
++ char *sock_name = socket_file;
++ socklen_t size;
++ struct stat stat_buf;
++ int i;
++ pid_t pid;
++ char pidname[] = "isdnrate.pid";
++ FILE *fp;
++
++ if (verbose)
++ fprintf(stderr, "Setup sockets\n");
++ signal(SIGTERM, catch_term);
++ signal(SIGINT, catch_sig);
++ signal(SIGHUP, catch_hup);
++
++ if (is_daemon == 2) { /* go background */
++
++ fprintf(stderr, "Going background\n");
++ verbose = 0;
++ pid = fork();
++ if (pid < 0)
++ err("Going bg failed");
++ else if (pid > 0) {
++ exit(EXIT_SUCCESS);
++ }
++ }
++ if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0)
++ err("Can't open socket");
++ sa.sun_family = AF_UNIX;
++ strcpy(sa.sun_path, sock_name);
++ size = offsetof(struct sockaddr_un, sun_path) + strlen(sa.sun_path) + 1;
++
++ if (bind(sock, (struct sockaddr *) &sa, size) < 0)
++ err("Can't bind sock");
++
++ stat(sock_name, &stat_buf);
++ chmod(sock_name, stat_buf.st_mode | S_IWOTH | S_IWGRP);
++/* should better have perm wwwrun.nogroup */
++
++ if (listen(sock, SOMAXCONN) < 0)
++ err("Can't listen");
++ if (pid_dir) {
++ pid_file = malloc(strlen(pid_dir) + strlen(pidname) + 2);
++ strcpy(pid_file, pid_dir);
++ if (pid_file[strlen(pid_file) - 1] != '/')
++ strcat(pid_file, "/");
++ strcat(pid_file, pidname);
++ if ((fp = fopen(pid_file, "w")) == 0)
++ fprintf(stderr, "Can't write %s\n", pid_file);
++ else {
++ fprintf(fp, "%d\n", getpid());
++ fclose(fp);
++ }
++ }
++ atexit(del_sock);
++ FD_ZERO(&active_fd_set);
++ FD_SET(sock, &active_fd_set);
++ while (!stopped) {
++ if (reinit)
++ do_reinit();
++ read_fd_set = active_fd_set;
++ if (TEMP_FAILURE_RETRY(select(FD_SETSIZE, &read_fd_set, 0, 0, 0)) < 0)
++ err("select");
++ for (i = 0; i < FD_SETSIZE; i++)
++ if (FD_ISSET(i, &read_fd_set)) {
++ if (i == sock) { /* request on orig */
++ int new;
++
++ size = sizeof(client);
++ if ((new = accept(sock, (struct sockaddr *) &client, &size)) < 0)
++ err("accept");
++ if (verbose)
++ fprintf(stderr, "Accepted %d\n", new);
++ FD_SET(new, &active_fd_set);
++ }
++ else { /* already connected */
++ pid_t pid;
++ int status;
++
++ if (verbose)
++ fprintf(stderr, "Handle client %d\n", i);
++ pid = fork();
++ if (pid == 0) {
++ handle_client(i);
++ _exit(EXIT_SUCCESS);
++ }
++ else if (pid < 0)
++ err("fork");
++ else {
++ if (waitpid(pid, &status, 0) != pid)
++ err("waitpid");
++ close(i);
++ FD_CLR(i, &active_fd_set);
++ }
++ } /* if i */
++ } /* if ISSET */
++ } /* while */
++ del_sock();
++ exit(EXIT_SUCCESS);
++}
++
++static int connect_2_daemon(int argc, char *argv[])
++{
++ int sock;
++ struct sockaddr_un sa;
++ char *sock_name = socket_file;
++ size_t size;
++ int i, c, len;
++ char *p, *q, buffer[BUFSIZ];
++
++ if ((sock = socket(PF_UNIX, SOCK_STREAM, 0)) < 0)
++ err("Can't open socket");
++ sa.sun_family = AF_UNIX;
++ strcpy(sa.sun_path, sock_name);
++ size = offsetof(struct sockaddr_un, sun_path) + strlen(sa.sun_path) + 1;
++
++ if (connect(sock, (struct sockaddr *) &sa, size) < 0)
++ err("Can't connect sock");
++ p = buffer;
++ optind = 0; /* reinit */
++ len = 0;
++ while ((c = getopt(argc, argv, options)) != EOF && len < BUFSIZ - 10) {
++ switch (c) {
++ case '?':
++ case 'C':
++ break;
++ case 'D':
++ if (optarg && atoi(optarg) == 3) ; /* goon, kill a running
++ daemon */
++ else
++ break;
++ default:
++ *p++ = '-';
++ *p++ = c;
++ len += 3;
++ if (optarg)
++ for (q = optarg; *q && len < BUFSIZ - 10; len++)
++ *p++ = *q++;
++ *p++ = ' ';
++ break;
++ }
++ }
++ for (i = optind; i < argc; i++) {
++ for (q = argv[i]; *q && len < BUFSIZ - 10; len++)
++ *p++ = *q++;
++ *p++ = ' ';
++ len++;
++ }
++ *--p = '\x0';
++ i = write(sock, buffer, strlen(buffer) + 1);
++ if (i < 0)
++ err("Write sock");
++ while ((i = read(sock, buffer, BUFSIZ)) > 0)
++ write(1, buffer, i);
++ close(sock);
++ return EXIT_SUCCESS;
++}
++
++
++int main(int argc, char *argv[], char *envp[])
++{
++ register int i;
++ sigset_t unblock_set;
++
++ myname = argv[0];
++ myshortname = basename(myname);
++
++ time(&start);
++ splittime();
++ socket_file = strdup(SOCKNAME);
++ /* borrowed from isdnlog.c, thanks */
++ hup_argv = argv;
++ sigemptyset(&unblock_set);
++ sigaddset(&unblock_set, SIGHUP);
++ sigprocmask(SIG_UNBLOCK, &unblock_set, NULL);
++
++ if ((i = opts(argc, argv)) || need_dest == 0) {
++ if (is_client)
++ exit(connect_2_daemon(argc, argv));
++ else
++ init();
++ if (is_daemon) {
++ clean_up();
++ setup_daemon();
++ }
++ else
++ doit(i, argc, argv);
++ }
++ else {
++ print_msg(PRT_A, usage, myshortname, myshortname, options);
++ print_msg(PRT_A, "\n");
++ print_msg(PRT_A, "\t-a \tall=show old and newer rates (default actual only)\n", MAXPROVIDER);
++ print_msg(PRT_A, "\t-b best\tshow only the first <best> provider(s) (default %d)\n", MAXPROVIDER);
++ print_msg(PRT_A, "\t-d d[.m[.y]] | {W|N|E}\tstart date of call (default now)\n");
++ print_msg(PRT_A, "\t-f areacode\tyou are calling from <areacode>\n");
++ print_msg(PRT_A, "\t-h h[:m[:s]]\tstart time of call (default now)\n");
++ print_msg(PRT_A, "\t-l duration\tduration of call in seconds (default %d seconds)\n", LCR_DURATION);
++ print_msg(PRT_A, "\t-o \t show only booked providers\n");
++ print_msg(PRT_A, "\t-p prov|B[,prov...]\t show only these providers\n");
++ print_msg(PRT_A, "\t-s \t consider 'Destination' as a service name\n");
++ print_msg(PRT_A, "\t-t takt\t\tshow providers if chargeduration<=takt\n");
++ print_msg(PRT_A, "\t-v [level]\tverbose\n");
++ print_msg(PRT_A, "\t-x prov|B[,prov...]\t exclude these providers\n");
++
++ print_msg(PRT_A, "\tOutput and run options\n");
++ print_msg(PRT_A, "\t-C\trun as client, connecting to a running daemon\n");
++ print_msg(PRT_A, "\t-CD3\tkill a running daemon\n");
++ print_msg(PRT_A, "\t-D\trun as daemon\n");
++ print_msg(PRT_A, "\t-D2\trun as daemon & go background\n");
++ print_msg(PRT_A, "\t-G which\tshow raw data\n");
++ print_msg(PRT_A, "\t-H\tshow a header\n");
++ print_msg(PRT_A, "\t-L\tshow a detailed list\n");
++ print_msg(PRT_A, "\t-O sOcket-path\twrite socket to this file (def:tmp/isdnrate)\n");
++ print_msg(PRT_A, "\t-P pid-dir\twrite own PID to pid-dir/isdnrate.pid\n");
++ print_msg(PRT_A, "\t-N\tparse the given telefon numbers\n");
++ print_msg(PRT_A, "\t-S[v|n]\tsort by v=VBN, n=Name, default=Charge\n");
++ print_msg(PRT_A, "\t-T\tshow a table of day/night week/weekend\n");
++ print_msg(PRT_A, "\t-U\tshow usage stats for table\n");
++ print_msg(PRT_A, "\t-V\tshow version info\n");
++ print_msg(PRT_A, "\t-X\texplain each rate\n");
++ print_msg(PRT_A, "\t-X2\texplain more\n");
++ print_msg(PRT_A, "\t-X comment\tprint <comment> from C:tag\n");
++ print_msg(PRT_A, "\t-Z show entry from getLeastCost\n");
++ print_msg(PRT_A, "\n\te.g.\t%s -b5 -f30 -TH -t1 Zaire\n", myshortname);
++ } /* else */
++/* deinit(); Fixme: this SIGSEGVs in exitHoliday */
++ return (0);
++} /* isdnrate */
+diff -Naur isdn4k-utils-orig//isdnlog/tools/rate.c isdn4k-utils/isdnlog/tools/rate.c
+--- isdn4k-utils-orig//isdnlog/tools/rate.c 2002-07-06 09:22:33.000000000 +1000
++++ isdn4k-utils/isdnlog/tools/rate.c 2010-12-04 20:44:03.786672226 +1000
+@@ -1773,6 +1773,7 @@
+ number=realloc(number, numbers*sizeof(int));
+ number[numbers-1]=i;
+ skip:
++ ;
+ }
+
+ while (isblank(*s)) s++;
+@@ -2344,6 +2345,7 @@
+ }
+ return UNKNOWN;
+ done:
++ ;
+ }
+ }
+ }
+diff -Naur isdn4k-utils-orig//lib/libtools.c isdn4k-utils/lib/libtools.c
+--- isdn4k-utils-orig//lib/libtools.c 1999-11-04 02:13:36.000000000 +1000
++++ isdn4k-utils/lib/libtools.c 2010-12-04 20:44:03.786672226 +1000
+@@ -711,6 +711,7 @@
+ case 'r': _mode |= R_OK;
+ break;
+ default :
++ ;
+ }
+ }
+
+diff -Naur isdn4k-utils-orig//Makefile isdn4k-utils/Makefile
+--- isdn4k-utils-orig//Makefile 2002-07-20 05:03:49.000000000 +1000
++++ isdn4k-utils/Makefile 2010-12-04 20:43:57.890005560 +1000
+@@ -132,12 +132,6 @@
+
+ install: rootperm
+ set -e; for i in `echo $(SUBDIRS)`; do $(MAKE) -C $$i install; done
+- @if [ -c $(DESTDIR)/dev/isdnctrl0 ] && ls -l $(DESTDIR)/dev/isdnctrl0 | egrep "[[:space:]]45,[[:space:]]+64[[:space:]]" > /dev/null; \
+- then \
+- /bin/echo -e '(some) ISDN devices already exist, not creating them.\nUse scripts/makedev.sh manually if necessary.'; \
+- else \
+- sh scripts/makedev.sh $(DESTDIR) ; \
+- fi
+
+ uninstall: rootperm
+ set -e; for i in `echo $(SUBDIRS)`; do $(MAKE) -C $$i uninstall; done
diff --git a/testing/k3b/PKGBUILD b/testing/k3b/PKGBUILD
new file mode 100644
index 000000000..9bdef9769
--- /dev/null
+++ b/testing/k3b/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 142145 2011-11-05 11:37:47Z ibiru $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=k3b
+pkgver=2.0.2
+pkgrel=3
+pkgdesc="Feature-rich and easy to handle CD burning application"
+arch=('i686' 'x86_64')
+url="http://k3b.org/"
+license=('GPL')
+depends=('kdebase-runtime' 'kdemultimedia-kioslave' 'libsamplerate'
+ 'ffmpeg' 'taglib' 'libmpcdec' 'libdvdread' 'cdrdao' 'cdrkit' 'libxft')
+makedepends=('cmake' 'automoc4' 'docbook-xml')
+optdepends=('dvd+rw-tools: for dvd burning support'
+ 'vcdimager: for vcd burning support'
+ 'transcode: for advanced mpeg conversion support'
+ 'emovix: for bootable multimedia cd/dvd support')
+options=('!libtool')
+install=k3b.install
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2 \
+ k3b-2.0.2-ffmpeg.patch)
+sha1sums=('8b30a4d07942e82559b01bc07dea6bcf2defd532'
+ '8120c0e22e6c41ea285ca6060be13723ed91c52b')
+
+build() {
+ cd "${srcdir}"
+ (cd ${pkgname}-${pkgver}; patch -p1 -i "${srcdir}/k3b-2.0.2-ffmpeg.patch")
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd "${srcdir}/build"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/k3b/k3b-2.0.2-ffmpeg.patch b/testing/k3b/k3b-2.0.2-ffmpeg.patch
new file mode 100644
index 000000000..2878b1edc
--- /dev/null
+++ b/testing/k3b/k3b-2.0.2-ffmpeg.patch
@@ -0,0 +1,96 @@
+commit 61ca30beb978f68e72257408777c6433f33129bd
+Author: Michal Malek <michalm@jabster.pl>
+Date: Sun Aug 28 20:18:53 2011 +0200
+
+ Fixed compilation with new FFMPEG
+
+ BUG: 274817
+ FIXED-IN: 2.0.3
+
+diff --git a/plugins/decoder/ffmpeg/k3bffmpegwrapper.cpp b/plugins/decoder/ffmpeg/k3bffmpegwrapper.cpp
+index 0ad59fc..0c5f366 100644
+--- a/plugins/decoder/ffmpeg/k3bffmpegwrapper.cpp
++++ b/plugins/decoder/ffmpeg/k3bffmpegwrapper.cpp
+@@ -109,7 +109,13 @@ bool K3bFFMpegFile::open()
+ #else
+ ::AVCodecContext* codecContext = d->formatContext->streams[0]->codec;
+ #endif
+- if( codecContext->codec_type != CODEC_TYPE_AUDIO ) {
++ if( codecContext->codec_type !=
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 64, 0)
++ AVMEDIA_TYPE_AUDIO)
++#else
++ CODEC_TYPE_AUDIO)
++#endif
++ {
+ kDebug() << "(K3bFFMpegFile) not a simple audio stream: " << m_filename;
+ return false;
+ }
+@@ -225,8 +231,11 @@ QString K3bFFMpegFile::typeComment() const
+ QString K3bFFMpegFile::title() const
+ {
+ // FIXME: is this UTF8 or something??
+- if( d->formatContext->title[0] != '\0' )
+- return QString::fromLocal8Bit( d->formatContext->title );
++ AVDictionaryEntry *ade = av_dict_get( d->formatContext->metadata, "TITLE", NULL, 0 );
++ if( ade == NULL )
++ return QString();
++ if( ade->value != '\0' )
++ return QString::fromLocal8Bit( ade->value );
+ else
+ return QString();
+ }
+@@ -235,8 +244,11 @@ QString K3bFFMpegFile::title() const
+ QString K3bFFMpegFile::author() const
+ {
+ // FIXME: is this UTF8 or something??
+- if( d->formatContext->author[0] != '\0' )
+- return QString::fromLocal8Bit( d->formatContext->author );
++ AVDictionaryEntry *ade = av_dict_get( d->formatContext->metadata, "ARTIST", NULL, 0 );
++ if( ade == NULL )
++ return QString();
++ if( ade->value != '\0' )
++ return QString::fromLocal8Bit( ade->value );
+ else
+ return QString();
+ }
+@@ -245,8 +257,11 @@ QString K3bFFMpegFile::author() const
+ QString K3bFFMpegFile::comment() const
+ {
+ // FIXME: is this UTF8 or something??
+- if( d->formatContext->comment[0] != '\0' )
+- return QString::fromLocal8Bit( d->formatContext->comment );
++ AVDictionaryEntry *ade = av_dict_get( d->formatContext->metadata, "COMMENT", NULL, 0 );
++ if( ade == NULL )
++ return QString();
++ if( ade->value != '\0' )
++ return QString::fromLocal8Bit( ade->value );
+ else
+ return QString();
+ }
+@@ -309,8 +324,13 @@ int K3bFFMpegFile::fillOutputBuffer()
+ #if LIBAVCODEC_VERSION_MAJOR < 52
+ int len = ::avcodec_decode_audio(
+ #else
++ #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 64, 0)
++ int len = ::avcodec_decode_audio3(
++ #else
+ int len = ::avcodec_decode_audio2(
++ #endif
+ #endif
++
+ #ifdef FFMPEG_BUILD_PRE_4629
+ &d->formatContext->streams[0]->codec,
+ #else
+@@ -318,7 +338,11 @@ int K3bFFMpegFile::fillOutputBuffer()
+ #endif
+ (short*)d->alignedOutputBuffer,
+ &d->outputBufferSize,
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 64, 0)
++ &d->packet );
++#else
+ d->packetData, d->packetSize );
++#endif
+
+ if( d->packetSize <= 0 || len < 0 )
+ ::av_free_packet( &d->packet );
diff --git a/testing/k3b/k3b.install b/testing/k3b/k3b.install
new file mode 100644
index 000000000..413ad60f7
--- /dev/null
+++ b/testing/k3b/k3b.install
@@ -0,0 +1,13 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/kdemultimedia/PKGBUILD b/testing/kdemultimedia/PKGBUILD
new file mode 100644
index 000000000..f9d57749e
--- /dev/null
+++ b/testing/kdemultimedia/PKGBUILD
@@ -0,0 +1,109 @@
+# $Id: PKGBUILD 142147 2011-11-05 11:37:50Z ibiru $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdemultimedia
+pkgname=('kdemultimedia-dragonplayer'
+ 'kdemultimedia-ffmpegthumbs'
+ 'kdemultimedia-juk'
+ 'kdemultimedia-kioslave'
+ 'kdemultimedia-kmix'
+ 'kdemultimedia-kscd'
+ 'kdemultimedia-mplayerthumbs')
+pkgver=4.7.3
+pkgrel=2
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdemultimedia')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'kdelibs' 'tunepimp'
+ 'ffmpeg' 'mplayer' 'pulseaudio' 'libmusicbrainz3')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2"
+ 'mplayerthumbs.config')
+sha1sums=('4db44494e6a2ef886e3513b6a2eb4e526741a6ff'
+ 'ba016fa2563c14ffcba852c62506b66bfc6ee683')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWITH_Xine=OFF
+ make
+}
+
+package_kdemultimedia-dragonplayer() {
+ pkgdesc='Video Player'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/multimedia/dragonplayer/"
+ install='kdemultimedia.install'
+ cd $srcdir/build/dragonplayer
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/dragonplayer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-ffmpegthumbs() {
+ pkgdesc='Video Files (ffmpegthumbs)'
+ depends=('kdebase-runtime' 'ffmpeg')
+ install='kdemultimedia.install'
+ cd $srcdir/build/ffmpegthumbs
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-juk() {
+ pkgdesc='Music Player'
+ depends=('kdebase-runtime' 'tunepimp')
+ url="http://kde.org/applications/multimedia/juk"
+ install='kdemultimedia.install'
+ cd $srcdir/build/juk
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/juk
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-kioslave() {
+ pkgdesc='Audio CD Browser'
+ depends=('kdelibs' 'libmusicbrainz3' 'cdparanoia')
+ conflicts=('kdemultimedia-libkcddb' 'kdemultimedia-libkcompactdisc')
+ replaces=('kdemultimedia-libkcddb' 'kdemultimedia-libkcompactdisc')
+ for i in kioslave doc/kioslave libkcddb libkcompactdisc; do
+ cd $srcdir/build/${i}
+ make DESTDIR=$pkgdir install
+ done
+}
+
+package_kdemultimedia-kmix() {
+ pkgdesc='Sound Mixer'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/multimedia/kmix"
+ install='kdemultimedia.install'
+ cd $srcdir/build/kmix
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kmix
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-kscd() {
+ pkgdesc='CD Player'
+ depends=('kdebase-runtime' 'libmusicbrainz3')
+ url="http://kde.org/applications/multimedia/kscd"
+ install='kdemultimedia.install'
+ cd $srcdir/build/kscd
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kcontrol/cddbretrieval
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-mplayerthumbs() {
+ pkgdesc='Video Files (MPlayerThumbs)'
+ depends=('kdebase-runtime' 'mplayer')
+ replaces=('mplayerthumbs')
+ conflicts=('mplayerthumbs')
+ cd $srcdir/build/mplayerthumbs
+ make DESTDIR=$pkgdir install
+ install -D -m644 $srcdir/mplayerthumbs.config $pkgdir/usr/share/config/mplayerthumbs
+}
diff --git a/testing/kdemultimedia/kdemultimedia.install b/testing/kdemultimedia/kdemultimedia.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/testing/kdemultimedia/kdemultimedia.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/kdemultimedia/mplayerthumbs.config b/testing/kdemultimedia/mplayerthumbs.config
new file mode 100644
index 000000000..761a17953
--- /dev/null
+++ b/testing/kdemultimedia/mplayerthumbs.config
@@ -0,0 +1,2 @@
+[MPlayerThumbsCfg]
+backend=0
diff --git a/testing/keyutils/PKGBUILD b/testing/keyutils/PKGBUILD
new file mode 100644
index 000000000..97486239a
--- /dev/null
+++ b/testing/keyutils/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 142044 2011-11-04 20:54:48Z stephane $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=keyutils
+pkgver=1.5.2
+pkgrel=2
+pkgdesc="Linux Key Management Utilities"
+arch=(i686 x86_64)
+url="http://www.kernel.org"
+license=('GPL2' 'LGPL2.1')
+depends=('glibc' 'sh')
+backup=(etc/request-key.conf)
+source=(http://people.redhat.com/~dhowells/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('19811ee31f683058a9aae3e6a3a23a7f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i "s|/lib64|/lib|g" Makefile
+ make CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/kradio/PKGBUILD b/testing/kradio/PKGBUILD
new file mode 100644
index 000000000..b73b80c90
--- /dev/null
+++ b/testing/kradio/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 142149 2011-11-05 11:37:56Z ibiru $
+# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=kradio
+pkgver=4.0.2
+pkgrel=2
+arch=('i686' 'x86_64')
+license=('GPL2')
+pkgdesc="A comfortable KDE radio application"
+url="http://kradio.sourceforge.net/"
+depends=('kdebase-runtime' 'lirc-utils' 'libmms' 'ffmpeg')
+makedepends=('pkg-config' 'automoc4' 'cmake')
+install=kradio.install
+source=(http://downloads.sourceforge.net/sourceforge/kradio/kradio4-$pkgver.tar.bz2{,.asc} kradio-ffmpeg.diff)
+options=(!libtool)
+
+build() {
+ cd "$srcdir"
+ (cd ${pkgname}4-$pkgver ; patch -p1 -i "$srcdir/kradio-ffmpeg.diff")
+ mkdir build
+ cd build
+ cmake ../${pkgname}4-$pkgver -DCMAKE_SKIP_RPATH=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd "$srcdir/build"
+ make DESTDIR="$pkgdir" install
+}
+md5sums=('18fea3e2bc7100882075187c6a89f7bd'
+ '5f407eb75536f39e79c77a70613e8704'
+ '7d31a4f54602bc109f39cc0a7a1dc50c')
diff --git a/testing/kradio/kradio-ffmpeg.diff b/testing/kradio/kradio-ffmpeg.diff
new file mode 100644
index 000000000..27d224fec
--- /dev/null
+++ b/testing/kradio/kradio-ffmpeg.diff
@@ -0,0 +1,34 @@
+X-Git-Url: http://kradio.git.sourceforge.net/git/gitweb.cgi?p=kradio%2Fkradio;a=blobdiff_plain;f=plugins%2Finternetradio%2Fdecoder_thread.cpp;h=c74d6e20578faf3b5dee877aa6de0c9269f49ad9;hp=4cd6cc0543200e9e274e38fa8badb63556a419c3;hb=4f4ec44f49d83b85702bb002455a57374245d825;hpb=c5dea0c01bf5cc16f49cf3d58b837b2fab02d988
+
+diff --git a/plugins/internetradio/decoder_thread.cpp b/plugins/internetradio/decoder_thread.cpp
+index 4cd6cc0..c74d6e2 100644
+--- a/plugins/internetradio/decoder_thread.cpp
++++ b/plugins/internetradio/decoder_thread.cpp
+@@ -373,7 +373,6 @@ void InternetRadioDecoder::openAVStream(const QString &stream, bool warningsNotE
+
+ //av_log_set_level(255);
+ m_av_pFormatCtx = avformat_alloc_context();
+- memset(m_av_pFormatCtx, 0, sizeof(*m_av_pFormatCtx));
+ m_av_pFormatCtx->probesize = m_maxProbeSize;
+ m_av_pFormatCtx->max_analyze_duration = m_maxAnalyzeTime * AV_TIME_BASE;
+
+@@ -475,7 +474,6 @@ void InternetRadioDecoder::openAVStream(const QString &stream, bool warningsNotE
+ m_av_pFormatCtx_opened = true;
+ }
+ else {
+-
+ // IErrorLogClient::staticLogDebug("InternetRadioDecoder::openAVStream: av_open_input_file start");
+ if (av_open_input_file(&m_av_pFormatCtx, stream.toUtf8(), iformat, 0, &av_params) != 0) {
+ if (warningsNotErrors) {
+@@ -535,7 +533,11 @@ void InternetRadioDecoder::openAVStream(const QString &stream, bool warningsNotE
+ m_av_audioStream = -1;
+ for (unsigned int i = 0; i < m_av_pFormatCtx->nb_streams; i++) {
+ // if (m_av_pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO && m_av_audioStream < 0) {
++#if LIBAVCODEC_VERSION_MAJOR < 53
+ if (m_av_pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO) { // take last stream
++#else
++ if (m_av_pFormatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) { // take last stream
++#endif
+ m_av_audioStream = i;
+ break;
+ }
diff --git a/testing/kradio/kradio.install b/testing/kradio/kradio.install
new file mode 100644
index 000000000..af52669f5
--- /dev/null
+++ b/testing/kradio/kradio.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+}
+
+post_upgrade() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+}
+
+post_remove() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+}
diff --git a/testing/krb5/PKGBUILD b/testing/krb5/PKGBUILD
new file mode 100644
index 000000000..0ba2538c2
--- /dev/null
+++ b/testing/krb5/PKGBUILD
@@ -0,0 +1,83 @@
+# $Id: PKGBUILD 142052 2011-11-04 23:20:14Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+
+pkgname=krb5
+pkgver=1.9.2
+pkgrel=1
+pkgdesc="The Kerberos network authentication system"
+arch=('i686' 'x86_64')
+url="http://web.mit.edu/kerberos/"
+license=('custom')
+depends=('e2fsprogs' 'libldap' 'keyutils')
+makedepends=('perl')
+provides=('heimdal')
+replaces=('heimdal')
+conflicts=('heimdal')
+backup=('etc/krb5.conf' 'var/lib/krb5kdc/kdc.conf')
+source=(http://web.mit.edu/kerberos/dist/${pkgname}/1.9/${pkgname}-${pkgver}-signed.tar
+ krb5-kadmind
+ krb5-kdc
+ krb5-kpropd
+ krb5-1.9.1-config-script.patch)
+sha1sums=('aa06f778ee1f9791cd4c5cf4c9e9465769ffec92'
+ '2aa229369079ed1bbb201a1ef72c47bf143f4dbe'
+ '77d2312ecd8bf12a6e72cc8fd871a8ac93b23393'
+ '7f402078fa65bb9ff1beb6cbbbb017450df78560'
+ '7342410760cf44bfa01bb99bb4c49e12496cb46f')
+options=('!emptydirs')
+
+build() {
+ tar zxvf ${pkgname}-${pkgver}.tar.gz
+ cd "${srcdir}/${pkgname}-${pkgver}/src"
+
+ # - Make krb5-config suppress CFLAGS output when called with --libs
+ # cf https://bugzilla.redhat.com/show_bug.cgi?id=544391
+ #
+ # - Omit extra libraries because their interfaces are not exposed to applications
+ # by libkrb5, unless do_deps is set to 1, which indicates that the caller
+ # wants the whole list.
+ #
+ # Patch from upstream :
+ # http://anonsvn.mit.edu/viewvc/krb5/trunk/src/krb5-config.in?r1=23662&r2=25236
+ patch -Np2 -i ${srcdir}/krb5-1.9.1-config-script.patch
+
+ # FS#25384
+ sed -i "/KRB5ROOT=/s/\/local//" util/ac_check_krb5.m4
+
+ export CFLAGS+=" -fPIC -fno-strict-aliasing -fstack-protector-all"
+ export CPPFLAGS+=" -I/usr/include/et"
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --localstatedir=/var/lib \
+ --enable-shared \
+ --with-system-et \
+ --with-system-ss \
+ --disable-rpath \
+ --without-tcl \
+ --enable-dns-for-realm \
+ --with-ldap
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/src"
+ make DESTDIR="${pkgdir}" EXAMPLEDIR="/usr/share/doc/${pkgname}/examples" install
+
+ # Sample KDC config file
+ install -dm 755 "${pkgdir}"/var/lib/krb5kdc
+ install -pm 644 config-files/kdc.conf "${pkgdir}"/var/lib/krb5kdc/kdc.conf
+
+ # Default configuration file
+ install -dm 755 "${pkgdir}"/etc
+ install -pm 644 config-files/krb5.conf "${pkgdir}"/etc/krb5.conf
+
+ install -dm 755 "${pkgdir}"/etc/rc.d
+ install -m 755 ../../krb5-kdc "${pkgdir}"/etc/rc.d
+ install -m 755 ../../krb5-kadmind "${pkgdir}"/etc/rc.d
+ install -m 755 ../../krb5-kpropd "${pkgdir}"/etc/rc.d
+
+ install -dm 755 "${pkgdir}"/usr/share/aclocal
+ install -m 644 util/ac_check_krb5.m4 "${pkgdir}"/usr/share/aclocal
+
+ install -Dm644 "${srcdir}"/${pkgname}-${pkgver}/NOTICE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/testing/krb5/krb5-1.9.1-2011-006.patch b/testing/krb5/krb5-1.9.1-2011-006.patch
new file mode 100644
index 000000000..05a22caf5
--- /dev/null
+++ b/testing/krb5/krb5-1.9.1-2011-006.patch
@@ -0,0 +1,75 @@
+diff --git a/src/plugins/kdb/db2/lockout.c b/src/plugins/kdb/db2/lockout.c
+index b473611..50c60b7 100644
+--- a/src/plugins/kdb/db2/lockout.c
++++ b/src/plugins/kdb/db2/lockout.c
+@@ -169,6 +169,9 @@ krb5_db2_lockout_audit(krb5_context context,
+ return 0;
+ }
+
++ if (entry == NULL)
++ return 0;
++
+ if (!db_ctx->disable_lockout) {
+ code = lookup_lockout_policy(context, entry, &max_fail,
+ &failcnt_interval, &lockout_duration);
+@@ -176,6 +179,15 @@ krb5_db2_lockout_audit(krb5_context context,
+ return code;
+ }
+
++ /*
++ * Don't continue to modify the DB for an already locked account.
++ * (In most cases, status will be KRB5KDC_ERR_CLIENT_REVOKED, and
++ * this check is unneeded, but in rare cases, we can fail with an
++ * integrity error or preauth failure before a policy check.)
++ */
++ if (locked_check_p(context, stamp, max_fail, lockout_duration, entry))
++ return 0;
++
+ /* Only mark the authentication as successful if the entry
+ * required preauthentication, otherwise we have no idea. */
+ if (status == 0 && (entry->attributes & KRB5_KDB_REQUIRES_PRE_AUTH)) {
+diff --git a/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c b/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
+index 552e39a..c2f44ab 100644
+--- a/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
++++ b/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal2.c
+@@ -105,6 +105,7 @@ krb5_ldap_get_principal(krb5_context context, krb5_const_principal searchfor,
+ CHECK_LDAP_HANDLE(ldap_context);
+
+ if (is_principal_in_realm(ldap_context, searchfor) != 0) {
++ st = KRB5_KDB_NOENTRY;
+ krb5_set_error_message (context, st, "Principal does not belong to realm");
+ goto cleanup;
+ }
+diff --git a/src/plugins/kdb/ldap/libkdb_ldap/lockout.c b/src/plugins/kdb/ldap/libkdb_ldap/lockout.c
+index a218dc7..fd164dd 100644
+--- a/src/plugins/kdb/ldap/libkdb_ldap/lockout.c
++++ b/src/plugins/kdb/ldap/libkdb_ldap/lockout.c
+@@ -165,6 +165,9 @@ krb5_ldap_lockout_audit(krb5_context context,
+ return 0;
+ }
+
++ if (entry == NULL)
++ return 0;
++
+ if (!ldap_context->disable_lockout) {
+ code = lookup_lockout_policy(context, entry, &max_fail,
+ &failcnt_interval,
+@@ -173,9 +176,16 @@ krb5_ldap_lockout_audit(krb5_context context,
+ return code;
+ }
+
+- entry->mask = 0;
++ /*
++ * Don't continue to modify the DB for an already locked account.
++ * (In most cases, status will be KRB5KDC_ERR_CLIENT_REVOKED, and
++ * this check is unneeded, but in rare cases, we can fail with an
++ * integrity error or preauth failure before a policy check.)
++ */
++ if (locked_check_p(context, stamp, max_fail, lockout_duration, entry))
++ return 0;
+
+- assert (!locked_check_p(context, stamp, max_fail, lockout_duration, entry));
++ entry->mask = 0;
+
+ /* Only mark the authentication as successful if the entry
+ * required preauthentication, otherwise we have no idea. */
diff --git a/testing/krb5/krb5-1.9.1-canonicalize-fallback.patch b/testing/krb5/krb5-1.9.1-canonicalize-fallback.patch
new file mode 100644
index 000000000..e5a38498f
--- /dev/null
+++ b/testing/krb5/krb5-1.9.1-canonicalize-fallback.patch
@@ -0,0 +1,58 @@
+diff -Naur krb5-1.9.1.ori/src/lib/krb5/krb/get_creds.c krb5-1.9.1/src/lib/krb5/krb/get_creds.c
+--- krb5-1.9.1.ori/src/lib/krb5/krb/get_creds.c 2011-02-09 16:55:36.000000000 -0500
++++ krb5-1.9.1/src/lib/krb5/krb/get_creds.c 2011-09-26 18:42:01.465190278 -0400
+@@ -470,13 +470,10 @@
+
+ /***** STATE_REFERRALS *****/
+
+-/*
+- * Possibly retry a request in the fallback realm after a referral request
+- * failure in the local realm. Expects ctx->reply_code to be set to the error
+- * from a referral request.
+- */
++/* Possibly try a non-referral request after a referral request failure.
++ * Expects ctx->reply_code to be set to the error from a referral request. */
+ static krb5_error_code
+-try_fallback_realm(krb5_context context, krb5_tkt_creds_context ctx)
++try_fallback(krb5_context context, krb5_tkt_creds_context ctx)
+ {
+ krb5_error_code code;
+ char **hrealms;
+@@ -485,9 +482,10 @@
+ if (ctx->referral_count > 1)
+ return ctx->reply_code;
+
+- /* Only fall back if the original request used the referral realm. */
++ /* If the request used a specified realm, make a non-referral request to
++ * that realm (in case it's a KDC which rejects KDC_OPT_CANONICALIZE). */
+ if (!krb5_is_referral_realm(&ctx->req_server->realm))
+- return ctx->reply_code;
++ return begin_non_referral(context, ctx);
+
+ if (ctx->server->length < 2) {
+ /* We need a type/host format principal to find a fallback realm. */
+@@ -500,10 +498,10 @@
+ if (code != 0)
+ return code;
+
+- /* Give up if the fallback realm isn't any different. */
++ /* If the fallback realm isn't any different, use the existing TGT. */
+ if (data_eq_string(ctx->server->realm, hrealms[0])) {
+ krb5_free_host_realm(context, hrealms);
+- return ctx->reply_code;
++ return begin_non_referral(context, ctx);
+ }
+
+ /* Rewrite server->realm to be the fallback realm. */
+@@ -540,9 +538,9 @@
+ krb5_error_code code;
+ const krb5_data *referral_realm;
+
+- /* Possibly retry with the fallback realm on error. */
++ /* Possibly try a non-referral fallback request on error. */
+ if (ctx->reply_code != 0)
+- return try_fallback_realm(context, ctx);
++ return try_fallback(context, ctx);
+
+ if (krb5_principal_compare(context, ctx->reply_creds->server,
+ ctx->server)) {
diff --git a/testing/krb5/krb5-1.9.1-config-script.patch b/testing/krb5/krb5-1.9.1-config-script.patch
new file mode 100644
index 000000000..a72a75edf
--- /dev/null
+++ b/testing/krb5/krb5-1.9.1-config-script.patch
@@ -0,0 +1,27 @@
+diff -Naur krb5-1.9.1.ori/src/krb5-config.in krb5-1.9.1/src/krb5-config.in
+--- krb5-1.9.1.ori/src/krb5-config.in 2010-01-19 13:44:57.000000000 -0500
++++ krb5-1.9.1/src/krb5-config.in 2011-09-26 18:27:09.018487087 -0400
+@@ -186,7 +186,7 @@
+ -e 's#\$(RPATH_FLAG)#'"$RPATH_FLAG"'#' \
+ -e 's#\$(LDFLAGS)#'"$LDFLAGS"'#' \
+ -e 's#\$(PTHREAD_CFLAGS)#'"$PTHREAD_CFLAGS"'#' \
+- -e 's#\$(CFLAGS)#'"$CFLAGS"'#'`
++ -e 's#\$(CFLAGS)##'`
+
+ if test $library = 'kdb'; then
+ lib_flags="$lib_flags -lkdb5 $KDB5_DB_LIB"
+@@ -214,9 +214,13 @@
+ fi
+
+ if test $library = 'krb5'; then
+- lib_flags="$lib_flags -lkrb5 -lk5crypto -lcom_err $GEN_LIB $LIBS $DL_LIB"
++ lib_flags="$lib_flags -lkrb5 -lk5crypto -lcom_err"
+ fi
+
++ # If we ever support a flag to generate output suitable for static
++ # linking, we would output "-lkrb5support $GEN_LIB $LIBS $DL_LIB"
++ # here.
++
+ echo $lib_flags
+ fi
+
diff --git a/testing/krb5/krb5-kadmind b/testing/krb5/krb5-kadmind
new file mode 100644
index 000000000..04df0dcff
--- /dev/null
+++ b/testing/krb5/krb5-kadmind
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/kadmind`
+case "$1" in
+ start)
+ stat_busy "Starting Kerberos Admin Daemon"
+ if [ -z "$PID" ]; then
+ /usr/sbin/kadmind
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon krb5-kadmind
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Kerberos Admin Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon krb5-kadmind
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+ ;;
+esac
+exit 0
diff --git a/testing/krb5/krb5-kdc b/testing/krb5/krb5-kdc
new file mode 100644
index 000000000..05a03411e
--- /dev/null
+++ b/testing/krb5/krb5-kdc
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/krb5kdc`
+case "$1" in
+ start)
+ stat_busy "Starting Kerberos Authentication"
+ if [ -z "$PID" ]; then
+ /usr/sbin/krb5kdc
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon krb5-kdc
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Kerberos Authentication"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon krb5-kdc
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+ ;;
+esac
+exit 0
diff --git a/testing/krb5/krb5-kpropd b/testing/krb5/krb5-kpropd
new file mode 100644
index 000000000..a0077d68e
--- /dev/null
+++ b/testing/krb5/krb5-kpropd
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/kpropd`
+case "$1" in
+ start)
+ stat_busy "Starting Kerberos Database Propagation Daemon"
+ if [ -z "$PID" ]; then
+ /usr/sbin/kpropd -S
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon kpropd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Kerberos Database Propagation Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon kpropd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+ ;;
+esac
+exit 0
diff --git a/testing/less/PKGBUILD b/testing/less/PKGBUILD
new file mode 100644
index 000000000..15b855a33
--- /dev/null
+++ b/testing/less/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 141923 2011-11-03 07:35:28Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=less
+pkgver=444
+pkgrel=2
+pkgdesc="A terminal based program for viewing text files"
+license=('GPL3')
+arch=('i686' 'x86_64')
+url="http://www.greenwoodsoftware.com/less"
+groups=('base')
+depends=('ncurses' 'pcre')
+source=(http://www.greenwoodsoftware.com/$pkgname/$pkgname-$pkgver.tar.gz{,.sig})
+md5sums=('56f9f76ffe13f70155f47f6b3c87d421'
+ 'd5fafbd94a9cfdeaad0c82143a033fe5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc --with-regex=pcre
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make prefix="${pkgdir}"/usr install
+ install -dm755 "${pkgdir}"/bin
+ mv "${pkgdir}"/usr/bin/${pkgname} "${pkgdir}"/bin
+}
diff --git a/testing/libcap/PKGBUILD b/testing/libcap/PKGBUILD
new file mode 100644
index 000000000..fd51da547
--- /dev/null
+++ b/testing/libcap/PKGBUILD
@@ -0,0 +1,27 @@
+#$Id: PKGBUILD 141933 2011-11-03 09:57:57Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Hugo Doria <hugo@archlinux.org>
+
+pkgname=libcap
+pkgver=2.22
+pkgrel=2
+pkgdesc="POSIX 1003.1e capabilities"
+arch=('i686' 'x86_64')
+url="http://sites.google.com/site/fullycapable/"
+license=('GPL2')
+depends=('glibc' 'attr')
+source=(http://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/${pkgname}-${pkgver}.tar.gz{,.asc})
+md5sums=('b4896816b626bea445f0b3849bdd4077'
+ '9d0983e25e5a251d098507f9561d2b27')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make prefix=/usr DESTDIR=${pkgdir} LIBDIR=${pkgdir}/lib RAISE_SETFCAP=no install
+ rm ${pkgdir}/lib/*.a
+ chmod 755 ${pkgdir}/lib/libcap.so.${pkgver}
+}
diff --git a/testing/libpcap/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch b/testing/libpcap/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch
new file mode 100644
index 000000000..1fce472b7
--- /dev/null
+++ b/testing/libpcap/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch
@@ -0,0 +1,344 @@
+From bc937fc4ff6715e9bee939041fa02be0755d7d58 Mon Sep 17 00:00:00 2001
+From: Guy Harris <guy@alum.mit.edu>
+Date: Sat, 13 Nov 2010 17:42:47 -0800
+Subject: [PATCH] Add support for libnl 2.x, adapted from a newer version of the iw command.
+
+---
+ config.h.in | 3 ++
+ configure | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
+ configure.in | 40 ++++++++++++++++++----
+ pcap-linux.c | 58 ++++++++++++++++++++++++-------
+ 4 files changed, 184 insertions(+), 25 deletions(-)
+
+diff --git a/config.h.in b/config.h.in
+index f988e8f..3b9ce3c 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -52,6 +52,9 @@
+ /* if libnl exists */
+ #undef HAVE_LIBNL
+
++/* if libnl exists and is version 2.x */
++#undef HAVE_LIBNL_2_x
++
+ /* Define to 1 if you have the <limits.h> header file. */
+ #undef HAVE_LIMITS_H
+
+diff --git a/configure b/configure
+index c99c1ab..7338dee 100755
+--- a/configure
++++ b/configure
+@@ -7340,7 +7340,93 @@ fi
+
+
+ if test x$with_libnl != xno ; then
+- { echo "$as_me:$LINENO: checking for nl_handle_alloc in -lnl" >&5
++ #
++ # Try libnl 2.x first.
++ #
++ { echo "$as_me:$LINENO: checking for nl_socket_alloc in -lnl" >&5
++echo $ECHO_N "checking for nl_socket_alloc in -lnl... $ECHO_C" >&6; }
++if test "${ac_cv_lib_nl_nl_socket_alloc+set}" = set; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ ac_check_lib_save_LIBS=$LIBS
++LIBS="-lnl $LIBS"
++cat >conftest.$ac_ext <<_ACEOF
++/* confdefs.h. */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h. */
++
++/* Override any GCC internal prototype to avoid an error.
++ Use char because int might match the return type of a GCC
++ builtin and then its argument prototype would still apply. */
++#ifdef __cplusplus
++extern "C"
++#endif
++char nl_socket_alloc ();
++int
++main ()
++{
++return nl_socket_alloc ();
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (ac_try="$ac_link"
++case "(($ac_try" in
++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
++ *) ac_try_echo=$ac_try;;
++esac
++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
++ (eval "$ac_link") 2>conftest.er1
++ ac_status=$?
++ grep -v '^ *+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && {
++ test -z "$ac_c_werror_flag" ||
++ test ! -s conftest.err
++ } && test -s conftest$ac_exeext &&
++ $as_test_x conftest$ac_exeext; then
++ ac_cv_lib_nl_nl_socket_alloc=yes
++else
++ echo "$as_me: failed program was:" >&5
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_cv_lib_nl_nl_socket_alloc=no
++fi
++
++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
++ conftest$ac_exeext conftest.$ac_ext
++LIBS=$ac_check_lib_save_LIBS
++fi
++{ echo "$as_me:$LINENO: result: $ac_cv_lib_nl_nl_socket_alloc" >&5
++echo "${ECHO_T}$ac_cv_lib_nl_nl_socket_alloc" >&6; }
++if test $ac_cv_lib_nl_nl_socket_alloc = yes; then
++
++ #
++ # Yes, we have libnl 2.x.
++ #
++ LIBS="-lnl-genl -lnl $LIBS"
++
++cat >>confdefs.h <<\_ACEOF
++#define HAVE_LIBNL 1
++_ACEOF
++
++
++cat >>confdefs.h <<\_ACEOF
++#define HAVE_LIBNL_2_x 1
++_ACEOF
++
++
++else
++
++ #
++ # No, we don't; do we have libnl 1.x?
++ #
++ { echo "$as_me:$LINENO: checking for nl_handle_alloc in -lnl" >&5
+ echo $ECHO_N "checking for nl_handle_alloc in -lnl... $ECHO_C" >&6; }
+ if test "${ac_cv_lib_nl_nl_handle_alloc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+@@ -7402,18 +7488,30 @@ fi
+ { echo "$as_me:$LINENO: result: $ac_cv_lib_nl_nl_handle_alloc" >&5
+ echo "${ECHO_T}$ac_cv_lib_nl_nl_handle_alloc" >&6; }
+ if test $ac_cv_lib_nl_nl_handle_alloc = yes; then
+- LIBS="-lnl $LIBS"
++
++ #
++ # Yes.
++ #
++ LIBS="-lnl $LIBS"
+
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_LIBNL 1
+ _ACEOF
+
++
+ else
+- if test x$with_libnl = xyes ; then
+- { { echo "$as_me:$LINENO: error: libnl support requested but libnl not found" >&5
++
++ #
++ # No, we don't have libnl at all.
++ #
++ if test x$with_libnl = xyes ; then
++ { { echo "$as_me:$LINENO: error: libnl support requested but libnl not found" >&5
+ echo "$as_me: error: libnl support requested but libnl not found" >&2;}
+ { (exit 1); exit 1; }; }
+- fi
++ fi
++
++fi
++
+
+ fi
+
+diff --git a/configure.in b/configure.in
+index 16eadf9..ef801ed 100644
+--- a/configure.in
++++ b/configure.in
+@@ -445,13 +445,39 @@ linux)
+ with_libnl=$withval,,)
+
+ if test x$with_libnl != xno ; then
+- AC_CHECK_LIB(nl, nl_handle_alloc,
+- LIBS="-lnl $LIBS"
+- AC_DEFINE(HAVE_LIBNL,1,[if libnl exists]),
+- if test x$with_libnl = xyes ; then
+- AC_MSG_ERROR([libnl support requested but libnl not found])
+- fi
+- )
++ #
++ # Try libnl 2.x first.
++ #
++ AC_CHECK_LIB(nl, nl_socket_alloc,
++ [
++ #
++ # Yes, we have libnl 2.x.
++ #
++ LIBS="-lnl-genl -lnl $LIBS"
++ AC_DEFINE(HAVE_LIBNL,1,[if libnl exists])
++ AC_DEFINE(HAVE_LIBNL_2_x,1,[if libnl exists and is version 2.x])
++ ],
++ [
++ #
++ # No, we don't; do we have libnl 1.x?
++ #
++ AC_CHECK_LIB(nl, nl_handle_alloc,
++ [
++ #
++ # Yes.
++ #
++ LIBS="-lnl $LIBS"
++ AC_DEFINE(HAVE_LIBNL,1,[if libnl exists])
++ ],
++ [
++ #
++ # No, we don't have libnl at all.
++ #
++ if test x$with_libnl = xyes ; then
++ AC_MSG_ERROR([libnl support requested but libnl not found])
++ fi
++ ])
++ ])
+ fi
+
+ AC_LBL_TPACKET_STATS
+diff --git a/pcap-linux.c b/pcap-linux.c
+index f8b3f10..deabbc4 100644
+--- a/pcap-linux.c
++++ b/pcap-linux.c
+@@ -527,8 +527,37 @@ get_mac80211_phydev(pcap_t *handle, const char *device, char *phydev_path,
+ return 1;
+ }
+
++#ifndef HAVE_LIBNL_2_x
++/* libnl 2.x compatibility code */
++
++#define nl_sock nl_handle
++
++static inline struct nl_handle *
++nl_socket_alloc(void)
++{
++ return nl_handle_alloc();
++}
++
++static inline void
++nl_socket_free(struct nl_handle *h)
++{
++ nl_handle_destroy(h);
++}
++
++static inline int
++__genl_ctrl_alloc_cache(struct nl_handle *h, struct nl_cache **cache)
++{
++ struct nl_cache *tmp = genl_ctrl_alloc_cache(h);
++ if (!tmp)
++ return -ENOMEM;
++ *cache = tmp;
++ return 0;
++}
++#define genl_ctrl_alloc_cache __genl_ctrl_alloc_cache
++#endif /* !HAVE_LIBNL_2_x */
++
+ struct nl80211_state {
+- struct nl_handle *nl_handle;
++ struct nl_sock *nl_sock;
+ struct nl_cache *nl_cache;
+ struct genl_family *nl80211;
+ };
+@@ -536,23 +565,26 @@ struct nl80211_state {
+ static int
+ nl80211_init(pcap_t *handle, struct nl80211_state *state, const char *device)
+ {
+- state->nl_handle = nl_handle_alloc();
+- if (!state->nl_handle) {
++ int err;
++
++ state->nl_sock = nl_socket_alloc();
++ if (!state->nl_sock) {
+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+ "%s: failed to allocate netlink handle", device);
+ return PCAP_ERROR;
+ }
+
+- if (genl_connect(state->nl_handle)) {
++ if (genl_connect(state->nl_sock)) {
+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+ "%s: failed to connect to generic netlink", device);
+ goto out_handle_destroy;
+ }
+
+- state->nl_cache = genl_ctrl_alloc_cache(state->nl_handle);
+- if (!state->nl_cache) {
++ err = genl_ctrl_alloc_cache(state->nl_sock, &state->nl_cache);
++ if (err < 0) {
+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+- "%s: failed to allocate generic netlink cache", device);
++ "%s: failed to allocate generic netlink cache: %s",
++ device, strerror(-err));
+ goto out_handle_destroy;
+ }
+
+@@ -568,7 +600,7 @@ nl80211_init(pcap_t *handle, struct nl80211_state *state, const char *device)
+ out_cache_free:
+ nl_cache_free(state->nl_cache);
+ out_handle_destroy:
+- nl_handle_destroy(state->nl_handle);
++ nl_socket_free(state->nl_sock);
+ return PCAP_ERROR;
+ }
+
+@@ -577,7 +609,7 @@ nl80211_cleanup(struct nl80211_state *state)
+ {
+ genl_family_put(state->nl80211);
+ nl_cache_free(state->nl_cache);
+- nl_handle_destroy(state->nl_handle);
++ nl_socket_free(state->nl_sock);
+ }
+
+ static int
+@@ -605,7 +637,7 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state,
+ NLA_PUT_STRING(msg, NL80211_ATTR_IFNAME, mondevice);
+ NLA_PUT_U32(msg, NL80211_ATTR_IFTYPE, NL80211_IFTYPE_MONITOR);
+
+- err = nl_send_auto_complete(state->nl_handle, msg);
++ err = nl_send_auto_complete(state->nl_sock, msg);
+ if (err < 0) {
+ if (err == -ENFILE) {
+ /*
+@@ -626,7 +658,7 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state,
+ return PCAP_ERROR;
+ }
+ }
+- err = nl_wait_for_ack(state->nl_handle);
++ err = nl_wait_for_ack(state->nl_sock);
+ if (err < 0) {
+ if (err == -ENFILE) {
+ /*
+@@ -685,7 +717,7 @@ del_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state,
+ 0, NL80211_CMD_DEL_INTERFACE, 0);
+ NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, ifindex);
+
+- err = nl_send_auto_complete(state->nl_handle, msg);
++ err = nl_send_auto_complete(state->nl_sock, msg);
+ if (err < 0) {
+ if (err == -ENFILE) {
+ /*
+@@ -706,7 +738,7 @@ del_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state,
+ return PCAP_ERROR;
+ }
+ }
+- err = nl_wait_for_ack(state->nl_handle);
++ err = nl_wait_for_ack(state->nl_sock);
+ if (err < 0) {
+ if (err == -ENFILE) {
+ /*
+--
+1.7.3.5
+
diff --git a/testing/libpcap/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch b/testing/libpcap/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch
new file mode 100644
index 000000000..219494200
--- /dev/null
+++ b/testing/libpcap/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch
@@ -0,0 +1,159 @@
+From 9545ff8e2670db02652f9cf781aafdd6bac58ac4 Mon Sep 17 00:00:00 2001
+From: Guy Harris <guy@alum.mit.edu>
+Date: Sun, 14 Nov 2010 13:48:19 -0800
+Subject: [PATCH] Libnl 2.x returns its own error codes, not errnos; handle that.
+
+While we're at it, don't special-case ENFILE for "delete monitor device"
+operations; that's not like "add monitor device", where we want to drive
+on if a device with that name already exists.
+---
+ pcap-linux.c | 76 ++++++++++++++++++++++++++--------------------------------
+ 1 files changed, 34 insertions(+), 42 deletions(-)
+
+diff --git a/pcap-linux.c b/pcap-linux.c
+index deabbc4..5d291e9 100644
+--- a/pcap-linux.c
++++ b/pcap-linux.c
+@@ -527,7 +527,9 @@ get_mac80211_phydev(pcap_t *handle, const char *device, char *phydev_path,
+ return 1;
+ }
+
+-#ifndef HAVE_LIBNL_2_x
++#ifdef HAVE_LIBNL_2_x
++#define get_nl_errmsg nl_geterror
++#else
+ /* libnl 2.x compatibility code */
+
+ #define nl_sock nl_handle
+@@ -544,6 +546,8 @@ nl_socket_free(struct nl_handle *h)
+ nl_handle_destroy(h);
+ }
+
++#define get_nl_errmsg strerror
++
+ static inline int
+ __genl_ctrl_alloc_cache(struct nl_handle *h, struct nl_cache **cache)
+ {
+@@ -584,7 +588,7 @@ nl80211_init(pcap_t *handle, struct nl80211_state *state, const char *device)
+ if (err < 0) {
+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+ "%s: failed to allocate generic netlink cache: %s",
+- device, strerror(-err));
++ device, get_nl_errmsg(-err));
+ goto out_handle_destroy;
+ }
+
+@@ -639,10 +643,17 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state,
+
+ err = nl_send_auto_complete(state->nl_sock, msg);
+ if (err < 0) {
++#ifdef HAVE_LIBNL_2_x
++ if (err == -NLE_FAILURE) {
++#else
+ if (err == -ENFILE) {
++#endif
+ /*
+ * Device not available; our caller should just
+- * keep trying.
++ * keep trying. (libnl 2.x maps ENFILE to
++ * NLE_FAILURE; it can also map other errors
++ * to that, but there's not much we can do
++ * about that.)
+ */
+ nlmsg_free(msg);
+ return 0;
+@@ -653,17 +664,24 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state,
+ */
+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+ "%s: nl_send_auto_complete failed adding %s interface: %s",
+- device, mondevice, strerror(-err));
++ device, mondevice, get_nl_errmsg(-err));
+ nlmsg_free(msg);
+ return PCAP_ERROR;
+ }
+ }
+ err = nl_wait_for_ack(state->nl_sock);
+ if (err < 0) {
++#ifdef HAVE_LIBNL_2_x
++ if (err == -NLE_FAILURE) {
++#else
+ if (err == -ENFILE) {
++#endif
+ /*
+ * Device not available; our caller should just
+- * keep trying.
++ * keep trying. (libnl 2.x maps ENFILE to
++ * NLE_FAILURE; it can also map other errors
++ * to that, but there's not much we can do
++ * about that.)
+ */
+ nlmsg_free(msg);
+ return 0;
+@@ -674,7 +692,7 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state,
+ */
+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+ "%s: nl_wait_for_ack failed adding %s interface: %s",
+- device, mondevice, strerror(-err));
++ device, mondevice, get_nl_errmsg(-err));
+ nlmsg_free(msg);
+ return PCAP_ERROR;
+ }
+@@ -719,45 +737,19 @@ del_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state,
+
+ err = nl_send_auto_complete(state->nl_sock, msg);
+ if (err < 0) {
+- if (err == -ENFILE) {
+- /*
+- * Device not available; our caller should just
+- * keep trying.
+- */
+- nlmsg_free(msg);
+- return 0;
+- } else {
+- /*
+- * Real failure, not just "that device is not
+- * available.
+- */
+- snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+- "%s: nl_send_auto_complete failed deleting %s interface: %s",
+- device, mondevice, strerror(-err));
+- nlmsg_free(msg);
+- return PCAP_ERROR;
+- }
++ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
++ "%s: nl_send_auto_complete failed deleting %s interface: %s",
++ device, mondevice, get_nl_errmsg(-err));
++ nlmsg_free(msg);
++ return PCAP_ERROR;
+ }
+ err = nl_wait_for_ack(state->nl_sock);
+ if (err < 0) {
+- if (err == -ENFILE) {
+- /*
+- * Device not available; our caller should just
+- * keep trying.
+- */
+- nlmsg_free(msg);
+- return 0;
+- } else {
+- /*
+- * Real failure, not just "that device is not
+- * available.
+- */
+- snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+- "%s: nl_wait_for_ack failed adding %s interface: %s",
+- device, mondevice, strerror(-err));
+- nlmsg_free(msg);
+- return PCAP_ERROR;
+- }
++ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
++ "%s: nl_wait_for_ack failed adding %s interface: %s",
++ device, mondevice, get_nl_errmsg(-err));
++ nlmsg_free(msg);
++ return PCAP_ERROR;
+ }
+
+ /*
+--
+1.7.3.5
+
diff --git a/testing/libpcap/PKGBUILD b/testing/libpcap/PKGBUILD
new file mode 100644
index 000000000..ee36e3354
--- /dev/null
+++ b/testing/libpcap/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 141970 2011-11-03 18:57:47Z thomas $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+
+pkgname=libpcap
+pkgver=1.1.1
+pkgrel=4
+pkgdesc="A system-independent interface for user-level packet capture"
+arch=('i686' 'x86_64')
+url="http://www.tcpdump.org/"
+license=('BSD')
+depends=('glibc' 'libnl' 'sh')
+makedepends=('flex')
+source=(http://www.tcpdump.org/release/libpcap-${pkgver}.tar.gz)
+ #Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch
+ #Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch)
+sha256sums=('508cca15547e55d1318498b838456a21770c450beb2dc7d7d4a96d90816e5a85')
+ #'194aa268a3397be3ba406b7102dbdbc14fc16c6e4b535d0a0fab6b04d414563a'
+ #'f1f31c3e2b064f4c9d0e643e8ed1874a65ec17f770362f8ffa3b3f9ee9dc71bb')
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ #patch -p1 -i "${srcdir}"/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch
+ #patch -p1 -i "${srcdir}"/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch
+ ./configure --prefix=/usr --enable-ipv6
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -d -m755 ${pkgdir}/usr/bin
+ make DESTDIR=${pkgdir} install
+ # remove static library
+ rm -rf ${pkgdir}/usr/lib/libpcap.a
+
+ # backwards compatibility, programs often look for net/bpf.h
+ mkdir -p ${pkgdir}/usr/include/net
+ cd ${pkgdir}/usr/include/net
+ ln -s ../pcap-bpf.h bpf.h
+
+ #install the license
+ install -D -m644 ${srcdir}/$pkgname-$pkgver/LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/testing/librpcsecgss/PKGBUILD b/testing/librpcsecgss/PKGBUILD
new file mode 100644
index 000000000..b492e3218
--- /dev/null
+++ b/testing/librpcsecgss/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 141978 2011-11-03 20:10:28Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Andrew Krawchyk <krawch_a@denison.edu>, Marco Lima <cipparello gmail com>
+
+pkgname=librpcsecgss
+pkgver=0.19
+pkgrel=7
+pkgdesc="Library for RPCSECGSS support"
+arch=('i686' 'x86_64')
+url="http://www.citi.umich.edu/projects/nfsv4/linux/"
+license=('GPL')
+depends=('glibc' 'krb5' 'libgssglue')
+makedepends=('pkg-config' 'autoconf')
+options=('!libtool')
+source=("http://www.citi.umich.edu/projects/nfsv4/linux/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('b45ed565bdc3099023aa35830ec92997')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+check() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make check
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/testing/librpcsecgss/librpcsecgss-0.18-heimdal.patch b/testing/librpcsecgss/librpcsecgss-0.18-heimdal.patch
new file mode 100644
index 000000000..deb039123
--- /dev/null
+++ b/testing/librpcsecgss/librpcsecgss-0.18-heimdal.patch
@@ -0,0 +1,33 @@
+diff -NaurwB librpcsecgss-0.18.orig/configure.in librpcsecgss-0.18/configure.in
+--- librpcsecgss-0.18.orig/configure.in 2008-04-09 00:05:40.000000000 +0200
++++ librpcsecgss-0.18/configure.in 2008-06-12 19:05:51.000000000 +0200
+@@ -12,10 +12,15 @@
+ AC_PROG_RANLIB
+
+ # Checks for libraries.
+-PKG_CHECK_MODULES([GSSGLUE], [libgssglue >= 0.1], [],
++PKG_CHECK_MODULES([GSSGLUE], [libgssglue >= 0.1],
++ [echo GSSGLUE found; GSSAPI_IMPLEMENTATION=libgssglue],
++ [PKG_CHECK_MODULES([GSSGLUE], [heimdal-gssapi],
++ [echo HEIMDAL found; GSSAPI_IMPLEMENTATION=heimdal-gssapi],
+ [AC_MSG_ERROR([Unable to locate information required to use libgssglue.
+ If you have pkgconfig installed, you might try setting environment
+- variable PKG_CONFIG_PATH to /usr/local/lib/pkgconfig])])
++ variable PKG_CONFIG_PATH to /usr/local/lib/pkgconfig])])])
++
++AC_SUBST([GSSAPI_IMPLEMENTATION])
+
+ # Checks for header files.
+ AC_HEADER_STDC
+diff -NaurwB librpcsecgss-0.18.orig/librpcsecgss.pc.in librpcsecgss-0.18/librpcsecgss.pc.in
+--- librpcsecgss-0.18.orig/librpcsecgss.pc.in 2007-09-06 17:39:04.000000000 +0200
++++ librpcsecgss-0.18/librpcsecgss.pc.in 2008-06-12 19:06:40.000000000 +0200
+@@ -5,7 +5,7 @@
+
+ Name: librpcsecgss
+ Description: Library that implements rpcsec_gss interface.
+-Requires: libgssglue
++Requires: @GSSAPI_IMPLEMENTATION@
+ Version: @PACKAGE_VERSION@
+ Libs: -L@libdir@ -lrpcsecgss
+ Cflags: -I@includedir@/rpcsecgss
diff --git a/testing/libusb-compat/PKGBUILD b/testing/libusb-compat/PKGBUILD
new file mode 100644
index 000000000..1e8f2a3d9
--- /dev/null
+++ b/testing/libusb-compat/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 142008 2011-11-03 22:50:48Z andrea $
+# Maintainer:
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: arjan <arjan@archlinux.org>
+
+pkgname=libusb-compat
+pkgver=0.1.3
+pkgrel=2
+pkgdesc="Library to enable user space application programs to communicate with USB devices"
+arch=('i686' 'x86_64')
+depends=('libusb' 'sh')
+url="http://libusb.sourceforge.net/"
+license=('LGPL')
+source=("http://downloads.sourceforge.net/${pkgname%-*}/${pkgname}-${pkgver%.*}/$pkgname-$pkgver/${pkgname}-${pkgver}.tar.bz2")
+options=('!libtool')
+md5sums=('570ac2ea085b80d1f74ddc7c6a93c0eb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR=${pkgdir} install
+}
diff --git a/testing/libusb/PKGBUILD b/testing/libusb/PKGBUILD
new file mode 100644
index 000000000..f99afb302
--- /dev/null
+++ b/testing/libusb/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 141981 2011-11-03 20:12:06Z tpowa $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=libusb
+pkgver=1.0.8
+pkgrel=2
+depends=('glibc')
+pkgdesc="Library to enable user space application programs to communicate with USB devices."
+arch=(i686 x86_64)
+url="http://libusb.sourceforge.net/"
+license=('LGPL')
+source=(http://downloads.sourceforge.net/libusb/libusb-${pkgver}.tar.bz2)
+options=(!libtool)
+replaces=(libusb1)
+md5sums=('37d34e6eaa69a4b645a19ff4ca63ceef')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+check() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make check
+}
+
+package () {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/linux-atm/PKGBUILD b/testing/linux-atm/PKGBUILD
new file mode 100644
index 000000000..ad76db0b5
--- /dev/null
+++ b/testing/linux-atm/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 141992 2011-11-03 20:43:33Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Surain Mallawa Arachchi <mas@crc32.net>
+
+pkgname=linux-atm
+pkgver=2.5.2
+pkgrel=1
+pkgdesc="Drivers and tools to support ATM networking under Linux."
+arch=('i686' 'x86_64')
+depends=('glibc')
+url="http://linux-atm.sourceforge.net/"
+license=(GPL)
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ man-pages.patch)
+options=(!libtool !makeflags)
+md5sums=('d49499368c3cf15f73a05d9bce8824a8'
+ '181390736336cdb615ae32f1ae5acfa6')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i ../man-pages.patch
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/linux-atm/man-pages.patch b/testing/linux-atm/man-pages.patch
new file mode 100644
index 000000000..c504cfe87
--- /dev/null
+++ b/testing/linux-atm/man-pages.patch
@@ -0,0 +1,45 @@
+diff -up linux-atm-2.5.1/src/led/zeppelin.8.fixman linux-atm-2.5.1/src/led/zeppelin.8
+--- linux-atm-2.5.1/src/led/zeppelin.8.fixman 2003-05-02 19:35:04.000000000 +0200
++++ linux-atm-2.5.1/src/led/zeppelin.8 2010-10-13 12:58:18.000000000 +0200
+@@ -99,7 +99,7 @@ Ring and ATM parts of the ELAN, so using
+ recommended. Token Ring support has received less testing than its
+ Ethernet counterpart.
+ .SH FILES
+-.IP \fI/var/run/lec[interface number].pid\fP
++\fI/var/run/lec[interface number].pid\fP
+ The file containing the process id of zeppelin.
+ .SH BUGS
+ John Bonham died 1980 and Led Zeppelin broke.
+diff -up linux-atm-2.5.1/src/mpoad/mpcd.8.fixman linux-atm-2.5.1/src/mpoad/mpcd.8
+--- linux-atm-2.5.1/src/mpoad/mpcd.8.fixman 2001-10-10 00:33:07.000000000 +0200
++++ linux-atm-2.5.1/src/mpoad/mpcd.8 2010-10-13 12:59:14.000000000 +0200
+@@ -28,7 +28,7 @@ mpcd \- ATM MPOA (Multi\-Protocol Over A
+ .B ]]
+ .SH DESCRIPTION
+ MPOA client
+-.SM(MPC) is responsible for creating and receiving
++.SM (MPC) is responsible for creating and receiving
+ internetwork layer shortcuts. Using these shortcuts MPCs forward
+ unicast internetwork layer packets effectively over ATM without need
+ for routing protocols.
+@@ -43,7 +43,7 @@ accepts shortcuts and packets arriving o
+ shortcuts is done with the help of
+ .SM MPOA
+ server
+-.SM(MPS).
++.SM (MPS).
+ .PP
+ Just as the Linux
+ .SM LAN
+diff -up linux-atm-2.5.1/src/sigd/atmsigd.conf.4.fixman linux-atm-2.5.1/src/sigd/atmsigd.conf.4
+--- linux-atm-2.5.1/src/sigd/atmsigd.conf.4.fixman 2001-10-10 00:33:07.000000000 +0200
++++ linux-atm-2.5.1/src/sigd/atmsigd.conf.4 2010-10-13 12:58:49.000000000 +0200
+@@ -125,7 +125,7 @@ a comment. The `#' character cannot be e
+ .P
+ If an option is specified in \fBatmsigd.conf\fP and on the command
+ line, the command line has priority.
+-.COMPATIBILITY
++.SH COMPATIBILITY
+ Certain options used by past versions of \fBatmsigd\fP but no longer documented
+ on the man page are still recognized and supported, but they also yield a
+ warning message. Future versions of \fBatmsigd\fP will not recognize those
diff --git a/testing/m4/PKGBUILD b/testing/m4/PKGBUILD
new file mode 100644
index 000000000..917fbdad3
--- /dev/null
+++ b/testing/m4/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 141937 2011-11-03 10:57:23Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=m4
+pkgver=1.4.16
+pkgrel=2
+pkgdesc="The GNU macro processor"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/m4"
+license=('GPL3')
+groups=('base-devel')
+depends=('glibc' 'bash')
+install=m4.install
+source=(ftp://ftp.gnu.org/gnu/m4/$pkgname-$pkgver.tar.xz{,.sig}
+ m4-1.4.16-readlink-einval.patch)
+md5sums=('7548ec061a1ba993790159764f522d0e'
+ 'eebe5c94e74e7551e2e30c5844f1b653'
+ 'cea138fa9b568d06e46269611cec8dd0')
+
+build() {
+ cd ${srcdir}/$pkgname-$pkgver
+ patch -Np1 -i $srcdir/m4-1.4.16-readlink-einval.patch
+ ./configure --prefix=/usr
+ make
+}
+
+check() {
+ cd ${srcdir}/$pkgname-$pkgver
+ make check
+}
+
+package() {
+ cd ${srcdir}/$pkgname-$pkgver
+ make prefix=${pkgdir}/usr install
+}
diff --git a/testing/m4/m4-1.4.16-readlink-einval.patch b/testing/m4/m4-1.4.16-readlink-einval.patch
new file mode 100644
index 000000000..6a987510d
--- /dev/null
+++ b/testing/m4/m4-1.4.16-readlink-einval.patch
@@ -0,0 +1,12 @@
+diff -up m4-1.4.16/tests/test-readlink.h.orig m4-1.4.16/tests/test-readlink.h
+--- m4-1.4.16/tests/test-readlink.h.orig 2011-09-19 12:44:58.745546826 +0200
++++ m4-1.4.16/tests/test-readlink.h 2011-09-19 12:46:00.079548410 +0200
+@@ -38,7 +38,7 @@ test_readlink (ssize_t (*func) (char con
+ ASSERT (errno == ENOENT);
+ errno = 0;
+ ASSERT (func ("", buf, sizeof buf) == -1);
+- ASSERT (errno == ENOENT);
++ ASSERT (errno == ENOENT || errno == EINVAL);
+ errno = 0;
+ ASSERT (func (".", buf, sizeof buf) == -1);
+ ASSERT (errno == EINVAL);
diff --git a/testing/m4/m4.install b/testing/m4/m4.install
new file mode 100644
index 000000000..be4138170
--- /dev/null
+++ b/testing/m4/m4.install
@@ -0,0 +1,20 @@
+infodir=usr/share/info
+filelist=(m4.info m4.info-1 m4.info-2)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
diff --git a/testing/mediastreamer/PKGBUILD b/testing/mediastreamer/PKGBUILD
new file mode 100644
index 000000000..e1a2b09f3
--- /dev/null
+++ b/testing/mediastreamer/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 142151 2011-11-05 11:38:00Z ibiru $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: AdriĂ  Arrufat <swiftscythe@gmail.com>
+
+pkgname=mediastreamer
+pkgver=2.7.3
+pkgrel=4
+pkgdesc="A library written in C that allows you to create and run audio and video streams"
+arch=('i686' 'x86_64')
+url="http://www.linphone.org/"
+license=('GPL')
+depends=('ortp' 'speex' 'v4l-utils' 'ffmpeg')
+makedepends=('cmake' 'automoc4')
+source=("http://download-mirror.savannah.gnu.org/releases/linphone/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ "disable-v4l1.patch")
+md5sums=('5213307f557d86aa648f1a53a885138c'
+ '7ee15689eed1adbdcf0ddab8fadca34a')
+options=('!libtool')
+
+build() {
+ cd "${srcdir}"/$pkgname-$pkgver/
+ patch -p2 -i "${srcdir}"/disable-v4l1.patch
+
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib/mediastreamer/
+ make
+}
+
+package() {
+ cd "${srcdir}"/$pkgname-$pkgver
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/mediastreamer/disable-v4l1.patch b/testing/mediastreamer/disable-v4l1.patch
new file mode 100644
index 000000000..9f6cb84d4
--- /dev/null
+++ b/testing/mediastreamer/disable-v4l1.patch
@@ -0,0 +1,50 @@
+diff -wbBur linphone-3.4.3/mediastreamer2/src/Makefile.am linphone-3.4.3.my/mediastreamer2/src/Makefile.am
+--- linphone-3.4.3/mediastreamer2/src/Makefile.am 2011-02-09 08:43:11.000000000 +0000
++++ linphone-3.4.3.my/mediastreamer2/src/Makefile.am 2011-04-01 14:54:04.000000000 +0000
+@@ -117,7 +117,7 @@
+ endif
+
+ if BUILD_V4L
+-libmediastreamer_la_SOURCES+=msv4l.c msv4l2.c
++libmediastreamer_la_SOURCES+=msv4l2.c
+ endif
+
+ if BUILD_WIN32
+diff -wbBur linphone-3.4.3/mediastreamer2/src/Makefile.in linphone-3.4.3.my/mediastreamer2/src/Makefile.in
+--- linphone-3.4.3/mediastreamer2/src/Makefile.in 2011-03-28 18:34:07.000000000 +0000
++++ linphone-3.4.3.my/mediastreamer2/src/Makefile.in 2011-04-01 14:55:00.000000000 +0000
+@@ -54,7 +54,7 @@
+ @BUILD_MACAQSND_TRUE@am__append_12 = aqsnd.c
+ @BUILD_PULSEAUDIO_TRUE@am__append_13 = pulseaudio.c
+ @BUILD_MACOSX_TRUE@@BUILD_VIDEO_TRUE@am__append_14 = msv4m.m
+-@BUILD_V4L_TRUE@@BUILD_VIDEO_TRUE@am__append_15 = msv4l.c msv4l2.c
++@BUILD_V4L_TRUE@@BUILD_VIDEO_TRUE@am__append_15 = msv4l2.c
+ @BUILD_VIDEO_TRUE@@BUILD_WIN32_TRUE@am__append_16 = msdscap-mingw.cc drawdib-display.c
+ @BUILD_THEORA_TRUE@@BUILD_VIDEO_TRUE@am__append_17 = theora.c
+ @BUILD_FFMPEG_TRUE@@BUILD_VIDEO_TRUE@am__append_18 = videoenc.c \
+@@ -135,7 +135,7 @@
+ audiostream.c msspeex.c speexec.c gsm.c winsnd3.c \
+ msfileplayer_win.c msfilerec_win.c msfileplayer.c msfilerec.c \
+ msresample.c alsa.c oss.c arts.c pasnd.c macsnd.c msiounit.c \
+- aqsnd.c pulseaudio.c msv4m.m msv4l.c msv4l2.c msdscap-mingw.cc \
++ aqsnd.c pulseaudio.c msv4m.m msv4l2.c msdscap-mingw.cc \
+ drawdib-display.c theora.c videoenc.c videodec.c pixconv.c \
+ sizeconv.c nowebcam.c nowebcam.h swscale.h ffmpeg-priv.h \
+ h264dec.c jpegwriter.c videoout.c x11video.c rfc2429.h \
+@@ -156,7 +156,7 @@
+ @BUILD_MACAQSND_TRUE@am__objects_12 = aqsnd.lo
+ @BUILD_PULSEAUDIO_TRUE@am__objects_13 = pulseaudio.lo
+ @BUILD_MACOSX_TRUE@@BUILD_VIDEO_TRUE@am__objects_14 = msv4m.lo
+-@BUILD_V4L_TRUE@@BUILD_VIDEO_TRUE@am__objects_15 = msv4l.lo msv4l2.lo
++@BUILD_V4L_TRUE@@BUILD_VIDEO_TRUE@am__objects_15 = msv4l2.lo
+ @BUILD_VIDEO_TRUE@@BUILD_WIN32_TRUE@am__objects_16 = msdscap-mingw.lo \
+ @BUILD_VIDEO_TRUE@@BUILD_WIN32_TRUE@ drawdib-display.lo
+ @BUILD_THEORA_TRUE@@BUILD_VIDEO_TRUE@am__objects_17 = theora.lo
+@@ -600,7 +600,6 @@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mssndcard.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msspeex.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msticker.Plo@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msv4l.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msv4l2.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msv4m.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvideo.Plo@am__quote@
diff --git a/testing/miro/PKGBUILD b/testing/miro/PKGBUILD
new file mode 100644
index 000000000..7219c5476
--- /dev/null
+++ b/testing/miro/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 142153 2011-11-05 11:38:04Z ibiru $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+
+pkgname=miro
+pkgver=4.0.3
+pkgrel=2
+pkgdesc="The free and open source internet TV platform"
+arch=('i686' 'x86_64')
+url="http://www.getmiro.com"
+license=('GPL2')
+depends=('dbus-python' 'pyrex' 'pygtk' 'gstreamer0.10' 'python2-gconf'
+ 'python-pysqlite' 'pywebkitgtk' 'shared-mime-info'
+ 'desktop-file-utils' 'gstreamer0.10' 'hicolor-icon-theme'
+ 'gstreamer0.10-python' 'python-notify' 'libtorrent-rasterbar'
+ 'gstreamer0.10-base-plugins' 'gstreamer0.10-good-plugins' 'python-pycurl'
+ 'gstreamer0.10-ffmpeg' 'ffmpeg' 'mutagen')
+makedepends=('pkg-config')
+install=miro.install
+options=('!makeflags')
+source=("http://ftp.osuosl.org/pub/pculture.org/${pkgname}/src/${pkgname}-${pkgver}.tar.gz"
+ 'ffmpeg.patch')
+sha1sums=('b08cd09d514d1af0b2403ab8dcd725b8c5d4b840'
+ 'f0c851d51318c0e0be8b91463ef901625d2587a9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/ffmpeg.patch"
+ cd linux
+
+ python2 setup.py install --root="${pkgdir}"
+
+ # fix miro startup script so --debug works with python2
+ sed -i "s|which python|which python2|" "${pkgdir}/usr/bin/miro"
+ sed -i "s|./miro.real|/usr/bin/miro.real|" "${pkgdir}/usr/bin/miro"
+}
diff --git a/testing/miro/ffmpeg.patch b/testing/miro/ffmpeg.patch
new file mode 100644
index 000000000..edf378459
--- /dev/null
+++ b/testing/miro/ffmpeg.patch
@@ -0,0 +1,95 @@
+diff -urN miro-4.0.old/linux/miro-segmenter.c miro-4.0/linux/miro-segmenter.c
+--- miro-4.0.old/linux/miro-segmenter.c 2011-05-25 15:58:21.000000000 +0200
++++ miro-4.0/linux/miro-segmenter.c 2011-05-25 16:09:41.000000000 +0200
+@@ -60,7 +60,7 @@
+ }
+
+ switch (input_codec_context->codec_type) {
+- case CODEC_TYPE_AUDIO:
++ case AVMEDIA_TYPE_AUDIO:
+ output_codec_context->channel_layout = input_codec_context->channel_layout;
+ output_codec_context->sample_rate = input_codec_context->sample_rate;
+ output_codec_context->channels = input_codec_context->channels;
+@@ -72,7 +72,7 @@
+ output_codec_context->block_align = input_codec_context->block_align;
+ }
+ break;
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ output_codec_context->pix_fmt = input_codec_context->pix_fmt;
+ output_codec_context->width = input_codec_context->width;
+ output_codec_context->height = input_codec_context->height;
+@@ -154,7 +154,7 @@
+ exit(1);
+ }
+
+- ofmt = guess_format("mpegts", NULL, NULL);
++ ofmt = av_guess_format("mpegts", NULL, NULL);
+ if (!ofmt) {
+ fprintf(stderr, "Could not find MPEG-TS muxer\n");
+ exit(1);
+@@ -174,12 +174,12 @@
+
+ for (i = 0; i < ic->nb_streams && (video_index < 0 || audio_index < 0); i++) {
+ switch (ic->streams[i]->codec->codec_type) {
+- case CODEC_TYPE_VIDEO:
++ case AVMEDIA_TYPE_VIDEO:
+ video_index = i;
+ ic->streams[i]->discard = AVDISCARD_NONE;
+ video_st = add_output_stream(oc, ic->streams[i]);
+ break;
+- case CODEC_TYPE_AUDIO:
++ case AVMEDIA_TYPE_AUDIO:
+ audio_index = i;
+ ic->streams[i]->discard = AVDISCARD_NONE;
+ audio_st = add_output_stream(oc, ic->streams[i]);
+@@ -195,7 +195,7 @@
+ exit(1);
+ }
+
+- dump_format(oc, 0, input, 1);
++ av_dump_format(oc, 0, input, 1);
+
+ if (video_st) {
+ codec = avcodec_find_decoder(video_st->codec->codec_id);
+@@ -208,7 +208,7 @@
+ }
+ }
+
+- if (url_fopen(&oc->pb, output_filename, URL_WRONLY) < 0) {
++ if (avio_open(&oc->pb, output_filename, URL_WRONLY) < 0) {
+ fprintf(stderr, "Could not open '%s'\n", output_filename);
+ exit(1);
+ }
+@@ -234,7 +234,7 @@
+ break;
+ }
+
+- if (packet.stream_index == video_index && (packet.flags & PKT_FLAG_KEY)) {
++ if (packet.stream_index == video_index && (packet.flags & AV_PKT_FLAG_KEY)) {
+ segment_time = (double)video_st->pts.val * video_st->time_base.num / video_st->time_base.den;
+ }
+ else if (video_index < 0) {
+@@ -245,10 +245,10 @@
+ }
+
+ if (segment_time - prev_segment_time >= segment_duration) {
+- put_flush_packet(oc->pb);
+- url_fclose(oc->pb);
++ avio_flush(oc->pb);
++ avio_close(oc->pb);
+
+- if (url_fopen(&oc->pb, output_filename, URL_WRONLY) < 0) {
++ if (avio_open(&oc->pb, output_filename, URL_WRONLY) < 0) {
+ fprintf(stderr, "Could not open '%s'\n", output_filename);
+ break;
+ }
+@@ -278,7 +278,7 @@
+ av_freep(&oc->streams[i]);
+ }
+
+- url_fclose(oc->pb);
++ avio_close(oc->pb);
+ av_free(oc);
+
+ return 0;
diff --git a/testing/miro/miro.install b/testing/miro/miro.install
new file mode 100644
index 000000000..a5ee228aa
--- /dev/null
+++ b/testing/miro/miro.install
@@ -0,0 +1,17 @@
+post_install() {
+ update-desktop-database -q
+ xdg-icon-resource forceupdate --theme hicolor
+ update-mime-database usr/share/mime > /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ update-desktop-database -q
+ xdg-icon-resource forceupdate --theme hicolor
+ update-mime-database usr/share/mime > /dev/null
+}
+
+
diff --git a/testing/mlocate/PKGBUILD b/testing/mlocate/PKGBUILD
new file mode 100644
index 000000000..aa7c002f3
--- /dev/null
+++ b/testing/mlocate/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 141941 2011-11-03 11:28:39Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: lydgate
+
+pkgname=mlocate
+pkgver=0.24
+pkgrel=2
+pkgdesc="Faster merging drop-in for slocate"
+arch=('i686' 'x86_64')
+url="http://carolina.mff.cuni.cz/~trmac/blog/mlocate"
+license=('GPL')
+conflicts=('slocate')
+provides=('slocate')
+replaces=('slocate')
+depends=('glibc' 'coreutils' 'sh')
+backup=('etc/updatedb.conf'
+ 'etc/cron.daily/updatedb')
+install=mlocate.install
+source=(https://fedorahosted.org/releases/m/l/mlocate/mlocate-$pkgver.tar.xz
+ updatedb.conf
+ updatedb.cron.daily)
+md5sums=('a9c221e5bc489a2ed710c943990137bd'
+ 'c374ff223f2e07b5e602ba22359f2335'
+ 'cde5da81bebad2de556ef2e43d895e13')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ sed -i '/^groupname /s/mlocate/locate/' Makefile.in
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib
+ make
+
+}
+
+check() {
+ cd $srcdir/$pkgname-$pkgver
+ make check
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # Set up a default updatedb.conf and a daily cronjob
+ install -Dm644 ${srcdir}/updatedb.conf $pkgdir/etc/updatedb.conf
+ install -Dm744 ${srcdir}/updatedb.cron.daily $pkgdir/etc/cron.daily/updatedb
+
+ # Install Mlocate
+ make DESTDIR=$pkgdir install
+
+ ln -sv locate $pkgdir/usr/bin/slocate
+ chgrp -v 21 $pkgdir/usr/bin/locate
+ chmod -v 2755 $pkgdir/usr/bin/locate
+
+ install -dm755 $pkgdir/var/lib
+ install -d -m750 -g21 $pkgdir/var/lib/locate
+}
diff --git a/testing/mlocate/mlocate.install b/testing/mlocate/mlocate.install
new file mode 100644
index 000000000..c7b7f9cf7
--- /dev/null
+++ b/testing/mlocate/mlocate.install
@@ -0,0 +1,18 @@
+post_install() {
+ post_upgrade "$1" "$1"
+ echo "mlocate command is technically locate, but slocate is symlinked and still works."
+ echo "You should run updatedb as root."
+}
+
+post_upgrade() {
+ # This can be removed after {m,x}locate have both been updated
+ getent group slocate &>/dev/null && usr/sbin/groupdel slocate &>/dev/null
+ getent group mlocate &>/dev/null && usr/sbin/groupdel mlocate &>/dev/null
+
+ getent group locate &>/dev/null || usr/sbin/groupadd -g 21 locate &>/dev/null
+ chown -R root:locate var/lib/mlocate
+}
+
+pre_remove() {
+ getent group locate &>/dev/null && usr/sbin/groupdel locate &>/dev/null
+}
diff --git a/testing/mlocate/updatedb.conf b/testing/mlocate/updatedb.conf
new file mode 100644
index 000000000..722b04205
--- /dev/null
+++ b/testing/mlocate/updatedb.conf
@@ -0,0 +1,5 @@
+# directories to exclude from the slocate database:
+PRUNEPATHS="/media /mnt /tmp /var/tmp /var/cache /var/lock /var/run /var/spool"
+
+# filesystems to exclude from the slocate database:
+PRUNEFS="afs auto autofs binfmt_misc cifs coda configfs cramfs debugfs devpts devtmpfs ftpfs iso9660 mqueue ncpfs nfs nfs4 proc ramfs securityfs shfs smbfs sshfs sysfs tmpfs udf usbfs vboxsf"
diff --git a/testing/mlocate/updatedb.cron.daily b/testing/mlocate/updatedb.cron.daily
new file mode 100755
index 000000000..cac9bb063
--- /dev/null
+++ b/testing/mlocate/updatedb.cron.daily
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# nicenesses range from -20 (most favorable scheduling) to 19 (least favorable)
+NICE=19
+
+# 0 for none, 1 for real time, 2 for best-effort, 3 for idle
+IONICE_CLASS=2
+
+# 0-7 (for IONICE_CLASS 1 and 2 only), 0=highest, 7=lowest
+IONICE_PRIORITY=7
+
+UPDATEDB="/usr/bin/updatedb"
+
+if [ -x /usr/bin/nice ]; then
+ UPDATEDB="/usr/bin/nice -n ${NICE:-19} ${UPDATEDB}"
+fi
+
+if [ -x /usr/bin/ionice ]; then
+ UPDATEDB="/usr/bin/ionice -c ${IONICE_CLASS:-2} -n ${IONICE_PRIORITY:-7} ${UPDATEDB}"
+fi
+
+# Update the "locate" database
+if [ -x /usr/bin/updatedb ]; then
+ if [ -f /etc/updatedb.conf ]; then
+ ${UPDATEDB}
+ else
+ ${UPDATEDB} -f proc
+ fi
+fi
diff --git a/testing/moc/PKGBUILD b/testing/moc/PKGBUILD
new file mode 100644
index 000000000..e7412df83
--- /dev/null
+++ b/testing/moc/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 142155 2011-11-05 11:38:06Z ibiru $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
+
+pkgname=moc
+pkgver=20110528
+pkgrel=4
+pkgdesc="An ncurses console audio player with support for the mp3, ogg, and wave formats"
+arch=('i686' 'x86_64')
+url="http://moc.daper.net/"
+license=('GPL')
+depends=('libmad' 'libid3tag' 'jack' 'curl' 'libltdl' 'file')
+makedepends=('speex' 'ffmpeg' 'taglib' 'libmpcdec' 'wavpack' 'libmodplug')
+optdepends=('speex: for using the speex plugin'
+ 'ffmpeg: for using the ffmpeg plugin'
+ 'taglib: for using the musepack plugin'
+ 'libmpcdec: for using the musepack plugin'
+ 'wavpack: for using the wavpack plugin'
+ 'libmodplug: for using the modplug plugin')
+options=('!libtool')
+source=(ftp://ftp.archlinux.org/other/moc/${pkgname}-${pkgver}.tar.xz \
+ gcc-undefined-symbols.diff moc-ffmpeg.patch)
+sha1sums=('f79049136ce6616bfd6af2f5e08246a5921441cf'
+ 'a811a4ac7e049914aab528d3f06a6be6634c2720'
+ 'f7e8eb17a89fea1c08c8a68f5afd1ffdc641ce9d')
+
+build() {
+ cd "${srcdir}/${pkgname}"
+ patch -p0 -i ../gcc-undefined-symbols.diff
+ patch -p0 -i ../moc-ffmpeg.patch
+
+# Disabling aac to use the external ffmpeg to play them (FS#13164)
+ ./autogen.sh
+ ./configure --prefix=/usr --without-rcc --without-aac \
+ --with-oss --with-alsa --with-jack --with-mp3 \
+ --with-musepack --with-vorbis --with-flac --with-wavpack \
+ --with-sndfile --with-modplug --with-ffmpeg --with-speex \
+ --with-samplerate --with-curl --disable-debug
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/moc/gcc-undefined-symbols.diff b/testing/moc/gcc-undefined-symbols.diff
new file mode 100644
index 000000000..09e9b8bda
--- /dev/null
+++ b/testing/moc/gcc-undefined-symbols.diff
@@ -0,0 +1,12 @@
+--- decoder.c~ 2011-05-08 09:28:28.077137883 +0200
++++ decoder.c 2011-05-10 21:40:48.887941968 +0200
+@@ -259,6 +259,9 @@
+ for (i = 0; i < plugins_num; i++)
+ if (plugins[i].decoder->destroy)
+ plugins[i].decoder->destroy ();
++ for (i = 0; i < plugins_num; i++)
++ if (plugins[i].handle)
++ lt_dlclose(plugins[i].handle);
+
+ if (lt_dlexit())
+ logit ("lt_exit() failed: %s", lt_dlerror());
diff --git a/testing/moc/moc-ffmpeg.patch b/testing/moc/moc-ffmpeg.patch
new file mode 100644
index 000000000..7554ea14e
--- /dev/null
+++ b/testing/moc/moc-ffmpeg.patch
@@ -0,0 +1,26 @@
+Index: decoder_plugins/ffmpeg/ffmpeg.c
+===================================================================
+--- decoder_plugins/ffmpeg/ffmpeg.c (revision 2307)
++++ decoder_plugins/ffmpeg/ffmpeg.c (working copy)
+@@ -28,12 +28,6 @@
+ #include <ffmpeg/avformat.h>
+ #endif
+
+-/* libavformat's API will be changing at version 53, but at present there
+- * appears to be no guidance on what will replace the deprecated fields. */
+-#ifndef FF_API_OLD_METADATA
+-#define FF_API_OLD_METADATA (LIBAVFORMAT_VERSION_MAJOR < 53)
+-#endif
+-
+ /* FFmpeg also likes common names, without that, our common.h and log.h
+ * would not be included. */
+ #undef COMMON_H
+@@ -137,7 +131,7 @@
+ av_read_play (data->ic);
+ for (i = 0; i < data->ic->nb_streams; i++) {
+ data->enc = data->ic->streams[i]->codec;
+- if (data->enc->codec_type == CODEC_TYPE_AUDIO) {
++ if (data->enc->codec_type == AVMEDIA_TYPE_AUDIO) {
+ audio_index = i;
+ break;
+ }
diff --git a/testing/module-init-tools/PKGBUILD b/testing/module-init-tools/PKGBUILD
new file mode 100644
index 000000000..587af1307
--- /dev/null
+++ b/testing/module-init-tools/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 142090 2011-11-05 00:45:30Z dreisner $
+# Maintainer: Dave Reisner <dreisner@archlinux.org>
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=module-init-tools
+pkgver=3.16
+pkgrel=2
+pkgdesc="Utilities needed by Linux systems for managing loadable kernel modules"
+arch=('i686' 'x86_64')
+url="https://modules.wiki.kernel.org"
+license=('GPL')
+depends=('glibc')
+makedepends=('docbook2x')
+backup=('etc/modprobe.d/modprobe.conf')
+source=("http://www.kernel.org/pub/linux/utils/kernel/$pkgname/$pkgname-$pkgver.tar.bz2"
+ modprobe.conf
+ docfix.patch)
+md5sums=('bc44832c6e41707b8447e2847d2019f5'
+ '325657db471b3190f685e5a89c9b90e3'
+ '4320d19902ded43bed55c804b065cdc7')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # fix headers in SGML manpage sources and an XML typo
+ patch -Np0 < "$srcdir/docfix.patch"
+
+ ./configure --prefix=/usr --exec-prefix=/ --enable-zlib
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR=$pkgdir install
+
+ # extra modprobe.d conf dir
+ install -dm755 "$pkgdir/lib/modprobe.d"
+
+ # Install our custom (read: empty) modprobe.conf
+ install -Dm644 "$srcdir/modprobe.conf" "$pkgdir/etc/modprobe.d/modprobe.conf"
+}
diff --git a/testing/module-init-tools/docfix.patch b/testing/module-init-tools/docfix.patch
new file mode 100644
index 000000000..0151ca3f1
--- /dev/null
+++ b/testing/module-init-tools/docfix.patch
@@ -0,0 +1,90 @@
+--- doc/depmod.conf.sgml.orig 2011-06-25 10:07:15.897805024 -0400
++++ doc/depmod.conf.sgml 2011-06-25 10:07:48.810805020 -0400
+@@ -1,4 +1,5 @@
+-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
++ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY docbook "<productname>DocBook</productname>">
+ <!ENTITY sgml "<abbrev>SGML</abbrev>">
+--- doc/depmod.sgml.orig 2011-06-25 10:07:15.898805024 -0400
++++ doc/depmod.sgml 2011-06-25 10:07:56.636805021 -0400
+@@ -1,4 +1,5 @@
+-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
++ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY docbook "<productname>DocBook</productname>">
+ <!ENTITY sgml "<abbrev>SGML</abbrev>">
+@@ -52,7 +52,7 @@
+ <arg><option>-n</option></arg>
+ <arg><option>-v</option></arg>
+ <arg><option>-P <replaceable>prefix</replaceable></option></arg>
+- <arg><option>-w</option><arg>
++ <arg><option>-w</option></arg>
+ <arg><option><replaceable>version</replaceable></option></arg>
+ <arg rep='repeat'><option><replaceable>filename</replaceable></option></arg>
+ </cmdsynopsis>
+--- doc/insmod.sgml.orig 2011-06-25 10:07:15.899805024 -0400
++++ doc/insmod.sgml 2011-06-25 10:07:59.228805019 -0400
+@@ -1,4 +1,5 @@
+-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
++ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY docbook "<productname>DocBook</productname>">
+ <!ENTITY sgml "<abbrev>SGML</abbrev>">
+--- doc/lsmod.sgml.orig 2011-06-25 10:07:15.899805024 -0400
++++ doc/lsmod.sgml 2011-06-25 10:08:04.804805020 -0400
+@@ -1,4 +1,5 @@
+-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
++ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY docbook "<productname>DocBook</productname>">
+ <!ENTITY sgml "<abbrev>SGML</abbrev>">
+--- doc/modinfo.sgml.orig 2011-06-25 10:07:15.900805024 -0400
++++ doc/modinfo.sgml 2011-06-25 10:08:07.630805019 -0400
+@@ -1,4 +1,5 @@
+-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
++ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY docbook "<productname>DocBook</productname>">
+ <!ENTITY sgml "<abbrev>SGML</abbrev>">
+--- doc/modprobe.conf.sgml.orig 2011-06-25 10:07:15.901805024 -0400
++++ doc/modprobe.conf.sgml 2011-06-25 10:08:10.173805018 -0400
+@@ -1,4 +1,5 @@
+-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
++ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY docbook "<productname>DocBook</productname>">
+ <!ENTITY sgml "<abbrev>SGML</abbrev>">
+--- doc/modprobe.sgml.orig 2011-06-25 10:07:15.902805024 -0400
++++ doc/modprobe.sgml 2011-06-25 10:08:13.623805019 -0400
+@@ -1,4 +1,5 @@
+-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
++ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY docbook "<productname>DocBook</productname>">
+ <!ENTITY sgml "<abbrev>SGML</abbrev>">
+--- doc/modules.dep.sgml.orig 2011-06-25 10:07:15.903805024 -0400
++++ doc/modules.dep.sgml 2011-06-25 10:08:19.323805019 -0400
+@@ -1,4 +1,5 @@
+-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
++ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY docbook "<productname>DocBook</productname>">
+ <!ENTITY sgml "<abbrev>SGML</abbrev>">
+--- doc/rmmod.sgml.orig 2011-06-25 10:07:15.904805024 -0400
++++ doc/rmmod.sgml 2011-06-25 10:08:27.691805017 -0400
+@@ -1,4 +1,5 @@
+-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1.2//EN"
++ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY docbook "<productname>DocBook</productname>">
+ <!ENTITY sgml "<abbrev>SGML</abbrev>">
diff --git a/testing/module-init-tools/modprobe.conf b/testing/module-init-tools/modprobe.conf
new file mode 100644
index 000000000..551bdfbdf
--- /dev/null
+++ b/testing/module-init-tools/modprobe.conf
@@ -0,0 +1,3 @@
+#
+# /etc/modprobe.d/modprobe.conf
+#
diff --git a/testing/mpd/ChangeLog b/testing/mpd/ChangeLog
new file mode 100644
index 000000000..40ba5e4e7
--- /dev/null
+++ b/testing/mpd/ChangeLog
@@ -0,0 +1,9 @@
+2011-09-03 Angel Velasquez <angvp@archlinux.org>
+ * Version bump to 0.16.4
+ * Removed the patch mpd-0.16.3_ffmpeg_sigsegv.patch since is included upstream
+
+2011-06-25 Angel Velasquez <angvp@archlinux.org>
+ * Added a patch for bug with ffmpeg FS#24839
+
+
+# vim: set ft=changelog ts=4 sw=4 et:
diff --git a/testing/mpd/PKGBUILD b/testing/mpd/PKGBUILD
new file mode 100644
index 000000000..5621f15db
--- /dev/null
+++ b/testing/mpd/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id: PKGBUILD 142157 2011-11-05 11:38:08Z ibiru $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# Contributor: Ben <ben@benmazer.net>
+
+pkgname=mpd
+pkgver=0.16.5
+pkgrel=2
+pkgdesc="Music daemon that plays MP3, FLAC, and Ogg Vorbis files"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://mpd.wikia.com/wiki/Server"
+depends=('libao' 'ffmpeg' 'libmodplug' 'audiofile' 'libshout' 'libmad' 'curl' 'faad2'
+ 'sqlite3' 'jack' 'libmms' 'wavpack' 'libmpcdec' 'avahi' 'libid3tag'
+ 'libpulse')
+makedepends=('pkgconfig' 'doxygen')
+install=${pkgname}.install
+changelog=ChangeLog
+source=("http://downloads.sourceforge.net/musicpd/$pkgname-$pkgver.tar.bz2"
+'mpd')
+md5sums=('f7564cff12035f6a1112cce770655df7'
+ 'e5669c2bff4031928531e52475addeb1')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-lastfm \
+ --enable-jack \
+ --enable-pulse \
+ --enable-documentation \
+ --disable-libwrap \
+ --disable-cue \
+ --disable-sidplay \
+ --with-systemdsystemunitdir=/lib/systemd/system
+
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+
+ # set our dirs in mpd.conf file
+ sed -i 's|^music_directory.*$|#music_directory "path_to_your_music_collection"|1' doc/mpdconf.example
+ sed -i 's|playlist_directory.*$|playlist_directory "/var/lib/mpd/playlists"|1' doc/mpdconf.example
+ sed -i 's|db_file.*$|db_file "/var/lib/mpd/mpd.db"|1' doc/mpdconf.example
+ sed -i 's|log_file.*$|log_file "/var/log/mpd/mpd.log"|1' doc/mpdconf.example
+ sed -i 's|error_file.*$|error_file "/var/log/mpd/mpd.error"|1' doc/mpdconf.example
+ sed -i 's|#pid_file.*$|pid_file "/var/run/mpd/mpd.pid"|1' doc/mpdconf.example
+ sed -i 's|#state_file.*$|state_file "/var/lib/mpd/mpdstate"|1' doc/mpdconf.example
+ sed -i 's|#user.*$|user "mpd"|1' doc/mpdconf.example
+
+ install -Dm644 "doc/mpdconf.example" "$pkgdir/usr/share/mpd/mpd.conf.example"
+
+ install -Dm755 "$srcdir/mpd" "$pkgdir/etc/rc.d/mpd"
+ install -d "$pkgdir"/var/{lib/mpd/playlists,log/mpd}
+}
diff --git a/testing/mpd/mpd b/testing/mpd/mpd
new file mode 100755
index 000000000..6134e2ed4
--- /dev/null
+++ b/testing/mpd/mpd
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting Music Player Daemon"
+ [ ! -d /var/run/mpd ] && install -d -g 45 -o 45 /var/run/mpd
+ /usr/bin/mpd /etc/mpd.conf &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon mpd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Music Player Daemon"
+ /usr/bin/mpd --kill /etc/mpd.conf &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon mpd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/testing/mpd/mpd.install b/testing/mpd/mpd.install
new file mode 100644
index 000000000..885505a07
--- /dev/null
+++ b/testing/mpd/mpd.install
@@ -0,0 +1,18 @@
+post_install() {
+ post_upgrade
+ echo "==> Create a configuration file /etc/mpd.conf before using MPD (example: /usr/share/mpd/mpd.conf.example)"
+}
+
+post_upgrade() {
+ getent group "mpd" &>/dev/null || groupadd -r -g 45 mpd 1>/dev/null
+ getent passwd "mpd" &>/dev/null || useradd -r -u 45 -g mpd -d "/var/lib/mpd" -s "/bin/true" -G "audio" mpd 1>/dev/null
+ for dir in /var/{lib,log}/mpd; do
+ chown -R mpd:mpd "$dir" 1>/dev/null
+ done
+}
+
+post_remove() {
+ getent passwd "mpd" &>/dev/null && userdel mpd 1>/dev/null
+ getent group "mpd" &>/dev/null && groupdel mpd 1>/dev/null
+ [ -f etc/mpd.conf ] && mv etc/mpd.conf etc/mpd.conf.pacsave 1>/dev/null
+}
diff --git a/testing/ncurses/PKGBUILD b/testing/ncurses/PKGBUILD
new file mode 100644
index 000000000..1c2df2889
--- /dev/null
+++ b/testing/ncurses/PKGBUILD
@@ -0,0 +1,74 @@
+# $Id: PKGBUILD 141943 2011-11-03 11:43:21Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=ncurses
+pkgver=5.9
+pkgrel=2
+pkgdesc="System V Release 4.0 curses emulation library"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/ncurses/"
+license=('MIT')
+depends=('glibc')
+source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz{,.sig})
+md5sums=('8cb9c412e5f2d96bc6f459aa8c6282a1'
+ '014ffdbbfec6d41a9a89d6cbe6434638')
+
+build() {
+ cd ${srcdir}/
+ mkdir ncurses{,w}-build
+
+ cd ${srcdir}/ncursesw-build
+ ../${pkgname}-${pkgver}/configure --prefix=/usr --mandir=/usr/share/man \
+ --with-shared --with-normal --without-debug --without-ada \
+ --with-install-prefix=${pkgdir} --enable-widec
+ # add --enable-ext-colors with next soname bump
+ make
+
+ # libncurses.so.5 for external binary support
+ cd ${srcdir}/ncurses-build
+ [ $CARCH = "x86_64" ] && CONFIGFLAG="--with-chtype=long"
+ ../${pkgname}-${pkgver}/configure --prefix=/usr \
+ --with-shared --with-normal --without-debug --without-ada \
+ --with-install-prefix=${pkgdir} $CONFIGFLAG
+ make
+}
+
+package() {
+ cd ${srcdir}/ncursesw-build
+ make install
+
+ # move libraries needed for boot to /lib (we call tput in initscripts)
+ install -dm755 ${pkgdir}/lib
+ mv ${pkgdir}/usr/lib/libncursesw.so.5* ${pkgdir}/lib
+ ln -sf ../../lib/libncursesw.so.5 ${pkgdir}/usr/lib/libncursesw.so
+
+ # Fool packages looking to link to non-wide-character ncurses libraries
+ for lib in curses ncurses form panel menu; do
+ rm -f ${pkgdir}/usr/lib/lib${lib}.so
+ echo "INPUT(-l${lib}w)" >${pkgdir}/usr/lib/lib${lib}.so
+ ln -sf lib${lib}w.a ${pkgdir}/usr/lib/lib${lib}.a
+ done
+ ln -sf libncurses++w.a ${pkgdir}/usr/lib/libncurses++.a
+
+ # install tput to /bin
+ install -dm755 ${pkgdir}/bin/
+ mv ${pkgdir}/usr/bin/tput ${pkgdir}/bin/tput
+
+ # Some packages look for -lcurses during build
+ rm -f ${pkgdir}/usr/lib/libcursesw.so
+ echo "INPUT(-lncursesw)" >${pkgdir}/usr/lib/libcursesw.so
+ ln -sf libncurses.so ${pkgdir}/usr/lib/libcurses.so
+ ln -sf libncursesw.a ${pkgdir}/usr/lib/libcursesw.a
+ ln -sf libncurses.a ${pkgdir}/usr/lib/libcurses.a
+
+ # non-widec compatibility library
+ cd ${srcdir}/ncurses-build
+ install -Dm755 lib/libncurses.so.${pkgver} ${pkgdir}/usr/lib/libncurses.so.${pkgver}
+ ln -sf libncurses.so.${pkgver} ${pkgdir}/usr/lib/libncurses.so.5
+
+ # install license, rip it from the readme
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -dm755 ${pkgdir}/usr/share/licenses/$pkgname
+ grep -B 100 '$Id' README > ${pkgdir}/usr/share/licenses/${pkgname}/license.txt
+}
diff --git a/testing/net-tools/PKGBUILD b/testing/net-tools/PKGBUILD
new file mode 100644
index 000000000..24e6c701e
--- /dev/null
+++ b/testing/net-tools/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 142021 2011-11-04 06:41:37Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=net-tools
+pkgver=1.60.20110819cvs
+pkgrel=3
+pkgdesc="Configuration tools for Linux networking"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://www.tazenda.demon.co.uk/phil/net-tools"
+depends=('glibc')
+
+# http://www.tazenda.demon.co.uk/phil/$pkgname/$pkgname-$pkgver.tar.bz2
+# use cvs checkout instead
+source=(ftp://ftp.archlinux.org/other/net-tools/net-tools-1.60.20110819cvs.tar.bz2
+ net-tools-1.60-miiioctl.patch
+ net-tools-1.60-nameif_strncpy.patch)
+options=(!makeflags)
+install=net-tools.install
+sha1sums=('02946449191ff279f9f0f7fd7bc65ae21059a2bf'
+ '654a96bc6575efb4a2e04b49de45d448d240eb6e'
+ '7888000d8fe867e58b5b00fe2bcf6c3041d716b4')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np1 -i ../net-tools-1.60-miiioctl.patch
+ patch -Np1 -i ${srcdir}/net-tools-1.60-nameif_strncpy.patch
+ yes "" | make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make BASEDIR=$pkgdir update
+
+ # the following is provided by yp-tools
+ rm "${pkgdir}"/bin/{nis,yp}domainname
+ rm "${pkgdir}"/usr/share/man/man1/{nis,yp}domainname.1
+
+ # hostname is provided by inetutils
+ rm "${pkgdir}"/bin/{hostname,dnsdomainname,domainname}
+ rm -rf "${pkgdir}"/usr/share/man/man1
+}
diff --git a/testing/net-tools/gcc340.patch b/testing/net-tools/gcc340.patch
new file mode 100644
index 000000000..8089bf217
--- /dev/null
+++ b/testing/net-tools/gcc340.patch
@@ -0,0 +1,46 @@
+diff -Naur net-tools-1.60-orig/hostname.c net-tools-1.60/hostname.c
+--- net-tools-1.60-orig/hostname.c 2001-04-08 10:04:23.000000000 -0700
++++ net-tools-1.60/hostname.c 2004-05-07 17:22:14.000000000 -0700
+@@ -78,6 +78,7 @@
+ fprintf(stderr, _("%s: name too long\n"), program_name);
+ break;
+ default:
++ ;
+ }
+ exit(1);
+ }
+@@ -98,6 +99,7 @@
+ fprintf(stderr, _("%s: name too long\n"), program_name);
+ break;
+ default:
++ ;
+ }
+ exit(1);
+ };
+@@ -117,6 +119,7 @@
+ fprintf(stderr, _("%s: name too long\n"), program_name);
+ break;
+ default:
++ ;
+ }
+ exit(1);
+ };
+@@ -174,6 +177,7 @@
+ printf("%s\n", hp->h_name);
+ break;
+ default:
++ ;
+ }
+ }
+
+diff -Naur net-tools-1.60-orig/lib/inet_sr.c net-tools-1.60/lib/inet_sr.c
+--- net-tools-1.60-orig/lib/inet_sr.c 2000-02-20 13:46:45.000000000 -0800
++++ net-tools-1.60/lib/inet_sr.c 2004-05-07 17:20:14.000000000 -0700
+@@ -105,6 +105,7 @@
+ case 2:
+ isnet = 0; break;
+ default:
++ ;
+ }
+
+ /* Fill in the other fields. */
diff --git a/testing/net-tools/net-tools-1.60-2.6-compilefix.patch b/testing/net-tools/net-tools-1.60-2.6-compilefix.patch
new file mode 100644
index 000000000..92ce90128
--- /dev/null
+++ b/testing/net-tools/net-tools-1.60-2.6-compilefix.patch
@@ -0,0 +1,23 @@
+diff -ruN net-tools-1.60.orig/lib/x25_sr.c net-tools-1.60/lib/x25_sr.c
+--- net-tools-1.60.orig/lib/x25_sr.c 2000-05-20 15:38:10.000000000 +0200
++++ net-tools-1.60/lib/x25_sr.c 2003-10-18 20:33:31.927574928 +0200
+@@ -22,6 +22,7 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <linux/x25.h>
++#include <linux/version.h>
+ #include <ctype.h>
+ #include <errno.h>
+ #include <netdb.h>
+@@ -77,7 +78,11 @@
+ rt.sigdigits=sigdigits;
+
+ /* x25_route_struct.address isn't type struct sockaddr_x25, Why? */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+ memcpy(&rt.address, &sx25.sx25_addr, sizeof(x25_address));
++#else
++ memcpy(&rt.address, &sx25.sx25_addr, sizeof(struct x25_address));
++#endif
+
+ while (*args) {
+ if (!strcmp(*args,"device") || !strcmp(*args,"dev")) {
diff --git a/testing/net-tools/net-tools-1.60-miiioctl.patch b/testing/net-tools/net-tools-1.60-miiioctl.patch
new file mode 100644
index 000000000..6c7f0693d
--- /dev/null
+++ b/testing/net-tools/net-tools-1.60-miiioctl.patch
@@ -0,0 +1,17 @@
+--- net-tools-1.60.20110819cvs/include/mii.h 2011-08-19 10:14:00.743873299 +0200
++++ net-tools-1.60.20110819cvs/include/mii.h.new 2011-08-19 10:28:26.500524160 +0200
+@@ -14,11 +14,9 @@
+ /* network interface ioctl's for MII commands */
+ #ifndef SIOCGMIIPHY
+ #warning "SIOCGMIIPHY is not defined by your kernel source"
+-#define SIOCGMIIPHY (SIOCDEVPRIVATE) /* Read from current PHY */
+-#define SIOCGMIIREG (SIOCDEVPRIVATE+1) /* Read any PHY register */
+-#define SIOCSMIIREG (SIOCDEVPRIVATE+2) /* Write any PHY register */
+-#define SIOCGPARAMS (SIOCDEVPRIVATE+3) /* Read operational parameters */
+-#define SIOCSPARAMS (SIOCDEVPRIVATE+4) /* Set operational parameters */
++#define SIOCGMIIPHY 0x8947 /* Read from current PHY */
++#define SIOCGMIIREG 0x8948 /* Read any PHY register */
++#define SIOCSMIIREG 0x8949 /* Write any PHY register */
+ #endif
+
+ #include <linux/types.h>
diff --git a/testing/net-tools/net-tools-1.60-nameif.patch b/testing/net-tools/net-tools-1.60-nameif.patch
new file mode 100644
index 000000000..54def00c2
--- /dev/null
+++ b/testing/net-tools/net-tools-1.60-nameif.patch
@@ -0,0 +1,58 @@
+--- net-tools-1.60/nameif.c.nameif 2000-10-18 19:26:29.000000000 +0200
++++ net-tools-1.60/nameif.c 2003-03-19 11:02:01.000000000 +0100
+@@ -117,7 +117,8 @@
+ }
+
+ struct change {
+- struct change *next,**pprev;
++ struct change *next;
++ int found;
+ char ifname[IFNAMSIZ+1];
+ unsigned char mac[6];
+ };
+@@ -139,10 +140,7 @@
+ ch->ifname, pos);
+ if (parsemac(p,ch->mac) < 0)
+ complain(_("cannot parse MAC `%s' at %s"), p, pos);
+- if (clist)
+- clist->pprev = &ch->next;
+ ch->next = clist;
+- ch->pprev = &clist;
+ clist = ch;
+ return 0;
+ }
+@@ -200,7 +198,7 @@
+
+ void usage(void)
+ {
+- fprintf(stderr, _("usage: nameif [-c configurationfile] [-s] {ifname macaddress}"));
++ fprintf(stderr, _("usage: nameif [-c configurationfile] [-s] {ifname macaddress}\n"));
+ exit(1);
+ }
+
+@@ -277,21 +275,21 @@
+ ch = lookupmac(mac);
+ if (!ch)
+ continue;
+-
+- *ch->pprev = ch->next;
++
++ ch->found = 1;
+ if (strcmp(p, ch->ifname)) {
+ if (setname(p, ch->ifname) < 0)
+ complain(_("cannot change name of %s to %s: %s"),
+ p, ch->ifname, strerror(errno));
+ }
+- free(ch);
+ }
+ fclose(ifh);
+
+ while (clist) {
+ struct change *ch = clist;
+ clist = clist->next;
+- warning(_("interface '%s' not found"), ch->ifname);
++ if (!ch->found)
++ warning(_("interface '%s' not found"), ch->ifname);
+ free(ch);
+ }
+
diff --git a/testing/net-tools/net-tools-1.60-nameif_strncpy.patch b/testing/net-tools/net-tools-1.60-nameif_strncpy.patch
new file mode 100644
index 000000000..7568e21a2
--- /dev/null
+++ b/testing/net-tools/net-tools-1.60-nameif_strncpy.patch
@@ -0,0 +1,13 @@
+--- net-tools-1.60/nameif.c.ncpy 2006-10-03 14:24:21.000000000 +0200
++++ net-tools-1.60/nameif.c 2006-10-03 14:22:43.000000000 +0200
+@@ -100,8 +100,8 @@
+ struct ifreq ifr;
+ opensock();
+ memset(&ifr,0,sizeof(struct ifreq));
+- strcpy(ifr.ifr_name, oldname);
+- strcpy(ifr.ifr_newname, newname);
++ strncpy(ifr.ifr_name, oldname, IF_NAMESIZE);
++ strncpy(ifr.ifr_newname, newname, IF_NAMESIZE);
+ return ioctl(ctl_sk, SIOCSIFNAME, &ifr);
+ }
+
diff --git a/testing/net-tools/net-tools.install b/testing/net-tools/net-tools.install
new file mode 100644
index 000000000..9eee9e51b
--- /dev/null
+++ b/testing/net-tools/net-tools.install
@@ -0,0 +1,12 @@
+post_upgrade() {
+ if [ "$(vercmp $2 1.60-16)" -lt 0 ]; then
+ echo "hostname and {,yp,nis}domainname has moved:"
+ echo "----------"
+ echo "hostname is now in coreutils"
+ echo "domainname is now in yp-tools"
+ echo "their functionality might have changed slightly"
+ echo ""
+ echo "dnsdomainname remains in net-tools"
+ echo "----------"
+ fi
+}
diff --git a/testing/net-tools/net-tools.patch b/testing/net-tools/net-tools.patch
new file mode 100644
index 000000000..8af2d2159
--- /dev/null
+++ b/testing/net-tools/net-tools.patch
@@ -0,0 +1,30 @@
+diff -Naur net-tools-1.60-orig/mii-tool.c net-tools-1.60/mii-tool.c
+--- net-tools-1.60-orig/mii-tool.c 2000-05-21 07:31:17.000000000 -0700
++++ net-tools-1.60/mii-tool.c 2004-05-31 12:35:21.000000000 -0700
+@@ -379,16 +379,16 @@
+ /*--------------------------------------------------------------------*/
+
+ const char *usage =
+-"usage: %s [-VvRrwl] [-A media,... | -F media] [interface ...]
+- -V, --version display version information
+- -v, --verbose more verbose output
+- -R, --reset reset MII to poweron state
+- -r, --restart restart autonegotiation
+- -w, --watch monitor for link status changes
+- -l, --log with -w, write events to syslog
+- -A, --advertise=media,... advertise only specified media
+- -F, --force=media force specified media technology
+-media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
++"usage: %s [-VvRrwl] [-A media,... | -F media] [interface ...]\n\
++ -V, --version display version information\n\
++ -v, --verbose more verbose output\n\
++ -R, --reset reset MII to poweron state\n\
++ -r, --restart restart autonegotiation\n\
++ -w, --watch monitor for link status changes\n\
++ -l, --log with -w, write events to syslog\n\
++ -A, --advertise=media,... advertise only specified media\n\
++ -F, --force=media force specified media technology\n\
++media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,\n\
+ (to advertise both HD and FD) 100baseTx, 10baseT\n";
+
+ int main(int argc, char **argv)
diff --git a/testing/opal/PKGBUILD b/testing/opal/PKGBUILD
new file mode 100644
index 000000000..3adf672a4
--- /dev/null
+++ b/testing/opal/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 142127 2011-11-05 11:37:25Z ibiru $
+# Maintainer: Jan de Groot <jan@archlinux.org>
+# Contributor: Tom K <tomk@runbox.com>
+pkgname=opal
+pkgver=3.10.2
+pkgrel=3
+pkgdesc="Open Phone Abstraction Library"
+arch=(i686 x86_64)
+url="http://www.ekiga.org"
+license=('GPL')
+depends=('ptlib' 'libtheora' 'x264' 'speex')
+makedepends=('ffmpeg')
+options=(!makeflags)
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz)
+sha256sums=('8e227978263c07502b2bc4c9de0e71be1b95d673fe858bfd907910adfb2eb205')
+
+build() {
+ cd "${srcdir}/opal-${pkgver}"
+ CXXFLAGS="$CXXFLAGS -fpermissive" \
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make
+}
+
+package() {
+ cd "${srcdir}/opal-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/opencv/PKGBUILD b/testing/opencv/PKGBUILD
new file mode 100644
index 000000000..6ffc4a7a5
--- /dev/null
+++ b/testing/opencv/PKGBUILD
@@ -0,0 +1,110 @@
+# $Id: PKGBUILD 142159 2011-11-05 11:38:11Z ibiru $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgbase=opencv
+pkgname=('opencv' 'opencv-docs' 'opencv-samples')
+_realname=OpenCV
+pkgver=2.3.1
+pkgrel=2
+pkgdesc="Open Source Computer Vision Library"
+arch=('i686' 'x86_64')
+license=('BSD')
+url="http://opencv.willowgarage.com/"
+depends=('jasper' 'gstreamer0.10-base' 'openexr' 'ffmpeg>=20111030'
+ 'gtk2' 'xine-lib' 'libdc1394' 'v4l-utils')
+makedepends=('pkg-config' 'cmake' 'python2-numpy' 'eigen2')
+optdepends=('python2-numpy: Python 2.x interface'
+ 'eigen2')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/opencvlibrary/$_realname-$pkgver.tar.bz2")
+md5sums=('827c9f8aa14384c531c73aa165f9b777')
+
+_cmakeopts=('-D CMAKE_BUILD_TYPE=Release'
+ '-D CMAKE_INSTALL_PREFIX=/usr'
+ '-D CMAKE_SKIP_RPATH=ON'
+ '-D BUILD_TESTS=OFF'
+ '-D ENABLE_SSE=ON'
+ '-D ENABLE_SSE2=ON'
+ '-D ENABLE_SSE3=OFF'
+ '-D ENABLE_SSSE3=OFF'
+ '-D ENABLE_SSE41=OFF'
+ '-D ENABLE_SSE42=OFF'
+ '-D BUILD_EXAMPLES=ON'
+ '-D INSTALL_C_EXAMPLES=ON'
+ '-D INSTALL_PYTHON_EXAMPLES=ON'
+ '-D WITH_XINE=ON'
+ '-D WITH_QT=OFF'
+ '-D WITH_QT_OPENGL=OFF'
+ '-D WITH_UNICAP=OFF'
+ '-D WITH_PVAPI=OFF'
+ '-D WITH_OPENNI=OFF'
+ '-D WITH_TBB=OFF'
+ '-D WITH_IPP=OFF'
+ '-D WITH_CUDA=OFF'
+ '-D USE_FAST_MATH=ON')
+
+build() {
+ cd "$srcdir/$_realname-$pkgver"
+
+ # x64, i.e "Athlon64" and upwards, can use SSE3
+ [ $CARCH = x86_64 ] && \
+ _cmakeopts=${_cmakeopts[@]/ENABLE_SSE3=OFF/ENABLE_SSE3=ON}
+
+ cmake ${_cmakeopts[@]} .
+
+ make
+}
+
+package_opencv() {
+ install=$pkgname.install
+
+ cd "$srcdir/$_realname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+
+ # install license file
+ install -Dm644 "$srcdir/$_realname-$pkgver/doc/license.txt" \
+ "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+
+ cd "$pkgdir/usr/share"
+
+ # prepare FSH-friendly dirs
+ if [ -d OpenCV ]; then
+ mv opencv/samples OpenCV/
+ rm -r opencv
+ mv OpenCV opencv
+ fi
+
+ # separate docs package; also be -R friendly
+ [ -d opencv/doc ] && mv opencv/doc "$srcdir/opencv-doc"
+
+ # separate samples package
+ [ -d opencv/samples ] && mv opencv/samples "$srcdir/opencv-samples"
+}
+
+package_opencv-docs() {
+ pkgdesc+=" (documentation)"
+ depends=()
+ optdepends=()
+ options=('docs')
+
+ cd "$srcdir"
+
+ mkdir -p "$pkgdir/usr/share/doc"
+ cp -r opencv-doc "$pkgdir/usr/share/doc/opencv"
+}
+
+package_opencv-samples() {
+ pkgdesc+=" (samples)"
+ depends=()
+ optdepends=()
+ options=()
+
+ cd "$srcdir"
+
+ mkdir -p "$pkgdir/usr/share/opencv"
+ cp -r opencv-samples "$pkgdir/usr/share/opencv/samples"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/opencv/opencv.install b/testing/opencv/opencv.install
new file mode 100644
index 000000000..ae3f50d5c
--- /dev/null
+++ b/testing/opencv/opencv.install
@@ -0,0 +1,11 @@
+post_install() {
+ echo " Documentation and samples are in separate packages:"
+ echo " * opencv-docs"
+ echo " * opencv-samples"
+}
+
+post_upgrade() {
+ post_install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/openldap/PKGBUILD b/testing/openldap/PKGBUILD
new file mode 100644
index 000000000..93bc18d02
--- /dev/null
+++ b/testing/openldap/PKGBUILD
@@ -0,0 +1,96 @@
+# $Id: PKGBUILD 141927 2011-11-03 08:03:29Z eric $
+# Maintainer:
+
+pkgbase=openldap
+pkgname=('libldap' 'openldap')
+pkgver=2.4.26
+pkgrel=5
+arch=('i686' 'x86_64')
+url="http://www.openldap.org/"
+license=('custom')
+makedepends=('libfetch' 'libltdl' 'libsasl')
+source=(ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${pkgbase}-${pkgver}.tgz
+ slapd slapd.default ntlm.patch)
+md5sums=('f36f3086031dd56ae94f722ffae8df5e'
+ '40fdbdd6c343019cbadf4eb26c6189f2'
+ '6be69f6b7e522cb64cce8703da81ed32'
+ '4258ddbef923d1f29f2843bc050f8c56')
+
+build() {
+ cd "${srcdir}"/${pkgbase}-${pkgver}
+ patch -Np1 -i "${srcdir}"/ntlm.patch
+ sed -i 's|-m 644 $(LIBRARY)|-m 755 $(LIBRARY)|' libraries/{liblber,libldap,libldap_r}/Makefile.in
+ sed -i 's|#define LDAPI_SOCK LDAP_RUNDIR LDAP_DIRSEP "run" LDAP_DIRSEP "ldapi"|#define LDAPI_SOCK LDAP_DIRSEP "run" LDAP_DIRSEP "openldap" LDAP_DIRSEP "ldapi"|' include/ldap_defaults.h
+ sed -i 's|%LOCALSTATEDIR%/run|/run/openldap|' servers/slapd/slapd.conf
+ sed -i 's|-$(MKDIR) $(DESTDIR)$(localstatedir)/run|-$(MKDIR) $(DESTDIR)/run/openldap|' servers/slapd/Makefile.in
+
+ LDFLAGS="$LDFLAGS -L\"${pkgdir}\"/libldap/usr/lib"
+ ./configure --prefix=/usr --mandir=/usr/share/man --libexecdir=/usr/lib \
+ --sysconfdir=/etc --localstatedir=/var/lib/openldap \
+ --enable-ipv6 --enable-syslog --enable-local \
+ --enable-bdb --enable-hdb \
+ --enable-crypt --enable-dynamic \
+ --with-threads --disable-wrappers \
+ --enable-spasswd --with-cyrus-sasl \
+ --enable-overlays=mod --enable-modules=yes
+ make
+}
+
+check() {
+ cd "${srcdir}"/${pkgbase}-${pkgver}
+ make test
+}
+
+package_libldap() {
+ pkgdesc="Lightweight Directory Access Protocol (LDAP) client libraries"
+ depends=('libsasl' 'libfetch')
+ backup=('etc/openldap/ldap.conf')
+ options=('!libtool')
+
+ cd "${srcdir}"/${pkgbase}-${pkgver}
+ for dir in include libraries doc/man/man3 ; do
+ pushd ${dir}
+ make DESTDIR="${pkgdir}" install
+ popd
+ done
+ install -Dm644 doc/man/man5/ldap.conf.5.tmp "${pkgdir}"/usr/share/man/man5/ldap.conf.5
+
+# get rid of duplicate default conf files
+ rm "${pkgdir}"/etc/openldap/*.default
+
+ ln -sf liblber.so "${pkgdir}"/usr/lib/liblber.so.2
+ ln -sf libldap.so "${pkgdir}"/usr/lib/libldap.so.2
+
+ install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
+
+package_openldap() {
+ pkgdesc="Lightweight Directory Access Protocol (LDAP) client and server"
+ depends=("libldap>=${pkgver}" 'libltdl')
+ backup=('etc/openldap/slapd.conf' 'etc/conf.d/slapd')
+ options=('!libtool' 'emptydirs')
+ install=openldap.install
+
+ cd "${srcdir}"/${pkgbase}-${pkgver}
+ for dir in clients servers doc/man/man{1,5,8} ; do
+ pushd ${dir}
+ make DESTDIR="${pkgdir}" install
+ popd
+ done
+ rm "${pkgdir}"/usr/share/man/man5/ldap.conf.5
+ rm -r "${pkgdir}"/run
+
+# get rid of duplicate default conf files
+ rm "${pkgdir}"/etc/openldap/*.default
+
+ ln -s ../lib/slapd "${pkgdir}"/usr/sbin/slapd
+
+ chown root:439 "${pkgdir}"/etc/openldap/{slapd.conf,DB_CONFIG.example}
+ chmod 640 "${pkgdir}"/etc/openldap/{slapd.conf,DB_CONFIG.example}
+
+ install -dm700 -o 439 -g 439 "${pkgdir}"/var/lib/openldap
+ install -dm700 -o 439 -g 439 "${pkgdir}"/etc/openldap/slapd.d
+ install -Dm755 "${srcdir}"/slapd "${pkgdir}"/etc/rc.d/slapd
+ install -Dm644 "${srcdir}"/slapd.default "${pkgdir}"/etc/conf.d/slapd
+ install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/testing/openldap/ntlm.patch b/testing/openldap/ntlm.patch
new file mode 100644
index 000000000..6804b610d
--- /dev/null
+++ b/testing/openldap/ntlm.patch
@@ -0,0 +1,230 @@
+Patch from evolution-exchange (2.10.3). The ldap_ntlm_bind function is
+actually called by evolution-data-server, checked at version 1.12.2.
+Without this patch, the Exchange addressbook integration uses simple binds
+with cleartext passwords.
+
+Russ checked with openldap-software for upstream's opinion on this patch
+on 2007-12-21. Upstream had never received it as a patch submission and
+given that it's apparently only for older Exchange servers that can't do
+SASL and DIGEST-MD5, it's not very appealing.
+
+Bug#457374 filed against evolution-data-server asking if this support is
+still required on 2007-12-21.
+
+Index: trunk/include/ldap.h
+===================================================================
+--- trunk.orig/include/ldap.h
++++ trunk/include/ldap.h
+@@ -2461,5 +2461,25 @@
+ LDAPControl **ctrls,
+ LDAPDerefRes **drp ));
+
++/*
++ * hacks for NTLM
++ */
++#define LDAP_AUTH_NTLM_REQUEST ((ber_tag_t) 0x8aU)
++#define LDAP_AUTH_NTLM_RESPONSE ((ber_tag_t) 0x8bU)
++LDAP_F( int )
++ldap_ntlm_bind LDAP_P((
++ LDAP *ld,
++ LDAP_CONST char *dn,
++ ber_tag_t tag,
++ struct berval *cred,
++ LDAPControl **sctrls,
++ LDAPControl **cctrls,
++ int *msgidp ));
++LDAP_F( int )
++ldap_parse_ntlm_bind_result LDAP_P((
++ LDAP *ld,
++ LDAPMessage *res,
++ struct berval *challenge));
++
+ LDAP_END_DECL
+ #endif /* _LDAP_H */
+Index: trunk/libraries/libldap/ntlm.c
+===================================================================
+--- /dev/null
++++ trunk/libraries/libldap/ntlm.c
+@@ -0,0 +1,138 @@
++/* $OpenLDAP: pkg/ldap/libraries/libldap/ntlm.c,v 1.1.4.10 2002/01/04 20:38:21 kurt Exp $ */
++/*
++ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
++ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
++ */
++
++/* Mostly copied from sasl.c */
++
++#include "portable.h"
++
++#include <stdlib.h>
++#include <stdio.h>
++
++#include <ac/socket.h>
++#include <ac/string.h>
++#include <ac/time.h>
++#include <ac/errno.h>
++
++#include "ldap-int.h"
++
++int
++ldap_ntlm_bind(
++ LDAP *ld,
++ LDAP_CONST char *dn,
++ ber_tag_t tag,
++ struct berval *cred,
++ LDAPControl **sctrls,
++ LDAPControl **cctrls,
++ int *msgidp )
++{
++ BerElement *ber;
++ int rc;
++ ber_int_t id;
++
++ Debug( LDAP_DEBUG_TRACE, "ldap_ntlm_bind\n", 0, 0, 0 );
++
++ assert( ld != NULL );
++ assert( LDAP_VALID( ld ) );
++ assert( msgidp != NULL );
++
++ if( msgidp == NULL ) {
++ ld->ld_errno = LDAP_PARAM_ERROR;
++ return ld->ld_errno;
++ }
++
++ /* create a message to send */
++ if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) {
++ ld->ld_errno = LDAP_NO_MEMORY;
++ return ld->ld_errno;
++ }
++
++ assert( LBER_VALID( ber ) );
++
++ LDAP_NEXT_MSGID( ld, id );
++ rc = ber_printf( ber, "{it{istON}" /*}*/,
++ id, LDAP_REQ_BIND,
++ ld->ld_version, dn, tag,
++ cred );
++
++ /* Put Server Controls */
++ if( ldap_int_put_controls( ld, sctrls, ber ) != LDAP_SUCCESS ) {
++ ber_free( ber, 1 );
++ return ld->ld_errno;
++ }
++
++ if ( ber_printf( ber, /*{*/ "N}" ) == -1 ) {
++ ld->ld_errno = LDAP_ENCODING_ERROR;
++ ber_free( ber, 1 );
++ return ld->ld_errno;
++ }
++
++ /* send the message */
++ *msgidp = ldap_send_initial_request( ld, LDAP_REQ_BIND, dn, ber, id );
++
++ if(*msgidp < 0)
++ return ld->ld_errno;
++
++ return LDAP_SUCCESS;
++}
++
++int
++ldap_parse_ntlm_bind_result(
++ LDAP *ld,
++ LDAPMessage *res,
++ struct berval *challenge)
++{
++ ber_int_t errcode;
++ ber_tag_t tag;
++ BerElement *ber;
++ ber_len_t len;
++
++ Debug( LDAP_DEBUG_TRACE, "ldap_parse_ntlm_bind_result\n", 0, 0, 0 );
++
++ assert( ld != NULL );
++ assert( LDAP_VALID( ld ) );
++ assert( res != NULL );
++
++ if ( ld == NULL || res == NULL ) {
++ return LDAP_PARAM_ERROR;
++ }
++
++ if( res->lm_msgtype != LDAP_RES_BIND ) {
++ ld->ld_errno = LDAP_PARAM_ERROR;
++ return ld->ld_errno;
++ }
++
++ if ( ld->ld_error ) {
++ LDAP_FREE( ld->ld_error );
++ ld->ld_error = NULL;
++ }
++ if ( ld->ld_matched ) {
++ LDAP_FREE( ld->ld_matched );
++ ld->ld_matched = NULL;
++ }
++
++ /* parse results */
++
++ ber = ber_dup( res->lm_ber );
++
++ if( ber == NULL ) {
++ ld->ld_errno = LDAP_NO_MEMORY;
++ return ld->ld_errno;
++ }
++
++ tag = ber_scanf( ber, "{ioa" /*}*/,
++ &errcode, challenge, &ld->ld_error );
++ ber_free( ber, 0 );
++
++ if( tag == LBER_ERROR ) {
++ ld->ld_errno = LDAP_DECODING_ERROR;
++ return ld->ld_errno;
++ }
++
++ ld->ld_errno = errcode;
++
++ return( ld->ld_errno );
++}
++
+Index: trunk/libraries/libldap/Makefile.in
+===================================================================
+--- trunk.orig/libraries/libldap/Makefile.in
++++ trunk/libraries/libldap/Makefile.in
+@@ -27,7 +27,7 @@
+ init.c options.c print.c string.c util-int.c schema.c \
+ charray.c os-local.c dnssrv.c utf-8.c utf-8-conv.c \
+ tls2.c tls_o.c tls_g.c tls_m.c \
+- turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c \
++ turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c ntlm.c \
+ assertion.c deref.c ldif.c fetch.c
+
+ OBJS = bind.lo open.lo result.lo error.lo compare.lo search.lo \
+@@ -40,7 +40,7 @@
+ init.lo options.lo print.lo string.lo util-int.lo schema.lo \
+ charray.lo os-local.lo dnssrv.lo utf-8.lo utf-8-conv.lo \
+ tls2.lo tls_o.lo tls_g.lo tls_m.lo \
+- turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo \
++ turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo ntlm.lo \
+ assertion.lo deref.lo ldif.lo fetch.lo
+
+ LDAP_INCDIR= ../../include
+Index: trunk/libraries/libldap_r/Makefile.in
+===================================================================
+--- trunk.orig/libraries/libldap_r/Makefile.in
++++ trunk/libraries/libldap_r/Makefile.in
+@@ -29,7 +29,7 @@
+ init.c options.c print.c string.c util-int.c schema.c \
+ charray.c os-local.c dnssrv.c utf-8.c utf-8-conv.c \
+ tls2.c tls_o.c tls_g.c tls_m.c \
+- turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c \
++ turn.c ppolicy.c dds.c txn.c ldap_sync.c stctrl.c ntlm.c \
+ assertion.c deref.c ldif.c fetch.c
+ SRCS = threads.c rdwr.c rmutex.c tpool.c rq.c \
+ thr_posix.c thr_cthreads.c thr_thr.c thr_lwp.c thr_nt.c \
+@@ -47,7 +47,7 @@
+ init.lo options.lo print.lo string.lo util-int.lo schema.lo \
+ charray.lo os-local.lo dnssrv.lo utf-8.lo utf-8-conv.lo \
+ tls2.lo tls_o.lo tls_g.lo tls_m.lo \
+- turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo \
++ turn.lo ppolicy.lo dds.lo txn.lo ldap_sync.lo stctrl.lo ntlm.lo \
+ assertion.lo deref.lo ldif.lo fetch.lo
+
+ LDAP_INCDIR= ../../include
diff --git a/testing/openldap/openldap.install b/testing/openldap/openldap.install
new file mode 100644
index 000000000..cf3cb9f25
--- /dev/null
+++ b/testing/openldap/openldap.install
@@ -0,0 +1,20 @@
+post_install(){
+ groupadd -g 439 ldap &>/dev/null
+ useradd -u 439 -g ldap -d /var/lib/openldap -s /bin/false ldap &>/dev/null
+ chown -R ldap:ldap var/lib/openldap &>/dev/null
+}
+
+post_upgrade(){
+ getent group ldap >/dev/null 2>&1 || groupadd -g 439 ldap &>/dev/null
+ getent passwd ldap >/dev/null 2>&1 || useradd -u 439 -g ldap -d /var/lib/openldap -s /bin/false ldap &>/dev/null
+ chown -R ldap:ldap var/lib/openldap &>/dev/null
+}
+
+post_remove(){
+ if getent passwd ldap >/dev/null 2>&1; then
+ userdel ldap
+ fi
+ if getent group ldap >/dev/null 2>&1; then
+ groupdel ldap
+ fi
+}
diff --git a/testing/openldap/slapd b/testing/openldap/slapd
new file mode 100755
index 000000000..4f212da66
--- /dev/null
+++ b/testing/openldap/slapd
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+[ -f "/etc/conf.d/slapd" ] && . /etc/conf.d/slapd
+
+PID=`pidof -o %PPID /usr/sbin/slapd`
+case "$1" in
+ start)
+ stat_busy "Starting OpenLDAP"
+ [ ! -d /run/openldap ] && install -d -m755 -o ldap -g ldap /run/openldap
+ if [ -z "$PID" ]; then
+ if [ -z "$SLAPD_SERVICES" ]; then
+ /usr/sbin/slapd -u ldap -g ldap $SLAPD_OPTIONS
+ else
+ /usr/sbin/slapd -u ldap -g ldap -h "$SLAPD_SERVICES" $SLAPD_OPTIONS
+ fi
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ add_daemon slapd
+ else
+ stat_fail
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping OpenLDAP"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f /run/openldap/slapd.pid
+ rm -f /run/openldap/slapd.args
+ rm_daemon slapd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/testing/openldap/slapd.default b/testing/openldap/slapd.default
new file mode 100644
index 000000000..72ae2a6a7
--- /dev/null
+++ b/testing/openldap/slapd.default
@@ -0,0 +1,6 @@
+# slapd normally serves ldap only on all TCP-ports 389. slapd can also
+# service requests on TCP-port 636 (ldaps) and requests via unix
+# sockets.
+# Example usage:
+#SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///"
+SLAPD_OPTIONS=""
diff --git a/testing/patch/PKGBUILD b/testing/patch/PKGBUILD
new file mode 100644
index 000000000..dcef9714f
--- /dev/null
+++ b/testing/patch/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 141945 2011-11-03 12:04:44Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=patch
+pkgver=2.6.1
+pkgrel=3
+pkgdesc="A utility to apply patch files to original sources"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/patch/patch.html"
+license=('GPL')
+groups=('base-devel')
+depends=('glibc')
+makedepends=('ed')
+optdepends=('ed: Interpret the patch as an ed script; for patch -e functionality(deprecated)')
+source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz{,.sig}
+ patch-2.6.1-get-arg.patch)
+md5sums=('d758eb96d3f75047efc004a720d33daf'
+ 'f7953f3e472fae5118815e6138372e22'
+ '45cd5709adbbcdcb3ab95dc43559c07c')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # Fixed argument type for --get
+ # see https://bugzilla.redhat.com/show_bug.cgi?id=553624
+ patch -Np1 -i $srcdir/patch-2.6.1-get-arg.patch
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+check() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make prefix=${pkgdir}/usr mandir=${pkgdir}/usr/share/man install
+}
diff --git a/testing/patch/patch-2.6.1-get-arg.patch b/testing/patch/patch-2.6.1-get-arg.patch
new file mode 100644
index 000000000..45f3bc8a5
--- /dev/null
+++ b/testing/patch/patch-2.6.1-get-arg.patch
@@ -0,0 +1,12 @@
+diff -up patch-2.6.1/src/patch.c.get-arg patch-2.6.1/src/patch.c
+--- patch-2.6.1/src/patch.c.get-arg 2010-07-27 18:05:26.217150510 +0100
++++ patch-2.6.1/src/patch.c 2010-07-27 18:05:47.464150892 +0100
+@@ -558,7 +558,7 @@ static struct option const longopts[] =
+ {"remove-empty-files", no_argument, NULL, 'E'},
+ {"force", no_argument, NULL, 'f'},
+ {"fuzz", required_argument, NULL, 'F'},
+- {"get", no_argument, NULL, 'g'},
++ {"get", required_argument, NULL, 'g'},
+ {"input", required_argument, NULL, 'i'},
+ {"ignore-whitespace", no_argument, NULL, 'l'},
+ #ifdef ENABLE_MERGE
diff --git a/testing/pkg-config/PKGBUILD b/testing/pkg-config/PKGBUILD
new file mode 100644
index 000000000..a8dd714da
--- /dev/null
+++ b/testing/pkg-config/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 141947 2011-11-03 12:12:51Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=pkg-config
+pkgver=0.26
+pkgrel=2
+pkgdesc="A system for managing library compile/link flags"
+arch=('i686' 'x86_64')
+url="http://pkgconfig.freedesktop.org/wiki/"
+license=('GPL')
+groups=('base-devel')
+depends=('glibc' 'popt' 'glib2')
+provides=("pkgconfig=${pkgver}")
+conflicts=('pkgconfig')
+replaces=('pkgconfig')
+source=(http://pkgconfig.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz)
+md5sums=('47525c26a9ba7ba14bf85e01509a7234')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # Use system popt
+ ./configure --prefix=/usr --with-installed-popt
+
+ make
+}
+
+check() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/testing/pkg-config/autoconf-2.66.patch b/testing/pkg-config/autoconf-2.66.patch
new file mode 100644
index 000000000..14cabdf9f
--- /dev/null
+++ b/testing/pkg-config/autoconf-2.66.patch
@@ -0,0 +1,12 @@
+diff -Naur pkg-config-0.25-old//pkg.m4 pkg-config-0.25/pkg.m4
+--- pkg-config-0.25-old//pkg.m4 2009-12-07 06:39:02.000000000 +1000
++++ pkg-config-0.25/pkg.m4 2010-07-15 14:44:37.466942978 +1000
+@@ -135,7 +135,7 @@
+ Consider adjusting the PKG_CONFIG_PATH environment variable if you
+ installed software in a non-standard prefix.
+
+-_PKG_TEXT])dnl
++_PKG_TEXT])[]dnl
+ ])
+ elif test $pkg_failed = untried; then
+ AC_MSG_RESULT([no])
diff --git a/testing/popt/PKGBUILD b/testing/popt/PKGBUILD
new file mode 100644
index 000000000..fc6688a4f
--- /dev/null
+++ b/testing/popt/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 142031 2011-11-04 09:28:13Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=popt
+pkgver=1.16
+pkgrel=4
+pkgdesc="A commandline option parser"
+arch=('i686' 'x86_64')
+url="http://rpm5.org"
+license=('custom')
+depends=('glibc')
+options=('!libtool')
+source=(http://rpm5.org/files/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('3743beefa3dd6247a73f8f7a32c14c33')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # move libs in /lib
+ install -Dm755 "${pkgdir}"/usr/lib/libpopt.so.0.0.0 \
+ ${pkgdir}/lib/libpopt.so.0.0.0
+
+ rm "${pkgdir}"/usr/lib/libpopt.so*
+ ln -sf /lib/libpopt.so "${pkgdir}"/usr/lib/libpopt.so
+ ln -sf libpopt.so.0 "${pkgdir}"/lib/libpopt.so
+ ln -sf libpopt.so.0.0.0 "${pkgdir}"/lib/libpopt.so.0
+
+ # install license
+ install -Dm644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/testing/ppp/PKGBUILD b/testing/ppp/PKGBUILD
new file mode 100644
index 000000000..06940052d
--- /dev/null
+++ b/testing/ppp/PKGBUILD
@@ -0,0 +1,80 @@
+# $Id: PKGBUILD 141972 2011-11-03 19:01:44Z thomas $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+pkgname=ppp
+pkgver=2.4.5
+pkgrel=3
+pkgdesc="A daemon which implements the Point-to-Point Protocol for dial-up networking"
+arch=(i686 x86_64)
+url="http://www.samba.org/ppp/"
+license=('custom:GPL/BSD')
+groups=('base')
+depends=('glibc' 'libpcap>=1.0.0')
+backup=(etc/ppp/{chap-secrets,pap-secrets,options,ip-up,ip-down})
+source=(ftp://ftp.samba.org/pub/ppp/ppp-${pkgver}.tar.gz
+ options
+ pon
+ poff
+ ppp
+ plog
+ pon.1
+ ip-up
+ ip-down
+ ip-up.d.dns.sh
+ ip-down.d.dns.sh)
+md5sums=('4621bc56167b6953ec4071043fe0ec57'
+ '7a9259a8f038073eeea7e4552ff1849f'
+ '48c024f73a80c8b69c4def22f86902cc'
+ '2d811f8470ccdea3b8c4505a438483e9'
+ '7561c73b557292d5ba1a9c5dbd270fde'
+ '86cdaf133f7a79fb464f02d83afc7734'
+ '44cc662ba9aa61dd9add3ddd4c5ded57'
+ 'e4beb16ed600b61336d50b2bd2df7cd5'
+ '2fa0671f40711e69194ccf60979f8b33'
+ '4a074d74c29625b254a1db720cb87b99'
+ '8d1be5af8e46393ba6eb273377831e38')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # fix CFLAGS
+ # -D_GNU_SOURCE is needed for IPv6 to work apparently
+ export CFLAGS="$CFLAGS -D_GNU_SOURCE"
+ sed -i "s:-O2 -pipe -Wall -g:${CFLAGS}:" pppd/Makefile.linux
+ sed -i "s:-g -O2:${CFLAGS}:" pppd/plugins/Makefile.linux
+ sed -i "s:-O2:${CFLAGS}:" pppstats/Makefile.linux
+ sed -i "s:-O2 -g -pipe:${CFLAGS}:" chat/Makefile.linux
+ sed -i "s:-O:${CFLAGS}:" pppdump/Makefile.linux
+
+ # enable active filter
+ sed -i "s:^#FILTER=y:FILTER=y:" pppd/Makefile.linux
+ # enable ipv6 support
+ sed -i "s:^#HAVE_INET6=y:HAVE_INET6=y:" pppd/Makefile.linux
+ # Enable Microsoft proprietary Callback Control Protocol
+ sed -i "s:^#CBCP=y:CBCP=y:" pppd/Makefile.linux
+
+ # Fix build error with recent kernels
+ rm include/linux/if_pppol2tp.h
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}/usr" install
+ install -D -m644 ../options "${pkgdir}/etc/ppp/options"
+ install -D -m755 ../ip-up "${pkgdir}/etc/ppp/ip-up"
+ install -D -m755 ../ip-down "${pkgdir}/etc/ppp/ip-down"
+ install -d -m755 "${pkgdir}/etc/ppp/ip-up.d"
+ install -d -m755 "${pkgdir}/etc/ppp/ip-down.d"
+ install -m755 ../ip-up.d.dns.sh "${pkgdir}/etc/ppp/ip-up.d/00-dns.sh"
+ install -m755 ../ip-down.d.dns.sh "${pkgdir}/etc/ppp/ip-down.d/00-dns.sh"
+ install -D -m755 ../pon "${pkgdir}/usr/bin/pon"
+ install -D -m755 ../poff "${pkgdir}/usr/bin/poff"
+ install -D -m755 ../plog "${pkgdir}/usr/sbin/plog"
+ install -D -m600 etc.ppp/pap-secrets "${pkgdir}/etc/ppp/pap-secrets"
+ install -D -m600 etc.ppp/chap-secrets "${pkgdir}/etc/ppp/chap-secrets"
+ install -D -m755 ${srcdir}/ppp "${pkgdir}/etc/rc.d/ppp"
+ install -D -m644 ${srcdir}/pon.1 "${pkgdir}/usr/share/man/man1/pon.1"
+ install -d -m755 "${pkgdir}/etc/ppp/peers"
+ chmod 0755 "${pkgdir}/usr/lib/pppd/${pkgver}"/*.so
+}
diff --git a/testing/ppp/ip-down b/testing/ppp/ip-down
new file mode 100644
index 000000000..301f3ab9b
--- /dev/null
+++ b/testing/ppp/ip-down
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# This script is run by pppd after the connection has ended.
+#
+
+# Execute all scripts in /etc/ppp/ip-up.d/
+for ipdown in /etc/ppp/ip-down.d/*.sh; do
+ if [ -x $ipdown ]; then
+ # Parameters: interface-name tty-device speed local-IP-address remote-IP-address ipparam
+ $ipdown "$@"
+ fi
+done
diff --git a/testing/ppp/ip-down.d.dns.sh b/testing/ppp/ip-down.d.dns.sh
new file mode 100644
index 000000000..9e19f7d1b
--- /dev/null
+++ b/testing/ppp/ip-down.d.dns.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+[ -e /etc/resolv.conf.backup.${IFNAME} ] && mv /etc/resolv.conf.backup.${IFNAME} /etc/resolv.conf
diff --git a/testing/ppp/ip-up b/testing/ppp/ip-up
new file mode 100644
index 000000000..20473d73a
--- /dev/null
+++ b/testing/ppp/ip-up
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# This script is run by pppd when there's a successful ppp connection.
+#
+
+# Execute all scripts in /etc/ppp/ip-up.d/
+for ipup in /etc/ppp/ip-up.d/*.sh; do
+ if [ -x $ipup ]; then
+ # Parameters: interface-name tty-device speed local-IP-address remote-IP-address ipparam
+ $ipup "$@"
+ fi
+done
diff --git a/testing/ppp/ip-up.d.dns.sh b/testing/ppp/ip-up.d.dns.sh
new file mode 100644
index 000000000..f9df543a4
--- /dev/null
+++ b/testing/ppp/ip-up.d.dns.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ "$USEPEERDNS" = "1" -a -f /etc/ppp/resolv.conf ]; then
+ [ -e /etc/resolv.conf ] && mv /etc/resolv.conf /etc/resolv.conf.backup.${IFNAME}
+ mv /etc/ppp/resolv.conf /etc/resolv.conf
+ chmod 644 /etc/resolv.conf
+fi
diff --git a/testing/ppp/options b/testing/ppp/options
new file mode 100644
index 000000000..63691842c
--- /dev/null
+++ b/testing/ppp/options
@@ -0,0 +1,352 @@
+# /etc/ppp/options
+#
+# Originally created by Jim Knoble <jmknoble@mercury.interpath.net>
+# Modified for Debian by alvar Bray <alvar@meiko.co.uk>
+# Modified for PPP Server setup by Christoph Lameter <clameter@debian.org>
+# Modified for ArchLinux by Manolis Tzanidakis <manolis@archlinux.org>
+#
+# To quickly see what options are active in this file, use this command:
+# egrep -v '#|^ *$' /etc/ppp/options
+
+# Specify which DNS Servers the incoming Win95 or WinNT Connection should use
+# Two Servers can be remotely configured
+# ms-dns 192.168.1.1
+# ms-dns 192.168.1.2
+
+# Specify which WINS Servers the incoming connection Win95 or WinNT should use
+# ms-wins 192.168.1.50
+# ms-wins 192.168.1.51
+
+# Run the executable or shell command specified after pppd has
+# terminated the link. This script could, for example, issue commands
+# to the modem to cause it to hang up if hardware modem control signals
+# were not available.
+#disconnect "chat -- \d+++\d\c OK ath0 OK"
+
+# async character map -- 32-bit hex; each bit is a character
+# that needs to be escaped for pppd to receive it. 0x00000001
+# represents '\x01', and 0x80000000 represents '\x1f'.
+asyncmap 0
+
+# Require the peer to authenticate itself before allowing network
+# packets to be sent or received.
+# Please do not disable this setting. It is expected to be standard in
+# future releases of pppd. Use the call option (see manpage) to disable
+# authentication for specific peers.
+auth
+
+# Use hardware flow control (i.e. RTS/CTS) to control the flow of data
+# on the serial port.
+crtscts
+
+# Use software flow control (i.e. XON/XOFF) to control the flow of data
+# on the serial port.
+#xonxoff
+
+# Specifies that certain characters should be escaped on transmission
+# (regardless of whether the peer requests them to be escaped with its
+# async control character map). The characters to be escaped are
+# specified as a list of hex numbers separated by commas. Note that
+# almost any character can be specified for the escape option, unlike
+# the asyncmap option which only allows control characters to be
+# specified. The characters which may not be escaped are those with hex
+# values 0x20 - 0x3f or 0x5e.
+#escape 11,13,ff
+
+# Don't use the modem control lines.
+#local
+
+# Specifies that pppd should use a UUCP-style lock on the serial device
+# to ensure exclusive access to the device.
+lock
+
+# Don't show the passwords when logging the contents of PAP packets.
+# This is the default.
+hide-password
+
+# When logging the contents of PAP packets, this option causes pppd to
+# show the password string in the log message.
+#show-password
+
+# Use the modem control lines. On Ultrix, this option implies hardware
+# flow control, as for the crtscts option. (This option is not fully
+# implemented.)
+modem
+
+# Set the MRU [Maximum Receive Unit] value to <n> for negotiation. pppd
+# will ask the peer to send packets of no more than <n> bytes. The
+# minimum MRU value is 128. The default MRU value is 1500. A value of
+# 296 is recommended for slow links (40 bytes for TCP/IP header + 256
+# bytes of data).
+#mru 542
+
+# Set the interface netmask to <n>, a 32 bit netmask in "decimal dot"
+# notation (e.g. 255.255.255.0).
+#netmask 255.255.255.0
+
+# Disables the default behaviour when no local IP address is specified,
+# which is to determine (if possible) the local IP address from the
+# hostname. With this option, the peer will have to supply the local IP
+# address during IPCP negotiation (unless it specified explicitly on the
+# command line or in an options file).
+#noipdefault
+
+# Enables the "passive" option in the LCP. With this option, pppd will
+# attempt to initiate a connection; if no reply is received from the
+# peer, pppd will then just wait passively for a valid LCP packet from
+# the peer (instead of exiting, as it does without this option).
+#passive
+
+# With this option, pppd will not transmit LCP packets to initiate a
+# connection until a valid LCP packet is received from the peer (as for
+# the "passive" option with old versions of pppd).
+#silent
+
+# Don't request or allow negotiation of any options for LCP and IPCP
+# (use default values).
+#-all
+
+# Disable Address/Control compression negotiation (use default, i.e.
+# address/control field disabled).
+#-ac
+
+# Disable asyncmap negotiation (use the default asyncmap, i.e. escape
+# all control characters).
+#-am
+
+# Don't fork to become a background process (otherwise pppd will do so
+# if a serial device is specified).
+#-detach
+
+# Disable IP address negotiation (with this option, the remote IP
+# address must be specified with an option on the command line or in
+# an options file).
+#-ip
+
+# Disable IPCP negotiation and IP communication. This option should
+# only be required if the peer is buggy and gets confused by requests
+# from pppd for IPCP negotiation.
+#noip
+
+# Disable magic number negotiation. With this option, pppd cannot
+# detect a looped-back line.
+#-mn
+
+# Disable MRU [Maximum Receive Unit] negotiation (use default, i.e.
+# 1500).
+#-mru
+
+# Disable protocol field compression negotiation (use default, i.e.
+# protocol field compression disabled).
+#-pc
+
+# Require the peer to authenticate itself using PAP.
+#+pap
+
+# Don't agree to authenticate using PAP.
+#-pap
+
+# Require the peer to authenticate itself using CHAP [Cryptographic
+# Handshake Authentication Protocol] authentication.
+#+chap
+
+# Don't agree to authenticate using CHAP.
+#-chap
+
+# Disable negotiation of Van Jacobson style IP header compression (use
+# default, i.e. no compression).
+#-vj
+
+# Increase debugging level (same as -d). If this option is given, pppd
+# will log the contents of all control packets sent or received in a
+# readable form. The packets are logged through syslog with facility
+# daemon and level debug. This information can be directed to a file by
+# setting up /etc/syslog.conf appropriately (see syslog.conf(5)). (If
+# pppd is compiled with extra debugging enabled, it will log messages
+# using facility local2 instead of daemon).
+#debug
+
+# Append the domain name <d> to the local host name for authentication
+# purposes. For example, if gethostname() returns the name porsche,
+# but the fully qualified domain name is porsche.Quotron.COM, you would
+# use the domain option to set the domain name to Quotron.COM.
+#domain <d>
+
+# Enable debugging code in the kernel-level PPP driver. The argument n
+# is a number which is the sum of the following values: 1 to enable
+# general debug messages, 2 to request that the contents of received
+# packets be printed, and 4 to request that the contents of transmitted
+# packets be printed.
+#kdebug n
+
+# Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer
+# requests a smaller value via MRU negotiation, pppd will request that
+# the kernel networking code send data packets of no more than n bytes
+# through the PPP network interface.
+#mtu <n>
+
+# Set the name of the local system for authentication purposes to <n>.
+# This is a privileged option. With this option, pppd will use lines in the
+# secrets files which have <n> as the second field when looking for a
+# secret to use in authenticating the peer. In addition, unless overridden
+# with the user option, <n> will be used as the name to send to the peer
+# when authenticating the local system to the peer. (Note that pppd does
+# not append the domain name to <n>.)
+#name <n>
+
+# Enforce the use of the hostname as the name of the local system for
+# authentication purposes (overrides the name option).
+#usehostname
+
+# Set the assumed name of the remote system for authentication purposes
+# to <n>.
+#remotename <n>
+
+# Add an entry to this system's ARP [Address Resolution Protocol]
+# table with the IP address of the peer and the Ethernet address of this
+# system.
+proxyarp
+
+# Use the system password database for authenticating the peer using
+# PAP. Note: mgetty already provides this option. If this is specified
+# then dialin from users using a script under Linux to fire up ppp wont work.
+# login
+
+# If this option is given, pppd will send an LCP echo-request frame to the
+# peer every n seconds. Normally the peer should respond to the echo-request
+# by sending an echo-reply. This option can be used with the
+# lcp-echo-failure option to detect that the peer is no longer connected.
+lcp-echo-interval 30
+
+# If this option is given, pppd will presume the peer to be dead if n
+# LCP echo-requests are sent without receiving a valid LCP echo-reply.
+# If this happens, pppd will terminate the connection. Use of this
+# option requires a non-zero value for the lcp-echo-interval parameter.
+# This option can be used to enable pppd to terminate after the physical
+# connection has been broken (e.g., the modem has hung up) in
+# situations where no hardware modem control lines are available.
+lcp-echo-failure 4
+
+# Set the LCP restart interval (retransmission timeout) to <n> seconds
+# (default 3).
+#lcp-restart <n>
+
+# Set the maximum number of LCP terminate-request transmissions to <n>
+# (default 3).
+#lcp-max-terminate <n>
+
+# Set the maximum number of LCP configure-request transmissions to <n>
+# (default 10).
+#lcp-max-configure <n>
+
+# Set the maximum number of LCP configure-NAKs returned before starting
+# to send configure-Rejects instead to <n> (default 10).
+#lcp-max-failure <n>
+
+# Set the IPCP restart interval (retransmission timeout) to <n>
+# seconds (default 3).
+#ipcp-restart <n>
+
+# Set the maximum number of IPCP terminate-request transmissions to <n>
+# (default 3).
+#ipcp-max-terminate <n>
+
+# Set the maximum number of IPCP configure-request transmissions to <n>
+# (default 10).
+#ipcp-max-configure <n>
+
+# Set the maximum number of IPCP configure-NAKs returned before starting
+# to send configure-Rejects instead to <n> (default 10).
+#ipcp-max-failure <n>
+
+# Set the PAP restart interval (retransmission timeout) to <n> seconds
+# (default 3).
+#pap-restart <n>
+
+# Set the maximum number of PAP authenticate-request transmissions to
+# <n> (default 10).
+#pap-max-authreq <n>
+
+# Set the maximum time that pppd will wait for the peer to authenticate
+# itself with PAP to <n> seconds (0 means no limit).
+#pap-timeout <n>
+
+# Set the CHAP restart interval (retransmission timeout for
+# challenges) to <n> seconds (default 3).
+#chap-restart <n>
+
+# Set the maximum number of CHAP challenge transmissions to <n>
+# (default 10).
+#chap-max-challenge
+
+# If this option is given, pppd will rechallenge the peer every <n>
+# seconds.
+#chap-interval <n>
+
+# With this option, pppd will accept the peer's idea of our local IP
+# address, even if the local IP address was specified in an option.
+#ipcp-accept-local
+
+# With this option, pppd will accept the peer's idea of its (remote) IP
+# address, even if the remote IP address was specified in an option.
+#ipcp-accept-remote
+
+# Disable the IPXCP and IPX protocols.
+# To let pppd pass IPX packets comment this out --- you'll probably also
+# want to install ipxripd, and have the Internal IPX Network option enabled
+# in your kernel. /usr/doc/HOWTO/IPX-HOWTO.gz contains more info.
+noipx
+
+# Exit once a connection has been made and terminated. This is the default,
+# unless the `persist' or `demand' option has been specified.
+#nopersist
+
+# Do not exit after a connection is terminated; instead try to reopen
+# the connection.
+#persist
+
+# Terminate after n consecutive failed connection attempts.
+# A value of 0 means no limit. The default value is 10.
+#maxfail <n>
+
+# Initiate the link only on demand, i.e. when data traffic is present.
+# With this option, the remote IP address must be specified by the user on
+# the command line or in an options file. Pppd will initially configure
+# the interface and enable it for IP traffic without connecting to the peer.
+# When traffic is available, pppd will connect to the peer and perform
+# negotiation, authentication, etc. When this is completed, pppd will
+# commence passing data packets (i.e., IP packets) across the link.
+#demand
+
+# Specifies that pppd should disconnect if the link is idle for <n> seconds.
+# The link is idle when no data packets (i.e. IP packets) are being sent or
+# received. Note: it is not advisable to use this option with the persist
+# option without the demand option. If the active-filter option is given,
+# data packets which are rejected by the specified activity filter also
+# count as the link being idle.
+#idle <n>
+
+# Specifies how many seconds to wait before re-initiating the link after
+# it terminates. This option only has any effect if the persist or demand
+# option is used. The holdoff period is not applied if the link was
+# terminated because it was idle.
+#holdoff <n>
+
+# Wait for up n milliseconds after the connect script finishes for a valid
+# PPP packet from the peer. At the end of this time, or when a valid PPP
+# packet is received from the peer, pppd will commence negotiation by
+# sending its first LCP packet. The default value is 1000 (1 second).
+# This wait period only applies if the connect or pty option is used.
+#connect-delay <n>
+
+# Packet filtering: for more information, see pppd(8)
+# Any packets matching the filter expression will be interpreted as link
+# activity, and will cause a "demand" connection to be activated, and reset
+# the idle connection timer. (idle option)
+# The filter expression is akin to that of tcpdump(1)
+#active-filter <filter-expression>
+
+# uncomment the line below this if you use PPPoE
+#plugin /usr/lib/pppd/plugins/pppoe.so
+
+# ---<End of File>---
diff --git a/testing/ppp/plog b/testing/ppp/plog
new file mode 100644
index 000000000..84d2c7340
--- /dev/null
+++ b/testing/ppp/plog
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ -s /var/log/ppp.log ]; then
+ exec tail "$@" /var/log/ppp.log
+else
+ exec tail "$@" /var/log/syslog | grep ' \(pppd\|chat\)\['
+fi
diff --git a/testing/ppp/poff b/testing/ppp/poff
new file mode 100644
index 000000000..8b4dffc59
--- /dev/null
+++ b/testing/ppp/poff
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+# Written by John Hasler <john@dhh.gt.org> and based on work
+# by Phil Hands <phil@hands.com>. Distributed under the GNU GPL
+
+if [ -x /usr/bin/kill ]; then
+ KILL="/usr/bin/kill"
+else
+ KILL="/bin/kill"
+fi
+SIG=TERM
+DONE="stopped"
+MODE=""
+
+usage ()
+{
+ cat <<!EOF!
+usage: $0 [option] [provider]
+options:
+ -r Cause pppd to drop the line and redial.
+ -d Toggle the state of pppd's debug option.
+ -c Cause pppd to renegotiate compression.
+ -a Stop all pppd's. 'provider' will be ignored.
+ -h Print this help summary and exit.
+ -v Print version and exit.
+ none Stop pppd.
+
+Options may not be combined.
+
+If 'provider' is omitted pppd will be stopped or signalled if and only if
+there is exactly one running unless the '-a' option was given. If
+'provider' is supplied the pppd controlling the connection to that
+provider will be stopped or signalled.
+!EOF!
+}
+
+# Get option. If there are none replace the "?" that getopts puts in
+# FLAG on error with "null".
+getopts rdcavh FLAG
+if [ "$?" -ne 0 ]; then
+ FLAG="null"
+fi
+
+# Check for additional options. Should be none.
+getopts :rdcavh DUMMY
+if [ "$?" -eq 0 ]; then
+ echo "$0: Illegal option -- ${OPTARG}."
+ exit 1
+fi
+
+case $FLAG in
+ "r") SIG=HUP; DONE=signalled; shift ;;
+ "d") SIG=USR1; DONE=signalled; shift ;;
+ "c") SIG=USR2; DONE=signalled; shift ;;
+ "a") MODE="all"; shift ;;
+ "v") echo "$0$Revision: 1.1 $_TrickToPrint_RCS_Revision"; exit 0 ;;
+ "h") usage; exit 0 ;;
+ "?") exit 1;
+esac
+
+# Get the PIDs of all the pppds running. Could also get these from
+# /var/run, but pppd doesn't create .pid files until ppp is up.
+PIDS=`pidof pppd`
+
+# poff is pointless if pppd isn't running.
+if test -z "$PIDS"; then
+ echo "$0: No pppd is running. None ${DONE}."
+ exit 1
+fi
+
+# Find out how many pppd's are running.
+N=`echo "$PIDS" | wc -w`
+
+# If there are no arguments we can't do anything if there is more than one
+# pppd running.
+if test "$#" -eq 0 -a "$N" -gt 1 -a $FLAG != "a" ; then
+ echo "$0: More than one pppd running and no "-a" option and
+no arguments supplied. Nothing ${DONE}."
+ exit 1
+fi
+
+# If either there are no arguments or '-a' was specified kill all the
+# pppd's.
+if test "$#" -eq 0 -o "$MODE" = "all" ; then
+ $KILL -$SIG $PIDS || {
+ echo "$0: $KILL failed. None ${DONE}."
+ exit 1
+ }
+ exit 0
+fi
+
+# There is an argument, so kill the pppd started on that provider.
+PID=`ps axw | grep "[ /]pppd call $1 *\$" | awk '{print $1}'`
+if test -n "$PID" ; then
+ $KILL -$SIG $PID || {
+ echo "$0: $KILL failed. None ${DONE}."
+ exit 1
+ }
+else
+ echo "$0: I could not find a pppd process for provider '$1'. None ${DONE}."
+ exit 1
+fi
+exit 0
diff --git a/testing/ppp/pon b/testing/ppp/pon
new file mode 100644
index 000000000..36885050b
--- /dev/null
+++ b/testing/ppp/pon
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+case "$1" in
+ -*) echo "
+Usage: pon [provider] [arguments]
+
+If you specify one argument, a PPP connection will be started using
+settings from the appropriate file in the /etc/ppp/peers/ directory, and
+any additional arguments supplied will be passed as extra arguments to
+pppd.
+"
+ exit 0
+ ;;
+esac
+
+if [ -z "$1" -a ! -f /etc/ppp/peers/provider ]; then
+ echo "
+Please configure /etc/ppp/peers/provider or use a command line argument to
+use another file in /etc/ppp/peers/ directory.
+"
+ exit 1
+fi
+
+if [ "$1" -a ! -f "/etc/ppp/peers/$1" ]; then
+ echo "
+The file /etc/ppp/peers/$1 does not exist.
+"
+ exit 1
+fi
+
+exec /usr/sbin/pppd call ${@:-provider}
+
diff --git a/testing/ppp/pon.1 b/testing/ppp/pon.1
new file mode 100644
index 000000000..bb3220564
--- /dev/null
+++ b/testing/ppp/pon.1
@@ -0,0 +1,121 @@
+.\" This manual is published under the GPL.
+.\" All guidelines specified in the GPL apply here.
+.\" To get an ascii file:
+.\" groff -man -Tascii pon.1 > pon.txt
+.\"
+.TH PON 1 "July 2000" "Debian Project" "Debian PPPD"
+.SH NAME
+pon, poff, plog \- starts up, shuts down or lists the log of PPP connections
+.SH SYNOPSIS
+.B pon
+[ isp-name [ options ] ]
+.br
+.B poff
+[ -r ] [ -d ] [ -c ] [ -a ] [ -h ] [ isp-name ]
+.br
+.B plog
+[ arguments ]
+.SH DESCRIPTION
+This manual page describes the \fBpon\fP, \fBplog\fP and \fBpoff\fP
+scripts, which allow users to control PPP connections.
+..
+.SS pon
+\fBpon\fP, invoked without arguments, runs the \fI/etc/ppp/ppp_on_boot\fP
+file, if it exists and is executable. Otherwise, a PPP connection will be
+started using configuration from \fI/etc/ppp/peers/provider\fP.
+This is the default behaviour unless an \fBisp-name\fP argument is given.
+.PP
+For instance, to use ISP configuration "myisp" run:
+.IP
+pon myisp
+.PP
+\fBpon\fP will then use the options file \fI/etc/ppp/peers/myisp\fP.
+You can pass additional \fBoptions\fP after the ISP name, too.
+\fBpon\fP can be used to run multiple, simultaneous PPP connections.
+..
+.SS poff
+\fBpoff\fP closes a PPP connection. If more than one PPP connection exists,
+the one named in the argument to \fBpoff\fP will be killed, e.g.
+.IP
+poff myprovider2
+.PP
+will terminate the connection to myprovider2, and leave the PPP connections
+to e.g. "myprovider1" or "myprovider3" up and running.
+.PP
+\fBpoff\fP takes the following command line options:
+.RS
+.TP
+.B "\-r"
+causes the connection to be redialed after it is dropped.
+.TP
+.B "\-d"
+toggles the state of pppd's debug option.
+.TP
+.B "\-c"
+causes
+.BR pppd (8)
+to renegotiate compression.
+.TP
+.B "\-a"
+stops all running ppp connections. If the argument \fBisp-name\fP
+is given it will be ignored.
+.TP
+.B "\-h"
+displays help information.
+.TP
+.B "\-v"
+prints the version and exits.
+.PP
+If no argument is given, \fBpoff\fP will stop or signal pppd if and only
+if there is exactly one running. If more than one connection is active,
+it will exit with an error code of 1.
+..
+.SS plog
+\fBplog\fP shows you the last few lines of \fI/var/log/ppp.log\fP. If that
+file doesn't exist, it shows you the last few lines of your
+\fI/var/log/syslog\fP file, but excluding the lines not generated by pppd.
+This script makes use of the
+.BR tail (1)
+command, so arguments that can be passed to
+.BR tail (1)
+can also be passed to \fBplog\fP.
+.PP
+Note: the \fBplog\fP script can only be used by root or another system
+administrator in group "adm", due to security reasons. Also, to have all
+pppd-generated information in one logfile, that plog can show, you need the
+following line in your \fI/etc/syslog.conf\fP file:
+.PP
+local2.* -/var/log/ppp.log
+.RE
+.SH FILES
+.TP
+.I /etc/ppp/options
+PPPd system options file.
+.TP
+.I /etc/ppp/pap-secrets
+System PAP passwords file.
+.TP
+.I /etc/ppp/chap-secrets
+System CHAP passwords file.
+.TP
+.I /etc/ppp/peers/
+Directory holding the peer options files. The default file is called
+\fIprovider\fP.
+.TP
+.I /etc/chatscripts/provider
+The chat script invoked from the default \fI/etc/ppp/peers/provider\fP.
+.TP
+.I /var/log/ppp.log
+The default PPP log file.
+.SH AUTHORS
+The p-commands were written by Christoph Lameter <clameter@debian.org>.
+Updated and revised by Philip Hands <phil@hands.com>.
+.br
+This manual was written by Othmar Pasteka <othmar@tron.at>. Modified
+by Rob Levin <lilo@openprojects.net>, with some extensions taken from
+the old p-commands manual written by John Hasler <jhasler@debian.org>.
+.SH "SEE ALSO"
+.BR pppd (8),
+.BR chat (8),
+.BR tail (1).
+
diff --git a/testing/ppp/ppp b/testing/ppp/ppp
new file mode 100644
index 000000000..16e01bad7
--- /dev/null
+++ b/testing/ppp/ppp
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/pppd`
+case "$1" in
+ start)
+ stat_busy "Starting PPP daemon"
+ [ -z "$PID" ] && /usr/bin/pon
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon ppp
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping PPP daemon"
+ [ ! -z "$PID" ] && poff -a &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon ppp
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/testing/pptpclient/PKGBUILD b/testing/pptpclient/PKGBUILD
new file mode 100644
index 000000000..1cb05b6f8
--- /dev/null
+++ b/testing/pptpclient/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 142106 2011-11-05 10:12:06Z pierre $
+# Maintainer: Daniel Isenmann <daniel @ archlinux.org>
+# Contributor: Mark Nikkel <mnikkel@gmail.com>
+
+pkgname=pptpclient
+pkgver=1.7.2
+pkgrel=4
+pkgdesc="Client for the proprietary Microsoft Point-to-Point Tunneling Protocol, PPTP."
+arch=('i686' 'x86_64')
+url="http://pptpclient.sourceforge.net/"
+license=('GPL')
+depends=('ppp' 'iproute2')
+backup=('etc/ppp/options.pptp')
+source=("http://downloads.sourceforge.net/sourceforge/pptpclient/pptp-$pkgver.tar.gz")
+md5sums=('4c3d19286a37459a632c7128c92a9857')
+
+build() {
+ cd $srcdir/pptp-$pkgver
+
+ # use our CFLAGS and LDFLAGS
+ sed -i -e "/CFLAGS =/ c\CFLAGS = ${CFLAGS}" Makefile
+ sed -i -e "/LDFLAGS =/ c\LDFLAGS = ${LDFLAGS}" Makefile
+
+ # adjust ip path
+ sed -i 's#/bin/ip#/usr/sbin/ip#' routing.c
+
+ make
+}
+
+package() {
+ cd $srcdir/pptp-$pkgver
+ make DESTDIR=$pkgdir install
+}
diff --git a/testing/readline/PKGBUILD b/testing/readline/PKGBUILD
new file mode 100644
index 000000000..f1ebbc270
--- /dev/null
+++ b/testing/readline/PKGBUILD
@@ -0,0 +1,62 @@
+# $Id: PKGBUILD 141949 2011-11-03 12:23:03Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=readline
+_basever=6.2
+_patchlevel=001 #prepare for some patches
+pkgver=$_basever.$_patchlevel
+pkgrel=3
+pkgdesc="GNU readline library"
+arch=('i686' 'x86_64')
+url="http://tiswww.case.edu/php/chet/readline/rltop.html"
+license=('GPL')
+depends=('glibc' 'ncurses')
+backup=('etc/inputrc')
+options=('!emptydirs')
+install=readline.install
+source=(http://ftp.gnu.org/gnu/readline/readline-$_basever.tar.gz{,.sig}
+ inputrc)
+if [ $_patchlevel -gt 00 ]; then
+ for (( p=1; p<=$((10#${_patchlevel})); p++ )); do
+ source=(${source[@]} http://ftp.gnu.org/gnu/readline/readline-$_basever-patches/readline${_basever//./}-$(printf "%03d" $p){,.sig})
+ done
+fi
+md5sums=('67948acb2ca081f23359d0256e9a271c'
+ '928f7d248320a65e43c2dc427e99582b'
+ '58d54966c1191db45973cb3191ac621a'
+ '83287d52a482f790dfb30ec0a8746669'
+ '8e6a51e2e0e6e45a82752e3692c111ac')
+
+build() {
+ cd ${srcdir}/${pkgname}-$_basever
+ for (( p=1; p<=$((10#${_patchlevel})); p++ )); do
+ msg "applying patch readline${_basever//./}-$(printf "%03d" $p)"
+ patch -Np0 -i $srcdir/readline${_basever//./}-$(printf "%03d" $p)
+ done
+
+ # Remove RPATH from shared objects (FS#14366)
+ sed -i 's|-Wl,-rpath,$(libdir) ||g' support/shobj-conf
+
+ # build with -fPIC for x86_64 (FS#15634)
+ [ $CARCH == "x86_64" ] && CFLAGS="$CFLAGS -fPIC"
+
+ ./configure --prefix=/usr --libdir=/lib
+ make SHLIB_LIBS=-lncurses
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-$_basever
+ make DESTDIR=${pkgdir} install
+
+ install -Dm644 ${srcdir}/inputrc ${pkgdir}/etc/inputrc
+
+ # FHS recommends only shared libs in /lib
+ install -dm755 $pkgdir/usr/lib
+ mv $pkgdir/lib/*.a $pkgdir/usr/lib
+
+ # to make the linker find the shared lib and fix compile issues
+ cd ${pkgdir}/usr/lib
+ ln -sv /lib/libreadline.so .
+ ln -sv /lib/libhistory.so .
+}
diff --git a/testing/readline/inputrc b/testing/readline/inputrc
new file mode 100644
index 000000000..fd13a673b
--- /dev/null
+++ b/testing/readline/inputrc
@@ -0,0 +1,36 @@
+# do not bell on tab-completion
+#set bell-style none
+
+set meta-flag on
+set input-meta on
+set convert-meta off
+set output-meta on
+
+$if mode=emacs
+
+# for linux console and RH/Debian xterm
+"\e[1~": beginning-of-line
+"\e[4~": end-of-line
+"\e[5~": beginning-of-history
+"\e[6~": end-of-history
+"\e[7~": beginning-of-line
+"\e[3~": delete-char
+"\e[2~": quoted-insert
+"\e[5C": forward-word
+"\e[5D": backward-word
+"\e\e[C": forward-word
+"\e\e[D": backward-word
+"\e[1;5C": forward-word
+"\e[1;5D": backward-word
+
+# for rxvt
+"\e[8~": end-of-line
+
+# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
+"\eOH": beginning-of-line
+"\eOF": end-of-line
+
+# for freebsd console
+"\e[H": beginning-of-line
+"\e[F": end-of-line
+$endif
diff --git a/testing/readline/readline.install b/testing/readline/readline.install
new file mode 100644
index 000000000..06b646f23
--- /dev/null
+++ b/testing/readline/readline.install
@@ -0,0 +1,17 @@
+infodir=usr/share/info
+filelist=(history.info readline.info rluserman.info)
+
+post_upgrade() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/testing/reiserfsprogs/PKGBUILD b/testing/reiserfsprogs/PKGBUILD
new file mode 100644
index 000000000..0caddd355
--- /dev/null
+++ b/testing/reiserfsprogs/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 142096 2011-11-05 09:21:11Z pierre $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=reiserfsprogs
+pkgver=3.6.21
+pkgrel=4
+pkgdesc="Reiserfs utilities"
+arch=('i686' 'x86_64')
+url="http://www.kernel.org/"
+license=('GPL')
+groups=('base')
+depends=('util-linux-ng')
+source=("ftp://ftp.archlinux.org/other/reiserfsprogs/reiserfsprogs-${pkgver}.tar.bz2")
+md5sums=('0639cefac8f8150536cfa7531c2aa2d2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sbindir=/sbin
+ make
+}
+
+check() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make check
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ ln -s reiserfsck "${pkgdir}/sbin/fsck.reiserfs"
+ ln -s mkreiserfs "${pkgdir}/sbin/mkfs.reiserfs"
+}
diff --git a/testing/rfkill/60-rfkill.rules b/testing/rfkill/60-rfkill.rules
new file mode 100644
index 000000000..bc98a3bef
--- /dev/null
+++ b/testing/rfkill/60-rfkill.rules
@@ -0,0 +1 @@
+KERNEL=="rfkill", GROUP="rfkill", MODE="0664"
diff --git a/testing/rfkill/PKGBUILD b/testing/rfkill/PKGBUILD
new file mode 100644
index 000000000..68d7ec070
--- /dev/null
+++ b/testing/rfkill/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 142056 2011-11-04 23:31:12Z stephane $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=rfkill
+pkgver=0.4
+pkgrel=3
+pkgdesc="A tool for enabling and disabling wireless devices"
+arch=('i686' 'x86_64')
+url="http://linuxwireless.org/en/users/Documentation/rfkill"
+license=('custom')
+depends=('glibc' 'filesystem>=2010.01')
+source=(http://wireless.kernel.org/download/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ 60-rfkill.rules
+ rfkill.conf.d
+ rfkill.rc.d)
+backup=(etc/conf.d/rfkill)
+md5sums=('727892c0fb35c80ee3849fbe89b45350'
+ '63f9bf9264911242e430867a41e8918c'
+ '398e7cadf023e05e3e0c323aa33575b9'
+ '793f0510e26547eb2632efce7d16e50e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ # License
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+ # Udev rule
+ install -Dm644 "${srcdir}/60-rfkill.rules" "${pkgdir}/lib/udev/rules.d/60-rfkill.rules"
+ # Init script
+ install -Dm644 "${srcdir}/rfkill.conf.d" "${pkgdir}/etc/conf.d/rfkill"
+ install -Dm755 "${srcdir}/rfkill.rc.d" "${pkgdir}/etc/rc.d/rfkill"
+}
diff --git a/testing/rfkill/rfkill.conf.d b/testing/rfkill/rfkill.conf.d
new file mode 100644
index 000000000..4483da26c
--- /dev/null
+++ b/testing/rfkill/rfkill.conf.d
@@ -0,0 +1,20 @@
+#
+# /etc/conf.d/rfkill
+# Configuration for the rfkill startup script
+#
+
+# List of devices to block on startup (space-separated)
+RFKILL_BLOCK=""
+
+# List of devices to unblock on startup (space-separated)
+RFKILL_UNBLOCK="all"
+
+# Supported device names are: all, wifi, bluetooth, umb, wimax, wwan, gps and specific device names like phy0, hci0, ...
+# See "rfkill list" for available devices
+# Examples:
+#
+# Block all bluetooth devices:
+# RFKILL_BLOCK="bluetooth"
+#
+# Unblock the phy0 wifi device and all wwan devices:
+# RFKILL_UNBLOCK="phy0 wwan"
diff --git a/testing/rfkill/rfkill.rc.d b/testing/rfkill/rfkill.rc.d
new file mode 100755
index 000000000..ce90ee150
--- /dev/null
+++ b/testing/rfkill/rfkill.rc.d
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/rfkill
+
+case "$1" in
+ start)
+ for device in ${RFKILL_BLOCK}; do
+ stat_busy "Blocking rfkill device: ${device}"
+ /usr/sbin/rfkill block ${device}
+ if [ $? -eq 0 ]; then
+ stat_done
+ else
+ stat_fail
+ fi
+ done
+ for device in ${RFKILL_UNBLOCK}; do
+ stat_busy "Unblocking rfkill device: ${device}"
+ /usr/sbin/rfkill unblock ${device}
+ if [ $? -eq 0 ]; then
+ stat_done
+ else
+ stat_fail
+ fi
+ done
+ ;;
+ stop)
+ ;;
+ restart)
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start}"
+ exit 1
+ ;;
+esac
+exit 0
diff --git a/testing/rpcbind/PKGBUILD b/testing/rpcbind/PKGBUILD
new file mode 100644
index 000000000..c7600e76c
--- /dev/null
+++ b/testing/rpcbind/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 141984 2011-11-03 20:14:20Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=rpcbind
+pkgver=0.2.0
+pkgrel=5
+pkgdesc="portmap replacement which supports RPC over various protocols"
+arch=(i686 x86_64)
+depends=('bash' 'glibc' 'libtirpc')
+url="http://rpcbind.sourceforge.net"
+license=('custom')
+replaces=('portmap')
+source=(http://downloads.sourceforge.net/sourceforge/rpcbind/rpcbind-0.2.0.tar.bz2
+ rpcbind-sunrpc.patch
+ rpcbind)
+md5sums=('1a77ddb1aaea8099ab19c351eeb26316'
+ 'c02ac36a98baac70b8a26190524b7b73'
+ '78a963654f57cbb209e228884767836e')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ # patch for iana services file
+ patch -Np1 -i ../rpcbind-sunrpc.patch
+ ./configure --prefix=/usr
+ make
+}
+
+check() {
+ cd $srcdir/$pkgname-$pkgver
+ make check
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+ # install missing man page - https://bugs.archlinux.org/task/21271
+ install -m644 man/rpcinfo.8 $pkgdir/usr/share/man/man8/
+ # install daemon
+ install -D -m755 $srcdir/rpcbind $pkgdir/etc/rc.d/rpcbind
+ # install license
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/rpcbind/COPYING
+}
diff --git a/testing/rpcbind/rpcbind b/testing/rpcbind/rpcbind
new file mode 100755
index 000000000..87c5b50da
--- /dev/null
+++ b/testing/rpcbind/rpcbind
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID="$(pidof -o %PPID /usr/bin/rpcbind)"
+case "$1" in
+ start)
+ stat_busy "Starting rpcbind"
+ [ -z "$PID" ] && /usr/bin/rpcbind &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ PID=$(pidof -o %PPID /usr/bin/rpcbind)
+ echo $PID > /var/run/rpcbind.pid
+ add_daemon rpcbind
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping rpcbind"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm /var/run/rpcbind.pid
+ rm_daemon rpcbind
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/testing/rpcbind/rpcbind-sunrpc.patch b/testing/rpcbind/rpcbind-sunrpc.patch
new file mode 100644
index 000000000..76cf54ba9
--- /dev/null
+++ b/testing/rpcbind/rpcbind-sunrpc.patch
@@ -0,0 +1,22 @@
+--- rpcbind-0.1.7/src/rpcbind.c.orig 2008-11-19 14:17:34.000000000 +0100
++++ rpcbind-0.1.7/src/rpcbind.c 2010-01-07 13:03:37.416632894 +0100
+@@ -114,7 +114,7 @@
+ char *udp_uaddr; /* Universal UDP address */
+ char *tcp_uaddr; /* Universal TCP address */
+ #endif
+-static char servname[] = "rpcbind";
++static char servname[] = "sunrpc";
+ static char superuser[] = "superuser";
+
+ int main __P((int, char *[]));
+--- rpcbind-0.1.7/src/rpcinfo.c~ 2010-01-08 16:14:24.592156602 +0000
++++ rpcbind-0.1.7/src/rpcinfo.c 2010-01-08 16:14:31.578838609 +0000
+@@ -633,7 +633,7 @@
+ {
+ memset (&hints, 0, sizeof hints);
+ hints.ai_family = AF_INET;
+- if ((error = getaddrinfo (host, "rpcbind", &hints, &res)) != 0 &&
++ if ((error = getaddrinfo (host, "sunrpc", &hints, &res)) != 0 &&
+ (error = getaddrinfo (host, "portmapper", &hints, &res)) != 0)
+ {
+ fprintf (stderr, "rpcinfo: %s: %s\n",
diff --git a/testing/sed/PKGBUILD b/testing/sed/PKGBUILD
new file mode 100644
index 000000000..1fb61309d
--- /dev/null
+++ b/testing/sed/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 141951 2011-11-03 13:36:47Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=sed
+pkgver=4.2.1
+pkgrel=4
+pkgdesc="GNU stream editor"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/sed"
+license=('GPL3')
+groups=('base')
+depends=('acl' 'sh')
+makedepends=('gettext')
+install=sed.install
+source=(ftp://ftp.gnu.org/pub/gnu/sed/${pkgname}-${pkgver}.tar.gz{,.sig})
+md5sums=('f0fd4d7da574d4707e442285fd2d3b86'
+ '91871b227dbf0916e019ba1fb0fbfdf3')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --bindir=/bin --without-included-regex
+ make
+}
+
+check() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/testing/sed/sed.install b/testing/sed/sed.install
new file mode 100644
index 000000000..c0524038b
--- /dev/null
+++ b/testing/sed/sed.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(sed.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
diff --git a/testing/sox/PKGBUILD b/testing/sox/PKGBUILD
new file mode 100644
index 000000000..ebe832d53
--- /dev/null
+++ b/testing/sox/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 142161 2011-11-05 11:38:13Z ibiru $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
+
+pkgname=sox
+pkgver=14.3.2
+pkgrel=4
+pkgdesc="The Swiss Army knife of sound processing tools"
+arch=('i686' 'x86_64')
+url="http://sox.sourceforge.net/"
+license=('GPL' 'LGPL')
+depends=('libltdl' 'file' 'libsndfile' 'libpng' 'lame' 'opencore-amr')
+makedepends=('ffmpeg' 'libao' 'libmad' 'libid3tag' 'wavpack' 'libpulse')
+optdepends=('libao: for ao plugin'
+ 'ffmpeg: for ffmpeg plugin'
+ 'libmad: for mp3 plugin'
+ 'libid3tag: for mp3 plugin'
+ 'wavpack: for wavpack plugin'
+ 'libpulse: for pulse plugin')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ sox-14.3.2-ffmpeg.patch)
+sha1sums=('026636c90d7accba76225a2821aaa2ffa6fe41a3'
+ '86caa6aa86a0bf7a048522114d4efd11acbbda70')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/sox-14.3.2-ffmpeg.patch"
+ sed -i 's|man1/sox.1 soxeffect.7|man1/sox.1.gz soxeffect.7.gz|' Makefile.am
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --with-dyn-default --with-distro="Arch Linux"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/sox/sox-14.3.2-ffmpeg.patch b/testing/sox/sox-14.3.2-ffmpeg.patch
new file mode 100644
index 000000000..5289b9b47
--- /dev/null
+++ b/testing/sox/sox-14.3.2-ffmpeg.patch
@@ -0,0 +1,40 @@
+Index: sox-14.3.2/src/ffmpeg.c
+===================================================================
+--- sox-14.3.2.orig/src/ffmpeg.c
++++ sox-14.3.2/src/ffmpeg.c
+@@ -91,7 +91,7 @@ static int stream_component_open(priv_t
+
+ if (!codec || avcodec_open(enc, codec) < 0)
+ return -1;
+- if (enc->codec_type != CODEC_TYPE_AUDIO) {
++ if (enc->codec_type != AVMEDIA_TYPE_AUDIO) {
+ lsx_fail("ffmpeg CODEC %x is not an audio CODEC", enc->codec_type);
+ return -1;
+ }
+@@ -182,7 +182,7 @@ static int startread(sox_format_t * ft)
+ /* Find audio stream (FIXME: allow different stream to be selected) */
+ for (i = 0; (unsigned)i < ffmpeg->ctxt->nb_streams; i++) {
+ AVCodecContext *enc = ffmpeg->ctxt->streams[i]->codec;
+- if (enc->codec_type == CODEC_TYPE_AUDIO && ffmpeg->audio_index < 0) {
++ if (enc->codec_type == AVMEDIA_TYPE_AUDIO && ffmpeg->audio_index < 0) {
+ ffmpeg->audio_index = i;
+ break;
+ }
+@@ -273,7 +273,7 @@ static AVStream *add_audio_stream(sox_fo
+
+ c = st->codec;
+ c->codec_id = codec_id;
+- c->codec_type = CODEC_TYPE_AUDIO;
++ c->codec_type = AVMEDIA_TYPE_AUDIO;
+
+ /* put sample parameters */
+ c->bit_rate = 256000; /* FIXME: allow specification */
+@@ -423,7 +423,7 @@ static size_t write_samples(sox_format_t
+ av_init_packet(&pkt);
+ pkt.size = avcodec_encode_audio(c, ffmpeg->audio_buf_aligned, AVCODEC_MAX_AUDIO_FRAME_SIZE, ffmpeg->samples);
+ pkt.pts = av_rescale_q(c->coded_frame->pts, c->time_base, ffmpeg->audio_st->time_base);
+- pkt.flags |= PKT_FLAG_KEY;
++ pkt.flags |= AV_PKT_FLAG_KEY;
+ pkt.stream_index = ffmpeg->audio_st->index;
+ pkt.data = ffmpeg->audio_buf_aligned;
+
diff --git a/testing/sysfsutils/PKGBUILD b/testing/sysfsutils/PKGBUILD
new file mode 100644
index 000000000..fd238c0c4
--- /dev/null
+++ b/testing/sysfsutils/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 141986 2011-11-03 20:17:26Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=sysfsutils
+pkgver=2.1.0
+pkgrel=7
+pkgdesc="System Utilities Based on Sysfs"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+url="http://linux-diag.sourceforge.net/Sysfsutils.html"
+groups=('base')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/sourceforge/linux-diag/${pkgname}-${pkgver}.tar.gz)
+md5sums=('14e7dcd0436d2f49aa403f67e1ef7ddc')
+options=(!libtool)
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+check() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make check
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ cd "${pkgdir}"
+ mkdir -v lib
+ mv -v usr/lib/libsysfs.so.2* lib/
+ ln -svf ../../lib/libsysfs.so.2 usr/lib/libsysfs.so
+}
diff --git a/testing/tar/PKGBUILD b/testing/tar/PKGBUILD
new file mode 100644
index 000000000..4ebcbd5fd
--- /dev/null
+++ b/testing/tar/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 141953 2011-11-03 14:13:05Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=tar
+pkgver=1.26
+pkgrel=2
+pkgdesc="Utility used to store, backup, and transport files"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/tar/tar.html"
+license=('GPL3')
+groups=('base')
+depends=('glibc' 'sh')
+options=('!emptydirs')
+install=tar.install
+source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig}
+ tar.1)
+md5sums=('0ced6f20b9fa1bea588005b5ad4b52c1'
+ '6618d5fe7785e138c27d7d6a24e998b2'
+ 'e97e7343f4e23724b4c48bca2f033e38')
+
+build() {
+ cd ${srcdir}/$pkgname-$pkgver
+
+ ./configure --prefix=/usr --libexecdir=/usr/lib/tar --bindir=/bin
+ make
+}
+
+check() {
+ cd ${srcdir}/$pkgname-$pkgver
+ make check
+}
+
+package() {
+ cd ${srcdir}/$pkgname-$pkgver
+ make DESTDIR=${pkgdir} install
+ install -Dm644 ${srcdir}/tar.1 ${pkgdir}/usr/share/man/man1/tar.1
+}
diff --git a/testing/tar/tar.1 b/testing/tar/tar.1
new file mode 100644
index 000000000..75bbcd38c
--- /dev/null
+++ b/testing/tar/tar.1
@@ -0,0 +1,367 @@
+.\" generated by script on Fri Aug 19 16:19:30 2011
+.Dd Aug 19, 2011
+.Dt TAR 1
+.Sh NAME
+.Nm tar
+.Nd The GNU version of the tar archiving utility
+.Sh SYNOPSIS
+.Nm tar
+.Oo Fl Oc Cm A Fl \-catenate \-concatenate Cm \||\| c Fl \-create Cm \||\| d Fl \-diff \-compare Cm \||\| Fl \-delete Cm \||\| r Fl \-append Cm \||\| t Fl \-list Cm \||\| Fl \-test\-label Cm \||\| u Fl \-update Cm \||\| x Fl \-extract \-get
+.Op Ar options
+.Op Ar pathname ...
+.Sh DESCRIPTION
+.Nm Tar
+stores and extracts files from a tape or disk archive.
+.Pp
+The first argument to
+tar
+should be a function; either one of the letters
+.Cm Acdrtux ,
+or one of the long function names.
+A function letter need not be prefixed with ``\-'', and may be combined
+with other single-letter options.
+A long function name must be prefixed with
+.Cm \\-\\- .
+Some options take a parameter; with the single-letter form
+these must be given as separate arguments.
+With the long form, they may be given by appending
+.Cm = Ns Ar value
+to the option.
+.Sh FUNCTION LETTERS
+Main operation mode:
+.Bl -tag -width flag
+.It Fl A , Fl \-catenate , Fl \-concatenate
+append tar files to an archive
+.It Fl c , Fl \-create
+create a new archive
+.It Fl d , Fl \-diff , Fl \-compare
+find differences between archive and file system
+.It Fl \-delete
+delete from the archive (not on mag tapes!)
+.It Fl r , Fl \-append
+append files to the end of an archive
+.It Fl t , Fl \-list
+list the contents of an archive
+.It Fl \-test\-label
+test the archive volume label and exit
+.It Fl u , Fl \-update
+only append files newer than copy in archive
+.It Fl x , Fl \-extract , Fl \-get
+extract files from an archive
+.El
+.Sh OTHER OPTIONS
+Operation modifiers:
+.Bl -tag -width flag
+.It \-[0\-7][lmh]
+specify drive and density
+.It Fl a , Fl \-auto\-compress
+use archive suffix to determine the compression program
+.It Fl \-add\-file Ns \= Ns Ar FILE
+add given FILE to the archive (useful if its name starts with a dash)
+.It Fl \-anchored
+patterns match file name start
+.It Fl \-no\-anchored
+patterns match after any `/' (default for exclusion)
+.It Fl \-atime\-preserve
+preserve access times on dumped files, either by restoring the times
+.It Fl \-no\-auto\-compress
+do not use archive suffix to determine the compression program
+.It Fl b , Fl \-blocking\-factor Ar BLOCKS
+BLOCKS x 512 bytes per record
+.It Fl B , Fl \-read\-full\-records
+reblock as we read (for 4.2BSD pipes)
+.It Fl \-backup
+backup before removal, choose version CONTROL
+.It Fl C , Fl \-directory Ar DIR
+change to directory DIR
+.It Fl \-check\-device
+check device numbers when creating incremental archives (default)
+.It Fl \-no\-check\-device
+do not check device numbers when creating incremental archives
+.It Fl \-checkpoint
+display progress messages every NUMBERth record (default 10)
+.It Fl \-checkpoint\-action Ns \= Ns Ar ACTION
+execute ACTION on each checkpoint
+.It Fl \-delay\-directory\-restore
+delay setting modification times and permissions of extracted
+.It Fl \-no\-delay\-directory\-restore
+cancel the effect of --delay-directory-restore option
+.It Fl \-exclude Ns \= Ns Ar PATTERN
+exclude files, given as a PATTERN
+.It Fl \-exclude\-backups
+exclude backup and lock files
+.It Fl \-exclude\-caches
+exclude contents of directories containing CACHEDIR.TAG,
+.It Fl \-exclude\-caches\-all
+exclude directories containing CACHEDIR.TAG
+.It Fl \-exclude\-caches\-under
+exclude everything under directories containing CACHEDIR.TAG
+.It Fl \-exclude\-tag Ns \= Ns Ar FILE
+exclude contents of directories containing FILE, except
+.It Fl \-exclude\-tag\-all Ns \= Ns Ar FILE
+exclude directories containing FILE
+.It Fl \-exclude\-tag\-under Ns \= Ns Ar FILE
+exclude everything under directories containing FILE
+.It Fl \-exclude\-vcs
+exclude version control system directories
+.It Fl f , Fl \-file Ar ARCHIVE
+use archive file or device ARCHIVE
+.It Fl F , Fl \-info\-script , Fl \-new\-volume\-script Ar NAME
+run script at end of each tape (implies -M)
+.It Fl \-force\-local
+archive file is local even if it has a colon
+.It Fl \-full\-time
+print file time to its full resolution
+.It Fl g , Fl \-listed\-incremental Ar FILE
+handle new GNU-format incremental backup
+.It Fl G , Fl \-incremental
+handle old GNU-format incremental backup
+.It Fl \-group Ns \= Ns Ar NAME
+force NAME as group for added files
+.It Fl h , Fl \-dereference
+follow symlinks; archive and dump the files they point to
+.It Fl H , Fl \-format Ar FORMAT
+create archive of the given formatFORMAT is one of the following:
+.Bl -tag -width flag
+.It Fl \-format=gnu
+GNU tar 1.13.x format
+.It Fl \-format=oldgnu
+GNU format as per tar <= 1.12
+.It Fl \-format=pax
+POSIX 1003.1-2001 (pax) format
+.It Fl \-format=posix
+same as pax
+.It Fl \-format=ustar
+POSIX 1003.1-1988 (ustar) format
+.It Fl \-format=v7
+old V7 tar format
+.El
+.It Fl \-hard\-dereference
+follow hard links; archive and dump the files they refer to
+.It Fl i , Fl \-ignore\-zeros
+ignore zeroed blocks in archive (means EOF)
+.It Fl I , Fl \-use\-compress\-program Ar PROG
+filter through PROG (must accept -d)
+.It Fl \-ignore\-case
+ignore case
+.It Fl \-no\-ignore\-case
+case sensitive matching (default)
+.It Fl \-ignore\-command\-error
+ignore exit codes of children
+.It Fl \-no\-ignore\-command\-error
+treat non-zero exit codes of children as error
+.It Fl \-ignore\-failed\-read
+do not exit with nonzero on unreadable files
+.It Fl \-index\-file Ns \= Ns Ar FILE
+send verbose output to FILE
+.It Fl j , Fl \-bzip2
+
+.It Fl J , Fl \-xz
+
+.It Fl k , Fl \-keep\-old\-files
+don't replace existing files when extracting
+.It Fl K , Fl \-starting\-file Ar MEMBER-NAME
+begin at member MEMBER-NAME in the archive
+.It Fl \-keep\-newer\-files
+don't replace existing files that are newer than their archive copies
+.It Fl l , Fl \-check\-links
+print a message if not all links are dumped
+.It Fl L , Fl \-tape\-length Ar NUMBER
+change tape after writing NUMBER x 1024 bytes
+.It Fl \-level Ns \= Ns Ar NUMBER
+dump level for created listed-incremental archive
+.It Fl \-lzip
+
+.It Fl \-lzma
+
+.It Fl \-lzop
+
+.It Fl m , Fl \-touch
+don't extract file modified time
+.It Fl M , Fl \-multi\-volume
+create/list/extract multi-volume archive
+.It Fl \-mode Ns \= Ns Ar CHANGES
+force (symbolic) mode CHANGES for added files
+.It Fl \-mtime Ns \= Ns Ar DATE-OR-FILE
+set mtime for added files from DATE-OR-FILE
+.It Fl n , Fl \-seek
+archive is seekable
+.It Fl N , Fl \-newer , Fl \-after\-date Ar DATE-OR-FILE
+only store files newer than DATE-OR-FILE
+.It Fl \-newer\-mtime Ns \= Ns Ar DATE
+compare date and time when data changed only
+.It Fl \-null
+-T reads null-terminated names, disable -C
+.It Fl \-no\-null
+disable the effect of the previous --null option
+.It Fl \-numeric\-owner
+always use numbers for user/group names
+.It Fl O , Fl \-to\-stdout
+extract files to standard output
+.It Fl \-occurrence
+process only the NUMBERth occurrence of each file in the archive;
+.It Fl \-old\-archive , Fl \-portability
+same as --format=v7
+.It Fl \-one\-file\-system
+stay in local file system when creating archive
+.It Fl \-overwrite
+overwrite existing files when extracting
+.It Fl \-overwrite\-dir
+overwrite metadata of existing directories when extracting (default)
+.It Fl \-no\-overwrite\-dir
+preserve metadata of existing directories
+.It Fl \-owner Ns \= Ns Ar NAME
+force NAME as owner for added files
+.It Fl p , Fl \-preserve\-permissions , Fl \-same\-permissions
+extract information about file permissions (default for superuser)
+.It Fl P , Fl \-absolute\-names
+don't strip leading `/'s from file names
+.It Fl \-pax\-option Ns \= Ns Ar keyword[[:]=value][,keyword[[:]=value]]...
+control pax keywords
+.It Fl \-posix
+same as --format=posix
+.It Fl \-preserve
+same as both -p and -s
+.It Fl \-quote\-chars Ns \= Ns Ar STRING
+additionally quote characters from STRING
+.It Fl \-no\-quote\-chars Ns \= Ns Ar STRING
+disable quoting for characters from STRING
+.It Fl \-quoting\-style Ns \= Ns Ar STYLE
+set name quoting style; see below for valid STYLE values
+.It Fl R , Fl \-block\-number
+show block number within archive with each message
+.It Fl \-record\-size Ns \= Ns Ar NUMBER
+NUMBER of bytes per record, multiple of 512
+.It Fl \-recursion
+recurse into directories (default)
+.It Fl \-no\-recursion
+avoid descending automatically in directories
+.It Fl \-recursive\-unlink
+empty hierarchies prior to extracting directory
+.It Fl \-remove\-files
+remove files after adding them to the archive
+.It Fl \-restrict
+disable use of some potentially harmful options
+.It Fl \-rmt\-command Ns \= Ns Ar COMMAND
+use given rmt COMMAND instead of rmt
+.It Fl \-rsh\-command Ns \= Ns Ar COMMAND
+use remote COMMAND instead of rsh
+.It Fl s , Fl \-preserve\-order , Fl \-same\-order
+sort names to extract to match archive
+.It Fl S , Fl \-sparse
+handle sparse files efficiently
+.It Fl \-same\-owner
+try extracting files with the same ownership as exists in the archive (default for superuser)
+.It Fl \-no\-same\-owner
+extract files as yourself (default for ordinary users)
+.It Fl \-no\-same\-permissions
+apply the user's umask when extracting permissions from the archive (default for ordinary users)
+.It Fl \-no\-seek
+archive is not seekable
+.It Fl \-show\-defaults
+show tar defaults
+.It Fl \-show\-omitted\-dirs
+when listing or extracting, list each directory that does not match search criteria
+.It Fl \-show\-transformed\-names , Fl \-show\-stored\-names
+show file or archive names after transformation
+.It Fl \-sparse\-version Ns \= Ns Ar MAJOR[.MINOR]
+set version of the sparse format to use (implies --sparse)
+.It Fl \-strip\-components Ns \= Ns Ar NUMBER
+strip NUMBER leading components from file names on extraction
+.It Fl \-suffix Ns \= Ns Ar STRING
+backup before removal, override usual suffix ('~' unless overridden by environment variable SIMPLE_BACKUP_SUFFIX)
+.It Fl T , Fl \-files\-from Ar FILE
+get names to extract or create from FILE
+.It Fl \-to\-command Ns \= Ns Ar COMMAND
+pipe extracted files to another program
+.It Fl \-totals
+print total bytes after processing the archive;
+.It Fl \-transform , Fl \-xform Ar EXPRESSION
+use sed replace EXPRESSION to transform file names
+.It Fl U , Fl \-unlink\-first
+remove each file prior to extracting over it
+.It Fl \-unquote
+unquote filenames read with -T (default)
+.It Fl \-no\-unquote
+do not unquote filenames read with -T
+.It Fl \-utc
+print file modification times in UTC
+.It Fl v , Fl \-verbose
+verbosely list files processed
+.It Fl V , Fl \-label Ar TEXT
+create archive with volume name TEXT; at list/extract time, use TEXT as a globbing pattern for volume name
+.It Fl \-volno\-file Ns \= Ns Ar FILE
+use/update the volume number in FILE
+.It Fl w , Fl \-interactive , Fl \-confirmation
+ask for confirmation for every action
+.It Fl W , Fl \-verify
+attempt to verify the archive after writing it
+.It Fl \-warning Ns \= Ns Ar KEYWORD
+warning control
+.It Fl \-wildcards
+use wildcards (default for exclusion)
+.It Fl \-wildcards\-match\-slash
+wildcards match `/' (default for exclusion)
+.It Fl \-no\-wildcards\-match\-slash
+wildcards do not match `/'
+.It Fl \-no\-wildcards
+verbatim string matching
+.It Fl X , Fl \-exclude\-from Ar FILE
+exclude patterns listed in FILE
+.It Fl z , Fl \-gzip , Fl \-gunzip Fl \-ungzip
+
+.It Fl Z , Fl \-compress , Fl \-uncompress
+
+.El
+.Sh ENVIRONMENT
+The behavior of tar is controlled by the following environment variables,
+among others:
+.Bl -tag -width Ds
+.It Ev SIMPLE_BACKUP_SUFFIX
+Backup prefix to use when extracting, if
+.Fl \-suffix
+is not specified.
+The backup suffix defaults to `~' if neither is specified.
+.It Ev TAR_OPTIONS
+Options to prepend to those specified on the command line, separated by
+whitespace. Embedded backslashes may be used to escape whitespace or
+backslashes within an option.
+.It Ev TAPE
+Device or file to use for the archive if
+.Fl \-file
+is not specified.
+If this environment variable is unset, use stdin or stdout instead.
+.It Ev TAR_LONGLINK_100
+.El
+.Sh EXAMPLES
+Create archive.tar from files foo and bar.
+.Bd -literal -offset indent -compact
+tar \-cf archive.tar foo bar
+.Ed
+List all files in archive.tar verbosely.
+.Bd -literal -offset indent -compact
+tar \-tvf archive.tar
+.Ed
+Extract all files from archive.tar.
+.Bd -literal -offset indent -compact
+tar \-xf archive.tar
+.Ed
+.Sh SEE ALSO
+.\" libarchive
+.Xr tar 5 ,
+.\" man-pages
+.Xr symlink 7 ,
+.Xr rmt 8
+.Sh HISTORY
+The
+.Nm tar
+command appeared in
+.At v7 .
+.Sh BUGS
+The GNU folks, in general, abhor man pages, and create info documents instead.
+Unfortunately, the info document describing tar is licensed under the GFDL with
+invariant cover texts, which makes it impossible to include any text
+from that document in this man page.
+Most of the text in this document was automatically extracted from the usage
+text in the source.
+It may not completely describe all features of the program.
diff --git a/testing/tar/tar.install b/testing/tar/tar.install
new file mode 100644
index 000000000..8de1f9766
--- /dev/null
+++ b/testing/tar/tar.install
@@ -0,0 +1,21 @@
+infodir=usr/share/info
+filelist=(tar.info tar.info-1 tar.info-2)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/testing/texinfo/PKGBUILD b/testing/texinfo/PKGBUILD
new file mode 100644
index 000000000..b5120227e
--- /dev/null
+++ b/testing/texinfo/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 141955 2011-11-03 14:24:19Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=texinfo
+pkgver=4.13a
+pkgrel=6
+pkgdesc="Utilities to work with and produce manuals, ASCII text, and on-line documentation from a single source file"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/texinfo/"
+license=('GPL3')
+groups=('base')
+depends=('ncurses' 'findutils' 'gzip')
+install=texinfo.install
+source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz{,.sig})
+md5sums=('71ba711519209b5fb583fed2b3d86fcb'
+ 'db2ca82c831684cd7cef181234017c46')
+
+build() {
+ cd ${srcdir}/${pkgname}-4.13
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-4.13
+ make DESTDIR=${pkgdir} install
+
+ # fix this here as it prevents make from trying to rebuild manual pages
+ sed -i 's#A-z#A-Za-z#' ${pkgdir}/usr/bin/texi2dvi
+}
diff --git a/testing/texinfo/texinfo.install b/testing/texinfo/texinfo.install
new file mode 100644
index 000000000..f1554e4f4
--- /dev/null
+++ b/testing/texinfo/texinfo.install
@@ -0,0 +1,21 @@
+infodir=usr/share/info
+filelist=(info.info info-stnd.info texinfo texinfo-1 texinfo-2 texinfo-3)
+
+post_install() {
+ # Scan *all* info files on install
+ for file in $(find $infodir -type f ! -name dir); do
+ install-info $file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
diff --git a/testing/transcode/PKGBUILD b/testing/transcode/PKGBUILD
new file mode 100644
index 000000000..e0ef88386
--- /dev/null
+++ b/testing/transcode/PKGBUILD
@@ -0,0 +1,78 @@
+# $Id: PKGBUILD 142163 2011-11-05 11:38:15Z ibiru $
+# Maintainer:
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: roberto <roberto@archlinux.org>
+
+pkgname=transcode
+_sripver=0.3-4
+pkgver=1.1.5
+pkgrel=7
+pkgdesc="A video/DVD ripper and encoder for the terminal/console"
+arch=('i686' 'x86_64')
+url="http://tcforge.berlios.de/"
+license=('GPL')
+depends=('gawk' 'imagemagick' 'lzo2' 'libdvdread' 'ffmpeg' 'mjpegtools'
+ 'libmpeg2' 'libxaw' 'libxml2' 'libxv' 'a52dec')
+makedepends=('nasm')
+options=('!libtool' '!makeflags')
+source=(http://download2.berlios.de/tcforge/${pkgname}-${pkgver}.tar.bz2
+ http://downloads.sourceforge.net/sourceforge/subtitleripper/subtitleripper-${_sripver}.tgz
+ transcode-1.1.5-jpeg-7.patch transcode-1.1.5-mpa.patch transcode-1.1.5-ffmpeg.patch)
+sha1sums=('48c36e06ca0cd1cdc1a9c6a241e231f896eefd26'
+ 'd93ff3578dd5f722c8f4ef16bc0903eec5781a0d'
+ '9e380c00a3b31725dc3ec483fa7bf5e3d8a8a977'
+ '6f45d9167c3aa15a83cb29545749f55eb1f1e5a2'
+ '2d3bb4486394ee55540e772f134e193874e5c2b4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 < ../transcode-1.1.5-jpeg-7.patch
+ patch -p1 < ../transcode-1.1.5-mpa.patch
+ patch -p1 < ../transcode-1.1.5-ffmpeg.patch
+
+ # building from here
+ ./configure --prefix=/usr \
+ --enable-sse=no --enable-sse2=no --enable-altivec=no --enable-mmx \
+ --enable-lame --enable-ogg --enable-vorbis --enable-theora \
+ --enable-libdv --enable-libxml2 --enable-v4l \
+ --enable-imagemagick --enable-libjpeg --enable-lzo --enable-mjpegtools \
+ --enable-sdl --enable-freetype2 --enable-a52 --enable-libpostproc \
+ --enable-xvid --enable-x264 --enable-alsa \
+ --enable-libmpeg2 --enable-libmpeg2convert \
+ --with-libxml2-prefix=/usr \
+ --with-mjpegtools-prefix=/usr \
+ --with-imagemagick-prefix=/usr \
+ --with-libdv-includes=/usr \
+ --with-libpostproc-includes=/usr/include/libpostproc \
+ --with-ogg-prefix=/usr \
+ --with-lame-libs=/usr \
+ --with-lzo-libs=/usr/lib \
+ --with-libavcodec-prefix=/usr \
+ --with-libavcodec-includes=/usr/include \
+ --with-libavcodec-libs=/usr/lib
+
+ make
+ ##############################################################################
+ # this imports the latest subtitleripper sources and replaces the internal
+ mkdir contrib
+ mv "${srcdir}/subtitleripper" contrib/subrip
+ # removes dependency on libppm, make it dependend on netpbm just failed, argh...
+ cd contrib/subrip
+ sed -e 's|^\(.*lppm.*\)$|#\1|' \
+ -e 's|^\(.*D_HAVE_LIB_PPM.*\)$|#\1|' \
+ -e 's/DEFINES :=/DEFINES = -DHAVE_GETLINE/' \
+ -i Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ cd contrib/subrip
+ install -m 755 pgm2txt "${pkgdir}/usr/bin/"
+ install -m 755 srttool "${pkgdir}/usr/bin/"
+ install -m 755 subtitle2pgm "${pkgdir}/usr/bin/"
+ install -m 755 subtitle2vobsub "${pkgdir}/usr/bin/"
+ install -m 755 vobsub2pgm "${pkgdir}/usr/bin/"
+}
diff --git a/testing/transcode/transcode-1.1.5-ffmpeg.patch b/testing/transcode/transcode-1.1.5-ffmpeg.patch
new file mode 100644
index 000000000..86e8272e9
--- /dev/null
+++ b/testing/transcode/transcode-1.1.5-ffmpeg.patch
@@ -0,0 +1,124 @@
+Index: transcode-1.1.5/encode/encode_lavc.c
+===================================================================
+--- transcode-1.1.5.orig/encode/encode_lavc.c
++++ transcode-1.1.5/encode/encode_lavc.c
+@@ -955,8 +955,6 @@ static void tc_lavc_config_defaults(TCLa
+ /*
+ * context *transcode* (not libavcodec) defaults
+ */
+- pd->ff_vcontext.mb_qmin = 2;
+- pd->ff_vcontext.mb_qmax = 31;
+ pd->ff_vcontext.max_qdiff = 3;
+ pd->ff_vcontext.max_b_frames = 0;
+ pd->ff_vcontext.me_range = 0;
+@@ -1116,8 +1114,6 @@ static int tc_lavc_read_config(TCLavcPri
+ // handled by transcode core
+ // { "vqmax", PCTX(qmax), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 60 },
+ // handled by transcode core
+- { "mbqmin", PCTX(mb_qmin), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 60 },
+- { "mbqmax", PCTX(mb_qmax), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 60 },
+ { "lmin", PAUX(lmin), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.01, 255.0 },
+ { "lmax", PAUX(lmax), TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.01, 255.0 },
+ { "vqdiff", PCTX(max_qdiff), TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31 },
+Index: transcode-1.1.5/export/aud_aux.c
+===================================================================
+--- transcode-1.1.5.orig/export/aud_aux.c
++++ transcode-1.1.5/export/aud_aux.c
+@@ -347,7 +347,7 @@ static int tc_audio_init_ffmpeg(vob_t *v
+ //-- set parameters (bitrate, channels and sample-rate) --
+ //--------------------------------------------------------
+ memset(&mpa_ctx, 0, sizeof(mpa_ctx)); // default all
+- mpa_ctx.codec_type = CODEC_TYPE_AUDIO;
++ mpa_ctx.codec_type = AVMEDIA_TYPE_AUDIO;
+ mpa_ctx.bit_rate = vob->mp3bitrate * 1000; // bitrate dest.
+ mpa_ctx.channels = vob->dm_chan; // channels
+ mpa_ctx.sample_rate = vob->a_rate;
+Index: transcode-1.1.5/export/export_ffmpeg.c
+===================================================================
+--- transcode-1.1.5.orig/export/export_ffmpeg.c
++++ transcode-1.1.5/export/export_ffmpeg.c
+@@ -643,8 +643,6 @@ MOD_init
+
+ lavc_venc_context->bit_rate = vob->divxbitrate * 1000;
+ lavc_venc_context->bit_rate_tolerance = lavc_param_vrate_tolerance * 1000;
+- lavc_venc_context->mb_qmin = lavc_param_mb_qmin;
+- lavc_venc_context->mb_qmax = lavc_param_mb_qmax;
+ lavc_venc_context->lmin= (int)(FF_QP2LAMBDA * lavc_param_lmin + 0.5);
+ lavc_venc_context->lmax= (int)(FF_QP2LAMBDA * lavc_param_lmax + 0.5);
+ lavc_venc_context->max_qdiff = lavc_param_vqdiff;
+Index: transcode-1.1.5/import/decode_lavc.c
+===================================================================
+--- transcode-1.1.5.orig/import/decode_lavc.c
++++ transcode-1.1.5/import/decode_lavc.c
+@@ -261,8 +261,12 @@ void decode_lavc(decode_t *decode)
+
+ //tc_log_msg(__FILE__, "SIZE: (%d) MP4(%d) blen(%d) BUF(%d) read(%ld)", len, mp4_size, buf_len, READ_BUFFER_SIZE, bytes_read);
+ do {
+- len = avcodec_decode_video(lavc_dec_context, &picture,
+- &got_picture, buffer+buf_len, mp4_size-buf_len);
++ AVPacket pkt;
++ av_init_packet( &pkt );
++ pkt.data = buffer+buf_len;
++ pkt.size = mp4_size-buf_len;
++ len = avcodec_decode_video2(lavc_dec_context, &picture,
++ &got_picture, &pkt);
+
+ if (len < 0) {
+ tc_log_error(__FILE__, "frame decoding failed");
+Index: transcode-1.1.5/import/probe_ffmpeg.c
+===================================================================
+--- transcode-1.1.5.orig/import/probe_ffmpeg.c
++++ transcode-1.1.5/import/probe_ffmpeg.c
+@@ -47,7 +47,7 @@ static void translate_info(const AVForma
+ for (i = 0; i < ctx->nb_streams; i++) {
+ st = ctx->streams[i];
+
+- if (st->codec->codec_type == CODEC_TYPE_VIDEO) {
++ if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
+ info->bitrate = st->codec->bit_rate / 1000;
+ info->width = st->codec->width;
+ info->height = st->codec->height;
+@@ -65,7 +65,7 @@ static void translate_info(const AVForma
+ for (i = 0; i < ctx->nb_streams; i++) {
+ st = ctx->streams[i];
+
+- if (st->codec->codec_type == CODEC_TYPE_AUDIO
++ if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO
+ && j < TC_MAX_AUD_TRACKS) {
+ info->track[j].format = 0x1; /* known wrong */
+ info->track[j].chan = st->codec->channels;
+Index: transcode-1.1.5/export/ffmpeg_cfg.c
+===================================================================
+--- transcode-1.1.5.orig/export/ffmpeg_cfg.c
++++ transcode-1.1.5/export/ffmpeg_cfg.c
+@@ -34,8 +34,6 @@ int lavc_param_vme = 4;
+ //int lavc_param_vqscale = 0;
+ //int lavc_param_vqmin = 2;
+ //int lavc_param_vqmax = 31;
+-int lavc_param_mb_qmin = 2;
+-int lavc_param_mb_qmax = 31;
+ int lavc_param_lmin = 2;
+ int lavc_param_lmax = 31;
+ int lavc_param_vqdiff = 3;
+@@ -140,8 +138,6 @@ TCConfigEntry lavcopts_conf[]={
+ // {"vqscale", &lavc_param_vqscale, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
+ // {"vqmin", &lavc_param_vqmin, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
+ // {"vqmax", &lavc_param_vqmax, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
+- {"mbqmin", &lavc_param_mb_qmin, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
+- {"mbqmax", &lavc_param_mb_qmax, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
+ {"lmin", &lavc_param_lmin, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.01, 255.0},
+ {"lmax", &lavc_param_lmax, TCCONF_TYPE_FLOAT, TCCONF_FLAG_RANGE, 0.01, 255.0},
+ {"vqdiff", &lavc_param_vqdiff, TCCONF_TYPE_INT, TCCONF_FLAG_RANGE, 1, 31},
+Index: transcode-1.1.5/export/ffmpeg_cfg.h
+===================================================================
+--- transcode-1.1.5.orig/export/ffmpeg_cfg.h
++++ transcode-1.1.5/export/ffmpeg_cfg.h
+@@ -13,8 +13,6 @@ extern int lavc_param_vme;
+ //extern int lavc_param_vqscale;
+ //extern int lavc_param_vqmin;
+ //extern int lavc_param_vqmax;
+-extern int lavc_param_mb_qmin;
+-extern int lavc_param_mb_qmax;
+ extern int lavc_param_lmin;
+ extern int lavc_param_lmax;
+ extern int lavc_param_vqdiff;
diff --git a/testing/transcode/transcode-1.1.5-jpeg-7.patch b/testing/transcode/transcode-1.1.5-jpeg-7.patch
new file mode 100644
index 000000000..288932a61
--- /dev/null
+++ b/testing/transcode/transcode-1.1.5-jpeg-7.patch
@@ -0,0 +1,16 @@
+http://bugs.gentoo.org/show_bug.cgi?id=294488
+
+Patch by: Salah Coronya
+
+Fix segmentation fault with jpeg-7 and above where dinfo.do_fancy_upsampling isn't set by default to FALSE anymore.
+
+--- export/export_jpg.c
++++ export/export_jpg.c
+@@ -91,6 +91,7 @@
+
+ jpeg_set_quality(&encinfo, quality, TRUE);
+ encinfo.raw_data_in = TRUE;
++ encinfo.do_fancy_downsampling = FALSE;
+ encinfo.in_color_space = JCS_YCbCr;
+
+ encinfo.comp_info[0].h_samp_factor = 2;
diff --git a/testing/transcode/transcode-1.1.5-mpa.patch b/testing/transcode/transcode-1.1.5-mpa.patch
new file mode 100644
index 000000000..e7fb0fc1c
--- /dev/null
+++ b/testing/transcode/transcode-1.1.5-mpa.patch
@@ -0,0 +1,10 @@
+--- transcode-1.1.5-old/export/aud_aux.c 2010-07-04 12:44:31.867550180 -0500
++++ transcode-1.1.5/export/aud_aux.c 2010-07-04 13:41:01.253292529 -0500
+@@ -347,6 +347,7 @@
+ //-- set parameters (bitrate, channels and sample-rate) --
+ //--------------------------------------------------------
+ memset(&mpa_ctx, 0, sizeof(mpa_ctx)); // default all
++ mpa_ctx.codec_type = CODEC_TYPE_AUDIO;
+ mpa_ctx.bit_rate = vob->mp3bitrate * 1000; // bitrate dest.
+ mpa_ctx.channels = vob->dm_chan; // channels
+ mpa_ctx.sample_rate = vob->a_rate;
diff --git a/testing/vi/PKGBUILD b/testing/vi/PKGBUILD
new file mode 100644
index 000000000..3262ba0fb
--- /dev/null
+++ b/testing/vi/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 142054 2011-11-04 23:27:15Z stephane $
+# Maintainer: tobias [ tobias at archlinux org ]
+
+pkgname=vi
+pkgver=050325
+pkgrel=2
+epoch=1
+pkgdesc='The original ex/vi text editor.'
+arch=('i686' 'x86_64')
+url='http://ex-vi.sourceforge.net/'
+license=('custom:ex')
+depends=('ncurses')
+optdepends=('mailx: used by the preserve command for notification')
+groups=('base')
+options=(strip !libtool emptydirs)
+source=(http://downloads.sourceforge.net/sourceforge/ex-vi/ex-${pkgver}.tar.bz2
+ exrc.sample
+ navkeys.patch
+ increase-tube.patch
+ preserve_dir.patch)
+md5sums=('e668595254233e4d96811083a3e4e2f3'
+ 'd3b483c994d859232ce369b82a4b5668'
+ 'aac133930047eafa4f28736cfaf976b3'
+ 'e596e05a00a24187b576e389fa1de45d'
+ '419a8755e0dd16e95542bc107e6d2b24')
+
+build() {
+ cd "${srcdir}/ex-${pkgver}"
+
+ # apply patches
+ patch -Np1 -i ../navkeys.patch
+ patch -Np0 -i ../increase-tube.patch
+ # FS#20653
+ patch -Np1 -i ../preserve_dir.patch
+
+ make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex \
+ 'FEATURES=-DCHDIR -DFASTTAG -DUCVISUAL -DMB -DBIT8' TERMLIB=ncurses
+}
+
+package() {
+ cd "${srcdir}/ex-${pkgver}"
+
+ make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex INSTALL=/bin/install \
+ DESTDIR="$pkgdir" install
+
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/testing/vi/exrc.sample b/testing/vi/exrc.sample
new file mode 100644
index 000000000..44b3045fd
--- /dev/null
+++ b/testing/vi/exrc.sample
@@ -0,0 +1,5 @@
+" A sample .exrc file. Copy it to your home dir as ~/.exrc in order to work.
+set showmode
+set noflash
+set autoindent
+set shiftwidth=2
diff --git a/testing/vi/increase-tube.patch b/testing/vi/increase-tube.patch
new file mode 100644
index 000000000..5010798ce
--- /dev/null
+++ b/testing/vi/increase-tube.patch
@@ -0,0 +1,13 @@
+--- config.h 2005-02-19 05:25:39.000000000 -0500
++++ config.h.fixed 2010-01-04 22:02:01.000000000 -0500
+@@ -95,8 +95,8 @@
+ #define TUBESIZE 6000 /* Maximum screen size for visual */
+ #else /* VMUNIX */
+ #define TUBELINES 100
+-#define TUBECOLS 160
+-#define TUBESIZE 16000
++#define TUBECOLS 320
++#define TUBESIZE 32000
+ #endif /* VMUNIX */
+
+ /*
diff --git a/testing/vi/navkeys.patch b/testing/vi/navkeys.patch
new file mode 100644
index 000000000..46924379c
--- /dev/null
+++ b/testing/vi/navkeys.patch
@@ -0,0 +1,55 @@
+diff -ru ex-050325/ex_tty.c ex-050325-du/ex_tty.c
+--- ex-050325/ex_tty.c 2005-03-04 13:42:58.000000000 +0100
++++ ex-050325-du/ex_tty.c 2009-06-25 20:06:57.000000000 +0200
+@@ -132,7 +132,8 @@
+ &ED, &EI, &F0, &F1, &F2, &F3, &F4, &F5, &F6, &F7, &F8, &F9,
+ &HO, &IC, &IM, &IP, &KD, &KE, &KH, &KL, &KR, &KS, &KU, &LL, &ND, &xNL,
+ &xPC, &RC, &SC, &SE, &SF, &SO, &SR, &TA, &TE, &TI, &UP, &VB, &VS, &VE,
+- &AL_PARM, &DL_PARM, &UP_PARM, &DOWN_PARM, &LEFT_PARM, &RIGHT_PARM
++ &AL_PARM, &DL_PARM, &UP_PARM, &DOWN_PARM, &LEFT_PARM, &RIGHT_PARM,
++ &kI, &kD, &kh, &at7, &kP, &kN
+ };
+ bool *sflags[] = {
+ &AM, &BS, &DA, &DB, &EO, &HC,
+@@ -170,7 +171,12 @@
+ addmac1(KD, "j", "down", arrows, 1);
+ addmac1(KL, "h", "left", arrows, 1);
+ addmac1(KR, "l", "right", arrows, 1);
+- addmac1(KH, "H", "home", arrows, 1);
++ addmac1(kI, "i", "insert", arrows, 1);
++ addmac1(kD, "x", "delete", arrows, 1);
++ addmac1(kh, "^", "home", arrows, 1);
++ addmac1(at7, "$", "end", arrows, 1);
++ addmac1(kP, "", "pgup", arrows, 1);
++ addmac1(kN, "", "pgdn", arrows, 1);
+
+ /*
+ * Handle funny termcap capabilities
+@@ -341,7 +347,7 @@
+ *(*fp++) = flag;
+ namp += 2;
+ } while (*namp);
+- namp = "albcbtcdceclcmcrcsdcdldmdoedeik0k1k2k3k4k5k6k7k8k9hoicimipkdkekhklkrkskullndnlpcrcscsesfsosrtatetiupvbvsveALDLUPDOLERI";
++ namp = "albcbtcdceclcmcrcsdcdldmdoedeik0k1k2k3k4k5k6k7k8k9hoicimipkdkekhklkrkskullndnlpcrcscsesfsosrtatetiupvbvsveALDLUPDOLERIkIkDkh@7kPkN";
+ sp = sstrs;
+ do {
+ string = tgetstr(namp, &aoftspace);
+diff -ru ex-050325/ex_tty.h ex-050325-du/ex_tty.h
+--- ex-050325/ex_tty.h 2004-12-01 19:21:06.000000000 +0100
++++ ex-050325-du/ex_tty.h 2009-06-25 20:06:05.000000000 +0200
+@@ -183,6 +183,15 @@
+ var bool XX; /* Tektronix 4025 insert line */
+ /* X? is reserved for severely nauseous glitches */
+ /* If there are enough of these we may need bit masks! */
++/*
++ * Insert, Delete, Home, End, PgUp an PgDown keys
++ */
++var char *kI;
++var char *kD;
++var char *kh;
++var char *at7;
++var char *kP;
++var char *kN;
+
+ /*
+ * From the tty modes...
diff --git a/testing/vi/preserve_dir.patch b/testing/vi/preserve_dir.patch
new file mode 100644
index 000000000..5209f7b02
--- /dev/null
+++ b/testing/vi/preserve_dir.patch
@@ -0,0 +1,81 @@
+diff -Naur ex-050325.ori/ex.1 ex-050325/ex.1
+--- ex-050325.ori/ex.1 2005-02-17 07:39:36.000000000 -0500
++++ ex-050325/ex.1 2011-02-01 16:21:51.496666674 -0500
+@@ -1950,7 +1950,7 @@
+ .B /var/tmp/Rx\fInnnnnnnnnn\fP
+ named buffer temporary
+ .TP
+-.B /var/preserve
++.B /var/lib/ex
+ preservation directory
+ .SH DOCUMENTATION
+ The document
+diff -Naur ex-050325.ori/expreserve.c ex-050325/expreserve.c
+--- ex-050325.ori/expreserve.c 2005-03-04 07:44:46.000000000 -0500
++++ ex-050325/expreserve.c 2011-02-01 16:22:06.583333342 -0500
+@@ -272,7 +272,7 @@
+ #ifdef notdef
+ char pattern[] = "/usr/preserve/Exaa`XXXXX";
+ #else
+-char pattern[] = "/var/preserve/Exa`XXXXXXXXXX";
++char pattern[] = "/var/lib/ex/Exa`XXXXXXXXXX";
+ #endif
+
+ /*
+@@ -296,7 +296,7 @@
+ timestamp = ctime(&time);
+ timestamp[16] = 0; /* blast from seconds on */
+ putenv("MAILRC=/dev/null");
+- sprintf(cmd, "/bin/mail %s", pp->pw_name);
++ sprintf(cmd, "/usr/bin/mail %s", pp->pw_name);
+ setuid(getuid());
+ mf = popen(cmd, "w");
+ if (mf == NULL)
+diff -Naur ex-050325.ori/exrecover.c ex-050325/exrecover.c
+--- ex-050325.ori/exrecover.c 2005-03-04 07:44:46.000000000 -0500
++++ ex-050325/exrecover.c 2011-02-01 16:21:51.496666674 -0500
+@@ -167,7 +167,7 @@
+ #ifdef notdef
+ char mydir[] = "/usr/preserve";
+ #else
+-char mydir[] = "/var/preserve";
++char mydir[] = "/var/lib/ex";
+ #endif
+
+ /*
+diff -Naur ex-050325.ori/ex.spec ex-050325/ex.spec
+--- ex-050325.ori/ex.spec 2005-03-24 18:50:09.000000000 -0500
++++ ex-050325/ex.spec 2011-02-01 16:21:51.496666674 -0500
+@@ -20,7 +20,7 @@
+ %define libexecdir %{prefix}/5lib
+ %define mandir %{prefix}/share/man/5man
+
+-%define preservedir /var/preserve
++%define preservedir /var/lib/ex
+
+ # install command
+ %define ucbinstall install
+diff -Naur ex-050325.ori/Makefile ex-050325/Makefile
+--- ex-050325.ori/Makefile 2005-03-24 18:50:09.000000000 -0500
++++ ex-050325/Makefile 2011-02-01 16:21:51.496666674 -0500
+@@ -83,7 +83,7 @@
+ BINDIR = $(PREFIX)/bin
+ LIBEXECDIR = $(PREFIX)/libexec
+ MANDIR = $(PREFIX)/share/man
+-PRESERVEDIR = /var/preserve
++PRESERVEDIR = /var/lib/ex
+
+ #
+ # DESTDIR is prepended to the installation paths. It is mostly useful
+diff -Naur ex-050325.ori/vi.1 ex-050325/vi.1
+--- ex-050325.ori/vi.1 2005-02-17 07:39:36.000000000 -0500
++++ ex-050325/vi.1 2011-02-01 16:21:51.496666674 -0500
+@@ -979,7 +979,7 @@
+ .B /var/tmp/Rx\fInnnnnnnnnn\fP
+ named buffer temporary
+ .TP
+-.B /var/preserve
++.B /var/lib/ex
+ preservation directory
+ .SH SEE ALSO
+ ex(1),
diff --git a/testing/vlc/PKGBUILD b/testing/vlc/PKGBUILD
new file mode 100644
index 000000000..eb810befb
--- /dev/null
+++ b/testing/vlc/PKGBUILD
@@ -0,0 +1,74 @@
+# $Id: PKGBUILD 142129 2011-11-05 11:37:27Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: Martin Sandsmark <martin.sandsmark@kde.org>
+
+pkgname=vlc
+pkgver=1.1.12
+pkgrel=2
+pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player"
+arch=('i686' 'x86_64')
+url="http://www.videolan.org/vlc/"
+license=('GPL')
+depends=('a52dec' 'fluidsynth' 'libmtp' 'libdvbpsi' 'libxpm' 'libcdio'
+ 'libdca' 'qt' 'libproxy' 'sdl_image' 'libdvdnav' 'mesa'
+ 'lua' 'v4l-utils' 'libcddb' 'smbclient' 'libmatroska' 'zvbi'
+ 'taglib' 'sysfsutils' 'libmpcdec' 'ffmpeg' 'faad2' 'libupnp'
+ 'libshout' 'libmad' 'fribidi' 'libmpeg2' 'libmodplug'
+ 'ttf-freefont' 'libxv' 'libass' 'xdg-utils' 'desktop-file-utils')
+makedepends=('avahi' 'pkgconfig' 'live-media' 'libnotify'
+ 'flac' 'libtheora' 'alsa-lib' 'jack' 'kdelibs' 'udev'
+ 'libraw1394' 'libdc1394' 'libavc1394' 'libva' 'libpulse'
+ 'lirc-utils' 'gnutls' 'libcaca')
+optdepends=('avahi: for service discovery using bonjour protocol'
+ 'libnotify: for notification plugin'
+ 'ncurses: for ncurses interface support'
+ 'libdvdcss: for decoding encrypted DVDs'
+ 'lirc-utils: for lirc plugin'
+ 'libavc1394: for devices using the 1394ta AV/C'
+ 'libdc1394: for IEEE 1394 plugin'
+ 'kdelibs: KDE Solid hardware integration'
+ 'libpulse: PulseAudio support'
+ 'vdpau-video: vdpau back-end for nvidia'
+ 'libva-driver-intel: back-end for intel cards')
+conflicts=('vlc-plugin')
+replaces=('vlc-plugin')
+backup=('usr/share/vlc/http/.hosts'
+ 'usr/share/vlc/http/dialogs/.hosts'
+ 'usr/share/vlc/lua/http/.hosts'
+ 'usr/share/vlc/lua/http/dialogs/.hosts')
+options=('!libtool')
+install=vlc.install
+source=("http://download.videolan.org/pub/videolan/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('91de1ad308c947e35380f9d747ff5713')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i -e 's:truetype/freefont:TTF:g' modules/misc/freetype.c
+
+ ./configure --prefix=/usr \
+ --disable-rpath \
+ --enable-faad \
+ --enable-v4l \
+ --enable-snapshot \
+ --enable-dbus-control \
+ --enable-nls \
+ --enable-lirc \
+ --enable-pvr \
+ --enable-ncurses \
+ --with-live555-tree=/usr/lib/live \
+ --enable-upnp \
+ --enable-realrtsp
+ make
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}/" install
+
+ for res in 16 32 48 128; do
+ install -D -m644 "${srcdir}/vlc-${pkgver}/share/icons/${res}x${res}/vlc.png" \
+ "${pkgdir}/usr/share/icons/hicolor/${res}x${res}/apps/vlc.png"
+ done
+}
diff --git a/testing/vlc/vlc.install b/testing/vlc/vlc.install
new file mode 100644
index 000000000..4a1091bc5
--- /dev/null
+++ b/testing/vlc/vlc.install
@@ -0,0 +1,18 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ usr/lib/vlc/vlc-cache-gen -f usr/lib/vlc/plugins
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ rm -f usr/lib/vlc/plugins/plugins-*.dat
+}
+
+post_remove() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-desktop-database -q
+}
diff --git a/testing/which/PKGBUILD b/testing/which/PKGBUILD
new file mode 100644
index 000000000..a5f893aaa
--- /dev/null
+++ b/testing/which/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 141957 2011-11-03 14:30:48Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=which
+pkgver=2.20
+pkgrel=5
+pkgdesc="A utility to show the full path of commands"
+arch=('i686' 'x86_64')
+url="http://www.xs4all.nl/~carlo17/which"
+license=('GPL3')
+groups=('base')
+depends=('glibc' 'sh')
+install=which.install
+source=(http://www.xs4all.nl/~carlo17/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('95be0501a466e515422cde4af46b2744')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
diff --git a/testing/which/which.install b/testing/which/which.install
new file mode 100644
index 000000000..167e2506e
--- /dev/null
+++ b/testing/which/which.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(which.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/testing/wpa_actiond/PKGBUILD b/testing/wpa_actiond/PKGBUILD
new file mode 100644
index 000000000..ff374f5c5
--- /dev/null
+++ b/testing/wpa_actiond/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 142088 2011-11-05 00:43:25Z thomas $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+pkgname=wpa_actiond
+pkgver=1.1
+pkgrel=3
+pkgdesc="Daemon that connects to wpa_supplicant and handles connect and disconnect events"
+arch=('i686' 'x86_64')
+url="http://projects.archlinux.org/wpa_actiond.git/"
+license=('GPL')
+depends=('glibc' 'wpa_supplicant')
+source=(ftp://ftp.archlinux.org/other/wpa_actiond/${pkgname}-${pkgver}.tar.xz)
+sha256sums=('d50a49cb5d56c31345d18e58f017b4ff923e8959a7e4e709abd156744f1668c3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make CFLAGS="${CFLAGS}"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ install -D -m755 wpa_actiond "${pkgdir}/usr/sbin/wpa_actiond"
+}
+# vim:set ts=2 sw=2 et:
diff --git a/testing/wpa_supplicant/PKGBUILD b/testing/wpa_supplicant/PKGBUILD
new file mode 100644
index 000000000..34ddb9427
--- /dev/null
+++ b/testing/wpa_supplicant/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 142085 2011-11-05 00:39:35Z thomas $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+
+pkgname=wpa_supplicant
+pkgver=0.7.3
+pkgrel=4
+pkgdesc="A utility providing key negotiation for WPA wireless networks"
+url="http://hostap.epitest.fi/wpa_supplicant"
+arch=('i686' 'x86_64')
+depends=('openssl' 'dbus-core>=1.2.4' 'readline>=6.0' 'libnl')
+optdepends=('wpa_supplicant_gui: wpa_gui program')
+license=('GPL')
+groups=('base')
+backup=('etc/wpa_supplicant.conf')
+source=(http://hostap.epitest.fi/releases/wpa_supplicant-$pkgver.tar.gz
+ config dbus.patch)
+sha256sums=('d0cd50caa85346ccc376dcda5ed3c258eef19a93b3cade39d25760118ad59443'
+ '6a0837f18e5ff179ccd6954f7952dfc2e6aa69f353194ee4cb29c1ed2ef68c5d'
+ '13effa9ed6a1bb940ffc056a3eabcf64c8cc057069eca5cc1822b98ed769812a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}/${pkgname}"
+ # Required by NetworkManager 0.8.995
+ patch -Np2 -i "$srcdir/dbus.patch"
+ cp "${srcdir}/config" ./.config
+ sed -i 's@/usr/local@$(PREFIX)@g' Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/${pkgname}"
+ make PREFIX=/usr DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/etc"
+ install -m644 wpa_supplicant.conf "${pkgdir}/etc/wpa_supplicant.conf"
+ install -d -m755 "${pkgdir}/usr/share/man/man"{5,8}
+ install -m644 doc/docbook/*.5 "${pkgdir}/usr/share/man/man5/"
+ install -m644 doc/docbook/*.8 "${pkgdir}/usr/share/man/man8/"
+ rm -f "${pkgdir}/usr/share/man/man8/wpa_"{priv,gui}.8
+
+ install -m755 -d "${pkgdir}/usr/share/dbus-1/system-services"
+ install -m644 dbus/{fi.epitest.hostap.WPASupplicant.service,fi.w1.wpa_supplicant1.service} "${pkgdir}/usr/share/dbus-1/system-services/"
+ sed -e 's/sbin/usr\/sbin/' -i "${pkgdir}/usr/share/dbus-1/system-services/"*.service
+ install -m755 -d "${pkgdir}/etc/dbus-1/system.d"
+ install -m644 dbus/dbus-wpa_supplicant.conf "${pkgdir}/etc/dbus-1/system.d/wpa_supplicant.conf"
+}
diff --git a/testing/wpa_supplicant/config b/testing/wpa_supplicant/config
new file mode 100644
index 000000000..192e338f2
--- /dev/null
+++ b/testing/wpa_supplicant/config
@@ -0,0 +1,404 @@
+# Example wpa_supplicant build time configuration
+#
+# This file lists the configuration options that are used when building the
+# hostapd binary. All lines starting with # are ignored. Configuration option
+# lines must be commented out complete, if they are not to be included, i.e.,
+# just setting VARIABLE=n is not disabling that variable.
+#
+# This file is included in Makefile, so variables like CFLAGS and LIBS can also
+# be modified from here. In most cases, these lines should use += in order not
+# to override previous values of the variables.
+
+
+# Uncomment following two lines and fix the paths if you have installed OpenSSL
+# or GnuTLS in non-default location
+#CFLAGS += -I/usr/local/openssl/include
+#LIBS += -L/usr/local/openssl/lib
+
+# Some Red Hat versions seem to include kerberos header files from OpenSSL, but
+# the kerberos files are not in the default include path. Following line can be
+# used to fix build issues on such systems (krb5.h not found).
+#CFLAGS += -I/usr/include/kerberos
+
+# Example configuration for various cross-compilation platforms
+
+#### sveasoft (e.g., for Linksys WRT54G) ######################################
+#CC=mipsel-uclibc-gcc
+#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
+#CFLAGS += -Os
+#CPPFLAGS += -I../src/include -I../../src/router/openssl/include
+#LIBS += -L/opt/brcm/hndtools-mipsel-uclibc-0.9.19/lib -lssl
+###############################################################################
+
+#### openwrt (e.g., for Linksys WRT54G) #######################################
+#CC=mipsel-uclibc-gcc
+#CC=/opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
+#CFLAGS += -Os
+#CPPFLAGS=-I../src/include -I../openssl-0.9.7d/include \
+# -I../WRT54GS/release/src/include
+#LIBS = -lssl
+###############################################################################
+
+
+# Driver interface for Host AP driver
+#CONFIG_DRIVER_HOSTAP=y
+
+# Driver interface for Agere driver
+#CONFIG_DRIVER_HERMES=y
+# Change include directories to match with the local setup
+#CFLAGS += -I../../hcf -I../../include -I../../include/hcf
+#CFLAGS += -I../../include/wireless
+
+# Driver interface for madwifi driver
+# Deprecated; use CONFIG_DRIVER_WEXT=y instead.
+#CONFIG_DRIVER_MADWIFI=y
+# Set include directory to the madwifi source tree
+#CFLAGS += -I../../madwifi
+
+# Driver interface for ndiswrapper
+# Deprecated; use CONFIG_DRIVER_WEXT=y instead.
+#CONFIG_DRIVER_NDISWRAPPER=y
+
+# Driver interface for Atmel driver
+#CONFIG_DRIVER_ATMEL=y
+
+# Driver interface for old Broadcom driver
+# Please note that the newer Broadcom driver ("hybrid Linux driver") supports
+# Linux wireless extensions and does not need (or even work) with the old
+# driver wrapper. Use CONFIG_DRIVER_WEXT=y with that driver.
+#CONFIG_DRIVER_BROADCOM=y
+# Example path for wlioctl.h; change to match your configuration
+#CFLAGS += -I/opt/WRT54GS/release/src/include
+
+# Driver interface for Intel ipw2100/2200 driver
+# Deprecated; use CONFIG_DRIVER_WEXT=y instead.
+#CONFIG_DRIVER_IPW=y
+
+# Driver interface for Ralink driver
+#CONFIG_DRIVER_RALINK=y
+
+# Driver interface for generic Linux wireless extensions
+CONFIG_DRIVER_WEXT=y
+
+# Driver interface for Linux drivers using the nl80211 kernel interface
+CONFIG_DRIVER_NL80211=y
+
+# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
+#CONFIG_DRIVER_BSD=y
+#CFLAGS += -I/usr/local/include
+#LIBS += -L/usr/local/lib
+#LIBS_p += -L/usr/local/lib
+#LIBS_c += -L/usr/local/lib
+
+# Driver interface for Windows NDIS
+#CONFIG_DRIVER_NDIS=y
+#CFLAGS += -I/usr/include/w32api/ddk
+#LIBS += -L/usr/local/lib
+# For native build using mingw
+#CONFIG_NATIVE_WINDOWS=y
+# Additional directories for cross-compilation on Linux host for mingw target
+#CFLAGS += -I/opt/mingw/mingw32/include/ddk
+#LIBS += -L/opt/mingw/mingw32/lib
+#CC=mingw32-gcc
+# By default, driver_ndis uses WinPcap for low-level operations. This can be
+# replaced with the following option which replaces WinPcap calls with NDISUIO.
+# However, this requires that WZC is disabled (net stop wzcsvc) before starting
+# wpa_supplicant.
+# CONFIG_USE_NDISUIO=y
+
+# Driver interface for development testing
+#CONFIG_DRIVER_TEST=y
+
+# Include client MLME (management frame processing) for test driver
+# This can be used to test MLME operations in hostapd with the test interface.
+# space.
+#CONFIG_CLIENT_MLME=y
+
+# Driver interface for wired Ethernet drivers
+CONFIG_DRIVER_WIRED=y
+
+# Driver interface for the Broadcom RoboSwitch family
+#CONFIG_DRIVER_ROBOSWITCH=y
+
+# Driver interface for no driver (e.g., WPS ER only)
+#CONFIG_DRIVER_NONE=y
+
+# Enable IEEE 802.1X Supplicant (automatically included if any EAP method is
+# included)
+CONFIG_IEEE8021X_EAPOL=y
+
+# EAP-MD5
+CONFIG_EAP_MD5=y
+
+# EAP-MSCHAPv2
+CONFIG_EAP_MSCHAPV2=y
+
+# EAP-TLS
+CONFIG_EAP_TLS=y
+
+# EAL-PEAP
+CONFIG_EAP_PEAP=y
+
+# EAP-TTLS
+CONFIG_EAP_TTLS=y
+
+# EAP-FAST
+# Note: Default OpenSSL package does not include support for all the
+# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL,
+# the OpenSSL library must be patched (openssl-0.9.8d-tls-extensions.patch)
+# to add the needed functions.
+#CONFIG_EAP_FAST=y
+
+# EAP-GTC
+CONFIG_EAP_GTC=y
+
+# EAP-OTP
+CONFIG_EAP_OTP=y
+
+# EAP-SIM (enable CONFIG_PCSC, if EAP-SIM is used)
+#CONFIG_EAP_SIM=y
+
+# EAP-PSK (experimental; this is _not_ needed for WPA-PSK)
+#CONFIG_EAP_PSK=y
+
+# EAP-PAX
+#CONFIG_EAP_PAX=y
+
+# LEAP
+CONFIG_EAP_LEAP=y
+
+# EAP-AKA (enable CONFIG_PCSC, if EAP-AKA is used)
+#CONFIG_EAP_AKA=y
+
+# EAP-AKA' (enable CONFIG_PCSC, if EAP-AKA' is used).
+# This requires CONFIG_EAP_AKA to be enabled, too.
+#CONFIG_EAP_AKA_PRIME=y
+
+# Enable USIM simulator (Milenage) for EAP-AKA
+#CONFIG_USIM_SIMULATOR=y
+
+# EAP-SAKE
+#CONFIG_EAP_SAKE=y
+
+# EAP-GPSK
+#CONFIG_EAP_GPSK=y
+# Include support for optional SHA256 cipher suite in EAP-GPSK
+#CONFIG_EAP_GPSK_SHA256=y
+
+# EAP-TNC and related Trusted Network Connect support (experimental)
+#CONFIG_EAP_TNC=y
+
+# Wi-Fi Protected Setup (WPS)
+CONFIG_WPS=y
+
+# EAP-IKEv2
+#CONFIG_EAP_IKEV2=y
+
+# PKCS#12 (PFX) support (used to read private key and certificate file from
+# a file that usually has extension .p12 or .pfx)
+CONFIG_PKCS12=y
+
+# Smartcard support (i.e., private key on a smartcard), e.g., with openssl
+# engine.
+CONFIG_SMARTCARD=y
+
+# PC/SC interface for smartcards (USIM, GSM SIM)
+# Enable this if EAP-SIM or EAP-AKA is included
+#CONFIG_PCSC=y
+
+# Development testing
+#CONFIG_EAPOL_TEST=y
+
+# Select control interface backend for external programs, e.g, wpa_cli:
+# unix = UNIX domain sockets (default for Linux/*BSD)
+# udp = UDP sockets using localhost (127.0.0.1)
+# named_pipe = Windows Named Pipe (default for Windows)
+# y = use default (backwards compatibility)
+# If this option is commented out, control interface is not included in the
+# build.
+CONFIG_CTRL_IFACE=y
+
+# Include support for GNU Readline and History Libraries in wpa_cli.
+# When building a wpa_cli binary for distribution, please note that these
+# libraries are licensed under GPL and as such, BSD license may not apply for
+# the resulting binary.
+CONFIG_READLINE=y
+
+# Remove debugging code that is printing out debug message to stdout.
+# This can be used to reduce the size of the wpa_supplicant considerably
+# if debugging code is not needed. The size reduction can be around 35%
+# (e.g., 90 kB).
+#CONFIG_NO_STDOUT_DEBUG=y
+
+# Remove WPA support, e.g., for wired-only IEEE 802.1X supplicant, to save
+# 35-50 kB in code size.
+#CONFIG_NO_WPA=y
+
+# Remove WPA2 support. This allows WPA to be used, but removes WPA2 code to
+# save about 1 kB in code size when building only WPA-Personal (no EAP support)
+# or 6 kB if building for WPA-Enterprise.
+#CONFIG_NO_WPA2=y
+
+# Remove IEEE 802.11i/WPA-Personal ASCII passphrase support
+# This option can be used to reduce code size by removing support for
+# converting ASCII passphrases into PSK. If this functionality is removed, the
+# PSK can only be configured as the 64-octet hexstring (e.g., from
+# wpa_passphrase). This saves about 0.5 kB in code size.
+#CONFIG_NO_WPA_PASSPHRASE=y
+
+# Disable scan result processing (ap_mode=1) to save code size by about 1 kB.
+# This can be used if ap_scan=1 mode is never enabled.
+#CONFIG_NO_SCAN_PROCESSING=y
+
+# Select configuration backend:
+# file = text file (e.g., wpa_supplicant.conf; note: the configuration file
+# path is given on command line, not here; this option is just used to
+# select the backend that allows configuration files to be used)
+# winreg = Windows registry (see win_example.reg for an example)
+CONFIG_BACKEND=file
+
+# Remove configuration write functionality (i.e., to allow the configuration
+# file to be updated based on runtime configuration changes). The runtime
+# configuration can still be changed, the changes are just not going to be
+# persistent over restarts. This option can be used to reduce code size by
+# about 3.5 kB.
+#CONFIG_NO_CONFIG_WRITE=y
+
+# Remove support for configuration blobs to reduce code size by about 1.5 kB.
+#CONFIG_NO_CONFIG_BLOBS=y
+
+# Select program entry point implementation:
+# main = UNIX/POSIX like main() function (default)
+# main_winsvc = Windows service (read parameters from registry)
+# main_none = Very basic example (development use only)
+#CONFIG_MAIN=main
+
+# Select wrapper for operatins system and C library specific functions
+# unix = UNIX/POSIX like systems (default)
+# win32 = Windows systems
+# none = Empty template
+#CONFIG_OS=unix
+
+# Select event loop implementation
+# eloop = select() loop (default)
+# eloop_win = Windows events and WaitForMultipleObject() loop
+# eloop_none = Empty template
+#CONFIG_ELOOP=eloop
+
+# Select layer 2 packet implementation
+# linux = Linux packet socket (default)
+# pcap = libpcap/libdnet/WinPcap
+# freebsd = FreeBSD libpcap
+# winpcap = WinPcap with receive thread
+# ndis = Windows NDISUIO (note: requires CONFIG_USE_NDISUIO=y)
+# none = Empty template
+#CONFIG_L2_PACKET=linux
+
+# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS)
+CONFIG_PEERKEY=y
+
+# IEEE 802.11w (management frame protection)
+# This version is an experimental implementation based on IEEE 802.11w/D1.0
+# draft and is subject to change since the standard has not yet been finalized.
+# Driver support is also needed for IEEE 802.11w.
+#CONFIG_IEEE80211W=y
+
+# Select TLS implementation
+# openssl = OpenSSL (default)
+# gnutls = GnuTLS (needed for TLS/IA, see also CONFIG_GNUTLS_EXTRA)
+# internal = Internal TLSv1 implementation (experimental)
+# none = Empty template
+#CONFIG_TLS=openssl
+
+# Whether to enable TLS/IA support, which is required for EAP-TTLSv1.
+# You need CONFIG_TLS=gnutls for this to have any effect. Please note that
+# even though the core GnuTLS library is released under LGPL, this extra
+# library uses GPL and as such, the terms of GPL apply to the combination
+# of wpa_supplicant and GnuTLS if this option is enabled. BSD license may not
+# apply for distribution of the resulting binary.
+#CONFIG_GNUTLS_EXTRA=y
+
+# If CONFIG_TLS=internal is used, additional library and include paths are
+# needed for LibTomMath. Alternatively, an integrated, minimal version of
+# LibTomMath can be used. See beginning of libtommath.c for details on benefits
+# and drawbacks of this option.
+#CONFIG_INTERNAL_LIBTOMMATH=y
+#ifndef CONFIG_INTERNAL_LIBTOMMATH
+#LTM_PATH=/usr/src/libtommath-0.39
+#CFLAGS += -I$(LTM_PATH)
+#LIBS += -L$(LTM_PATH)
+#LIBS_p += -L$(LTM_PATH)
+#endif
+# At the cost of about 4 kB of additional binary size, the internal LibTomMath
+# can be configured to include faster routines for exptmod, sqr, and div to
+# speed up DH and RSA calculation considerably
+#CONFIG_INTERNAL_LIBTOMMATH_FAST=y
+
+# Include NDIS event processing through WMI into wpa_supplicant/wpasvc.
+# This is only for Windows builds and requires WMI-related header files and
+# WbemUuid.Lib from Platform SDK even when building with MinGW.
+#CONFIG_NDIS_EVENTS_INTEGRATED=y
+#PLATFORMSDKLIB="/opt/Program Files/Microsoft Platform SDK/Lib"
+
+# Add support for old DBus control interface
+# (fi.epitest.hostap.WPASupplicant)
+CONFIG_CTRL_IFACE_DBUS=y
+
+# Add support for new DBus control interface
+# (fi.w1.hostap.wpa_supplicant1)
+CONFIG_CTRL_IFACE_DBUS_NEW=y
+
+# Add introspection support for new DBus control interface
+CONFIG_CTRL_IFACE_DBUS_INTRO=y
+
+# Add support for loading EAP methods dynamically as shared libraries.
+# When this option is enabled, each EAP method can be either included
+# statically (CONFIG_EAP_<method>=y) or dynamically (CONFIG_EAP_<method>=dyn).
+# Dynamic EAP methods are build as shared objects (eap_*.so) and they need to
+# be loaded in the beginning of the wpa_supplicant configuration file
+# (see load_dynamic_eap parameter in the example file) before being used in
+# the network blocks.
+#
+# Note that some shared parts of EAP methods are included in the main program
+# and in order to be able to use dynamic EAP methods using these parts, the
+# main program must have been build with the EAP method enabled (=y or =dyn).
+# This means that EAP-TLS/PEAP/TTLS/FAST cannot be added as dynamic libraries
+# unless at least one of them was included in the main build to force inclusion
+# of the shared code. Similarly, at least one of EAP-SIM/AKA must be included
+# in the main build to be able to load these methods dynamically.
+#
+# Please also note that using dynamic libraries will increase the total binary
+# size. Thus, it may not be the best option for targets that have limited
+# amount of memory/flash.
+#CONFIG_DYNAMIC_EAP_METHODS=y
+
+# IEEE Std 802.11r-2008 (Fast BSS Transition)
+#CONFIG_IEEE80211R=y
+
+# Add support for writing debug log to a file (/tmp/wpa_supplicant-log-#.txt)
+CONFIG_DEBUG_FILE=y
+
+# Enable privilege separation (see README 'Privilege separation' for details)
+#CONFIG_PRIVSEP=y
+
+# Enable mitigation against certain attacks against TKIP by delaying Michael
+# MIC error reports by a random amount of time between 0 and 60 seconds
+#CONFIG_DELAYED_MIC_ERROR_REPORT=y
+
+# Enable tracing code for developer debugging
+# This tracks use of memory allocations and other registrations and reports
+# incorrect use with a backtrace of call (or allocation) location.
+#CONFIG_WPA_TRACE=y
+# For BSD, comment out these.
+#LIBS += -lexecinfo
+#LIBS_p += -lexecinfo
+#LIBS_c += -lexecinfo
+
+# Use libbfd to get more details for developer debugging
+# This enables use of libbfd to get more detailed symbols for the backtraces
+# generated by CONFIG_WPA_TRACE=y.
+#CONFIG_WPA_TRACE_BFD=y
+# For BSD, comment out these.
+#LIBS += -lbfd -liberty -lz
+#LIBS_p += -lbfd -liberty -lz
+#LIBS_c += -lbfd -liberty -lz
diff --git a/testing/wpa_supplicant/dbus.patch b/testing/wpa_supplicant/dbus.patch
new file mode 100644
index 000000000..4c5002003
--- /dev/null
+++ b/testing/wpa_supplicant/dbus.patch
@@ -0,0 +1,61 @@
+From b80b5639935d37b95d00f86b57f2844a9c775f57 Mon Sep 17 00:00:00 2001
+From: Dan Williams <dcbw@redhat.com>
+Date: Fri, 17 Dec 2010 15:56:01 +0200
+Subject: [PATCH] dbus: Emit property changed events when adding/removing BSSes
+
+The supplicant was not emitting property changed events when the BSSs
+property changed.
+
+Signed-off-by: Dan Williams <dcbw@redhat.com>
+(cherry picked from commit 1e6288df6b07a353a9246b77e0de2a840b5f2c72)
+---
+ wpa_supplicant/dbus/dbus_new.c | 6 ++++++
+ wpa_supplicant/dbus/dbus_new.h | 1 +
+ 2 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c
+index bdfbbac..c66640a 100644
+--- a/wpa_supplicant/dbus/dbus_new.c
++++ b/wpa_supplicant/dbus/dbus_new.c
+@@ -691,6 +691,10 @@ void wpas_dbus_signal_prop_changed(struct wpa_supplicant *wpa_s,
+ wpas_dbus_getter_current_network;
+ prop = "CurrentNetwork";
+ break;
++ case WPAS_DBUS_PROP_BSSS:
++ getter = (WPADBusPropertyAccessor) wpas_dbus_getter_bsss;
++ prop = "BSSs";
++ break;
+ default:
+ wpa_printf(MSG_ERROR, "dbus: %s: Unknown Property value %d",
+ __func__, property);
+@@ -1199,6 +1203,7 @@ int wpas_dbus_unregister_bss(struct wpa_supplicant *wpa_s,
+ }
+
+ wpas_dbus_signal_bss_removed(wpa_s, bss_obj_path);
++ wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_BSSS);
+
+ return 0;
+ }
+@@ -1263,6 +1268,7 @@ int wpas_dbus_register_bss(struct wpa_supplicant *wpa_s,
+ }
+
+ wpas_dbus_signal_bss_added(wpa_s, bss_obj_path);
++ wpas_dbus_signal_prop_changed(wpa_s, WPAS_DBUS_PROP_BSSS);
+
+ return 0;
+
+diff --git a/wpa_supplicant/dbus/dbus_new.h b/wpa_supplicant/dbus/dbus_new.h
+index 80ea98c..9cdefcb 100644
+--- a/wpa_supplicant/dbus/dbus_new.h
++++ b/wpa_supplicant/dbus/dbus_new.h
+@@ -30,6 +30,7 @@ enum wpas_dbus_prop {
+ WPAS_DBUS_PROP_STATE,
+ WPAS_DBUS_PROP_CURRENT_BSS,
+ WPAS_DBUS_PROP_CURRENT_NETWORK,
++ WPAS_DBUS_PROP_BSSS,
+ };
+
+ enum wpas_dbus_bss_prop {
+--
+1.7.4-rc1
+
diff --git a/testing/x264/PKGBUILD b/testing/x264/PKGBUILD
new file mode 100644
index 000000000..a823788f5
--- /dev/null
+++ b/testing/x264/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 142171 2011-11-05 11:41:36Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Paul Mattal <paul@archlinux.org>
+
+pkgname=x264
+pkgver=20111030
+pkgrel=1
+pkgdesc="free library for encoding H264/AVC video streams"
+arch=('i686' 'x86_64')
+url="http://www.videolan.org/developers/x264.html"
+license=('GPL')
+depends=('glibc')
+makedepends=('yasm')
+source=(ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-$pkgver-2245.tar.bz2)
+md5sums=('fa52ad09dcb7d4e1a66adcaa2dab26bc')
+
+build() {
+ cd "$srcdir/$pkgname-snapshot-$pkgver-2245"
+
+ ./configure --enable-shared
+
+ make
+ make DESTDIR="$pkgdir" \
+ bindir=/usr/bin \
+ libdir=/usr/lib \
+ includedir=/usr/include \
+ install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/xfsprogs/PKGBUILD b/testing/xfsprogs/PKGBUILD
new file mode 100644
index 000000000..c062147da
--- /dev/null
+++ b/testing/xfsprogs/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 141990 2011-11-03 20:33:03Z tpowa $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+pkgname=xfsprogs
+pkgver=3.1.6
+pkgrel=1
+pkgdesc="XFS filesystem utilities"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://oss.sgi.com/projects/xfs/"
+groups=('base')
+depends=('util-linux-ng>=2.16')
+options=('!makeflags' '!libtool')
+# We mirror the sources as upstream tends to move them once a new release is out
+source=("ftp://ftp.archlinux.org/other/xfsprogs/${pkgname}-${pkgver}.tar.gz")
+md5sums=('fbd2c1c5abed4b11047bea6ce53bc6e4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ export OPTIMIZER="-march=${CARCH/_/-} -O1"
+ export DEBUG=-DNDEBUG
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DIST_ROOT="${pkgdir}" install install-dev
+ chown -R root $pkgdir
+ chgrp -R root $pkgdir
+}
diff --git a/testing/xine-lib/PKGBUILD b/testing/xine-lib/PKGBUILD
new file mode 100644
index 000000000..e3cb8d8a5
--- /dev/null
+++ b/testing/xine-lib/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 142165 2011-11-05 11:38:18Z ibiru $
+# Maintainer: Eric BĂ©langer <eric@archlinux.org>
+
+pkgname=xine-lib
+pkgver=1.1.19
+pkgrel=6
+pkgdesc="A multimedia playback engine"
+arch=('i686' 'x86_64')
+url="http://www.xine-project.org"
+license=('LGPL' 'GPL')
+depends=('libxvmc' 'flac' 'ffmpeg' 'libxinerama' 'libmodplug')
+makedepends=('wavpack' 'faad2' 'libmng' 'imagemagick' 'smbclient' 'mesa'
+ 'v4l-utils' 'vcdimager' 'jack' 'gdk-pixbuf2' 'libpulse' 'speex' 'aalib')
+optdepends=('imagemagick: for using the imagemagick plugin' \
+ 'smbclient: for using the smb plugin' \
+ 'jack: for using the jack plugin' \
+ 'vcdimager: for using the vcd plugin' \
+ 'gdk-pixbuf2: for using the gdk-pixbuf plugin' \
+ 'mesa: for using the opengl plugin' \
+ 'libpulse: for using the pulseaudio plugin' \
+ 'speex: for using the speex plugin' \
+ 'v4l-utils: for using the v4l plugin' \
+ 'wavpack: for using the wavpack plugin' \
+ 'faad2: for using the faad plugin' \
+ 'libmng: for using the mng plugin' \
+ 'aalib: for using the aalib plugin')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/xine/${pkgname}-${pkgver}.tar.xz
+ xine-lib-1.1.1-configure-no-mcpu-march.patch xine-lib-1.1.19-xvmc.patch
+ xine-lib-1.1.19-ffmpeg.patch)
+sha1sums=('f65f762d2e16adf04b9d715c91ee0bc02c322a7d'
+ '121a8358d7919b2e51067412373f52848290338a'
+ '920bf27e6e3523dfe4cc9c802ff713e9688a3f34'
+ 'd70f14c3dbb59b65c581575fa1fe13aeeb38f1b1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 -i "${srcdir}/xine-lib-1.1.1-configure-no-mcpu-march.patch"
+ patch -p0 -i "${srcdir}/xine-lib-1.1.19-xvmc.patch"
+ patch -p1 -i "${srcdir}/xine-lib-1.1.19-ffmpeg.patch"
+ sed -i 's|linux/videodev.h|libv4l1-videodev.h|' \
+ configure.ac src/input/input_v4l.c src/video_out/video_out_syncfb.h
+
+ libtoolize --force --copy
+ aclocal -I m4
+ autoconf
+ automake --add-missing
+
+ ./configure --prefix=/usr --with-wavpack --with-external-ffmpeg --with-external-libfaad
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch b/testing/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch
new file mode 100644
index 000000000..4b6ba9e35
--- /dev/null
+++ b/testing/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch
@@ -0,0 +1,13 @@
+--- m4/optimizations.m4.orig 2005-11-27 01:20:08.000000000 +0100
++++ m4/optimizations.m4 2005-11-27 01:22:56.000000000 +0100
+@@ -161,10 +161,6 @@
+ ;;
+
+ esac
+- if test x"$archopt_val" != x; then
+- CFLAGS="$sarchopt=$archopt_val $CFLAGS"
+- DEBUG_CFLAGS="$sarchopt=$archopt_val $DEBUG_CFLAGS"
+- fi
+ fi
+ else
+ dnl we have the Intel compiler
diff --git a/testing/xine-lib/xine-lib-1.1.19-ffmpeg.patch b/testing/xine-lib/xine-lib-1.1.19-ffmpeg.patch
new file mode 100644
index 000000000..6817aa989
--- /dev/null
+++ b/testing/xine-lib/xine-lib-1.1.19-ffmpeg.patch
@@ -0,0 +1,380 @@
+diff -r 717450d734f7 src/combined/ffmpeg/ff_audio_decoder.c
+--- a/src/combined/ffmpeg/ff_audio_decoder.c Mon May 16 15:49:02 2011 +0100
++++ b/src/combined/ffmpeg/ff_audio_decoder.c Mon May 16 19:46:49 2011 -0400
+@@ -46,6 +46,12 @@
+
+ #define AUDIOBUFSIZE (64 * 1024)
+
++#if LIBAVCODEC_VERSION_MAJOR >= 53 || (LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR >= 32)
++# define AVAUDIO 3
++#else
++# define AVAUDIO 2
++#endif
++
+ typedef struct {
+ audio_decoder_class_t decoder_class;
+ } ff_audio_class_t;
+@@ -255,6 +261,9 @@
+ buf->decoder_info[2]);
+
+ } else if (!(buf->decoder_flags & BUF_FLAG_SPECIAL)) {
++#if AVAUDIO > 2
++ AVPacket avpkt;
++#endif
+
+ if( !this->decoder_ok ) {
+ if ( ! this->context || ! this->codec ) {
+@@ -286,11 +295,21 @@
+ if (!this->output_open) {
+ if (!this->audio_bits || !this->audio_sample_rate || !this->audio_channels) {
+ decode_buffer_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
++#if AVAUDIO > 2
++ av_init_packet (&avpkt);
++ avpkt.data = (uint8_t *)&this->buf[0];
++ avpkt.size = this->size;
++ avpkt.flags = AV_PKT_FLAG_KEY;
++ avcodec_decode_audio3 (this->context,
++ (int16_t *)this->decode_buffer,
++ &decode_buffer_size, &avpkt);
++#else
+ avcodec_decode_audio2 (this->context,
+ (int16_t *)this->decode_buffer,
+ &decode_buffer_size,
+ &this->buf[0],
+ this->size);
++#endif
+ this->audio_bits = this->context->bits_per_sample;
+ this->audio_sample_rate = this->context->sample_rate;
+ this->audio_channels = this->context->channels;
+@@ -311,12 +330,21 @@
+ offset = 0;
+ while (this->size>0) {
+ decode_buffer_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
++#if AVAUDIO > 2
++ av_init_packet (&avpkt);
++ avpkt.data = (uint8_t *)&this->buf[offset];
++ avpkt.size = this->size;
++ avpkt.flags = AV_PKT_FLAG_KEY;
++ bytes_consumed = avcodec_decode_audio3 (this->context,
++ (int16_t *)this->decode_buffer,
++ &decode_buffer_size, &avpkt);
++#else
+ bytes_consumed = avcodec_decode_audio2 (this->context,
+ (int16_t *)this->decode_buffer,
+ &decode_buffer_size,
+ &this->buf[offset],
+ this->size);
+-
++#endif
+ if (bytes_consumed<0) {
+ xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG,
+ "ffmpeg_audio_dec: error decompressing audio frame\n");
+diff -r 717450d734f7 src/combined/ffmpeg/ff_video_decoder.c
+--- a/src/combined/ffmpeg/ff_video_decoder.c Mon May 16 15:49:02 2011 +0100
++++ b/src/combined/ffmpeg/ff_video_decoder.c Mon May 16 19:46:49 2011 -0400
+@@ -58,6 +58,14 @@
+
+ #define ENABLE_DIRECT_RENDERING
+
++#if LIBAVCODEC_VERSION_MAJOR >= 53 || (LIBAVCODEC_VERSION_MAJOR == 52 && LIBAVCODEC_VERSION_MINOR >= 32)
++# define AVVIDEO 2
++#else
++# define AVVIDEO 1
++# define pp_context pp_context_t
++# define pp_mode pp_mode_t
++#endif
++
+ /* reordered_opaque appeared in libavcodec 51.68.0 */
+ #define AVCODEC_HAS_REORDERED_OPAQUE
+ #if LIBAVCODEC_VERSION_INT < 0x334400
+@@ -116,8 +124,8 @@
+
+ int pp_quality;
+ int pp_flags;
+- pp_context_t *pp_context;
+- pp_mode_t *pp_mode;
++ pp_context *our_context;
++ pp_mode *our_mode;
+
+ /* mpeg-es parsing */
+ mpeg_parser_t *mpeg_parser;
+@@ -444,23 +452,23 @@
+ this->pp_quality = this->class->pp_quality;
+
+ if(this->pp_available && this->pp_quality) {
+- if(!this->pp_context && this->context)
+- this->pp_context = pp_get_context(this->context->width, this->context->height,
++ if(!this->our_context && this->context)
++ this->our_context = pp_get_context(this->context->width, this->context->height,
+ this->pp_flags);
+- if(this->pp_mode)
+- pp_free_mode(this->pp_mode);
++ if(this->our_mode)
++ pp_free_mode(this->our_mode);
+
+- this->pp_mode = pp_get_mode_by_name_and_quality("hb:a,vb:a,dr:a",
++ this->our_mode = pp_get_mode_by_name_and_quality("hb:a,vb:a,dr:a",
+ this->pp_quality);
+ } else {
+- if(this->pp_mode) {
+- pp_free_mode(this->pp_mode);
+- this->pp_mode = NULL;
++ if(this->our_mode) {
++ pp_free_mode(this->our_mode);
++ this->our_mode = NULL;
+ }
+
+- if(this->pp_context) {
+- pp_free_context(this->pp_context);
+- this->pp_context = NULL;
++ if(this->our_context) {
++ pp_free_context(this->our_context);
++ this->our_context = NULL;
+ }
+ }
+ }
+@@ -1055,12 +1063,26 @@
+ }
+
+ /* skip decoding b frames if too late */
++#if AVVIDEO > 1
++ this->context->skip_frame = (this->skipframes > 0) ? AVDISCARD_NONREF : AVDISCARD_DEFAULT;
++#else
+ this->context->hurry_up = (this->skipframes > 0);
++#endif
+
+ lprintf("avcodec_decode_video: size=%d\n", this->mpeg_parser->buffer_size);
++#if AVVIDEO > 1
++ AVPacket avpkt;
++ av_init_packet(&avpkt);
++ avpkt.data = (uint8_t *)this->mpeg_parser->chunk_buffer;
++ avpkt.size = this->mpeg_parser->buffer_size;
++ avpkt.flags = AV_PKT_FLAG_KEY;
++ len = avcodec_decode_video2 (this->context, this->av_frame,
++ &got_picture, &avpkt);
++#else
+ len = avcodec_decode_video (this->context, this->av_frame,
+ &got_picture, this->mpeg_parser->chunk_buffer,
+ this->mpeg_parser->buffer_size);
++#endif
+ lprintf("avcodec_decode_video: decoded_size=%d, got_picture=%d\n",
+ len, got_picture);
+ len = current - buf->content - offset;
+@@ -1112,7 +1134,13 @@
+
+ } else {
+
+- if (this->context->hurry_up) {
++ if (
++#if AVVIDEO > 1
++ this->context->skip_frame != AVDISCARD_DEFAULT
++#else
++ this->context->hurry_up
++#endif
++ ) {
+ /* skipped frame, output a bad frame */
+ img = this->stream->video_out->get_frame (this->stream->video_out,
+ this->bih.biWidth,
+@@ -1304,13 +1332,25 @@
+ got_picture = 0;
+ } else {
+ /* skip decoding b frames if too late */
++#if AVVIDEO > 1
++ this->context->skip_frame = (this->skipframes > 0) ? AVDISCARD_NONREF : AVDISCARD_DEFAULT;
++#else
+ this->context->hurry_up = (this->skipframes > 0);
+-
++#endif
+ lprintf("buffer size: %d\n", this->size);
++#if AVVIDEO > 1
++ AVPacket avpkt;
++ av_init_packet(&avpkt);
++ avpkt.data = (uint8_t *)&chunk_buf[offset];
++ avpkt.size = this->size;
++ avpkt.flags = AV_PKT_FLAG_KEY;
++ len = avcodec_decode_video2 (this->context, this->av_frame,
++ &got_picture, &avpkt);
++#else
+ len = avcodec_decode_video (this->context, this->av_frame,
+ &got_picture, &chunk_buf[offset],
+ this->size);
+-
++#endif
+ #ifdef AVCODEC_HAS_REORDERED_OPAQUE
+ /* reset consumed pts value */
+ this->context->reordered_opaque = ff_tag_pts(this, 0);
+@@ -1432,7 +1472,7 @@
+ img->base, img->pitches,
+ img->width, img->height,
+ this->av_frame->qscale_table, this->av_frame->qstride,
+- this->pp_mode, this->pp_context,
++ this->our_mode, this->our_context,
+ this->av_frame->pict_type);
+
+ } else if (!this->av_frame->opaque) {
+@@ -1676,11 +1716,11 @@
+ free(this->buf);
+ this->buf = NULL;
+
+- if(this->pp_context)
+- pp_free_context(this->pp_context);
++ if(this->our_context)
++ pp_free_context(this->our_context);
+
+- if(this->pp_mode)
+- pp_free_mode(this->pp_mode);
++ if(this->our_mode)
++ pp_free_mode(this->our_mode);
+
+ mpeg_parser_dispose(this->mpeg_parser);
+
+@@ -1721,8 +1761,8 @@
+ this->aspect_ratio = 0;
+
+ this->pp_quality = 0;
+- this->pp_context = NULL;
+- this->pp_mode = NULL;
++ this->our_context = NULL;
++ this->our_mode = NULL;
+
+ this->mpeg_parser = NULL;
+
+diff -r 717450d734f7 src/post/planar/pp.c
+--- a/src/post/planar/pp.c Mon May 16 15:49:02 2011 +0100
++++ b/src/post/planar/pp.c Mon May 16 19:46:49 2011 -0400
+@@ -35,6 +35,12 @@
+ # include <libpostproc/postprocess.h>
+ #endif
+
++#if LIBPOSTPROC_VERSION_MAJOR < 52
++# define pp_context pp_context_t
++# define pp_mode pp_mode_t
++# define PP_PARAMETERS_T
++#endif
++
+ #define PP_STRING_SIZE 256 /* size of pp mode string (including all options) */
+
+ /* plugin class initialization function */
+@@ -76,14 +82,15 @@
+
+ /* libpostproc specific stuff */
+ int pp_flags;
+- pp_context_t *pp_context;
+- pp_mode_t *pp_mode;
++ pp_context *our_context;
++ pp_mode *our_mode;
+
+ pthread_mutex_t lock;
+ };
+
+
+ static int set_parameters (xine_post_t *this_gen, void *param_gen) {
++#ifdef PP_PARAMETERS_T
+ post_plugin_pp_t *this = (post_plugin_pp_t *)this_gen;
+ pp_parameters_t *param = (pp_parameters_t *)param_gen;
+
+@@ -92,17 +99,18 @@
+ memcpy( &this->params, param, sizeof(pp_parameters_t) );
+
+ pthread_mutex_unlock (&this->lock);
+-
++#endif
+ return 1;
+ }
+
+ static int get_parameters (xine_post_t *this_gen, void *param_gen) {
++#ifdef PP_PARAMETERS_T
+ post_plugin_pp_t *this = (post_plugin_pp_t *)this_gen;
+ pp_parameters_t *param = (pp_parameters_t *)param_gen;
+
+
+ memcpy( param, &this->params, sizeof(pp_parameters_t) );
+-
++#endif
+ return 1;
+ }
+
+@@ -202,8 +210,8 @@
+ if(cpu_caps & MM_ACCEL_X86_3DNOW)
+ this->pp_flags |= PP_CPU_CAPS_3DNOW;
+
+- this->pp_mode = NULL;
+- this->pp_context = NULL;
++ this->our_mode = NULL;
++ this->our_context = NULL;
+
+ pthread_mutex_init (&this->lock, NULL);
+
+@@ -248,13 +256,13 @@
+ post_plugin_pp_t *this = (post_plugin_pp_t *)this_gen;
+
+ if (_x_post_dispose(this_gen)) {
+- if(this->pp_mode) {
+- pp_free_mode(this->pp_mode);
+- this->pp_mode = NULL;
++ if(this->our_mode) {
++ pp_free_mode(this->our_mode);
++ this->our_mode = NULL;
+ }
+- if(this->pp_context) {
+- pp_free_context(this->pp_context);
+- this->pp_context = NULL;
++ if(this->our_context) {
++ pp_free_context(this->our_context);
++ this->our_context = NULL;
+ }
+ free(this);
+ }
+@@ -304,7 +312,7 @@
+
+ pthread_mutex_lock (&this->lock);
+
+- if( !this->pp_context ||
++ if( !this->our_context ||
+ this->frame_width != yv12_frame->width ||
+ this->frame_height != yv12_frame->height ) {
+
+@@ -312,32 +320,32 @@
+ this->frame_height = yv12_frame->height;
+ pp_flags = this->pp_flags;
+
+- if(this->pp_context)
+- pp_free_context(this->pp_context);
++ if(this->our_context)
++ pp_free_context(this->our_context);
+
+- this->pp_context = pp_get_context(frame->width, frame->height, pp_flags);
++ this->our_context = pp_get_context(frame->width, frame->height, pp_flags);
+
+- if(this->pp_mode) {
+- pp_free_mode(this->pp_mode);
+- this->pp_mode = NULL;
++ if(this->our_mode) {
++ pp_free_mode(this->our_mode);
++ this->our_mode = NULL;
+ }
+ }
+
+- if(!this->pp_mode)
+- this->pp_mode = pp_get_mode_by_name_and_quality(this->params.mode,
++ if(!this->our_mode)
++ this->our_mode = pp_get_mode_by_name_and_quality(this->params.mode,
+ this->params.quality);
+
+- if(this->pp_mode)
++ if(this->our_mode)
+ pp_postprocess(yv12_frame->base, yv12_frame->pitches,
+ out_frame->base, out_frame->pitches,
+ (frame->width+7)&(~7), frame->height,
+ NULL, 0,
+- this->pp_mode, this->pp_context,
++ this->our_mode, this->our_context,
+ 0 /*this->av_frame->pict_type*/);
+
+ pthread_mutex_unlock (&this->lock);
+
+- if(this->pp_mode) {
++ if(this->our_mode) {
+ skip = out_frame->draw(out_frame, stream);
+ _x_post_frame_copy_up(frame, out_frame);
+ } else {
diff --git a/testing/xine-lib/xine-lib-1.1.19-xvmc.patch b/testing/xine-lib/xine-lib-1.1.19-xvmc.patch
new file mode 100644
index 000000000..bef8b0bac
--- /dev/null
+++ b/testing/xine-lib/xine-lib-1.1.19-xvmc.patch
@@ -0,0 +1,17 @@
+Quoting ChangeLog of X11's videoproto package:
+vldXvMC.h: stop uselessly including XvMClib.h
+
+--- src/video_out/xxmc.h
++++ src/video_out/xxmc.h
+@@ -77,10 +77,10 @@
+ #include <X11/extensions/XShm.h>
+ #include <X11/extensions/Xv.h>
+ #include <X11/extensions/Xvlib.h>
++#include <X11/extensions/XvMClib.h>
+ #ifdef HAVE_VLDXVMC
+ #include <X11/extensions/vldXvMC.h>
+ #else
+- #include <X11/extensions/XvMClib.h>
+ #include <X11/extensions/XvMC.h>
+ #endif
+
diff --git a/testing/xinetd/PKGBUILD b/testing/xinetd/PKGBUILD
new file mode 100644
index 000000000..5a2935c13
--- /dev/null
+++ b/testing/xinetd/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 141988 2011-11-03 20:19:56Z tpowa $
+# Maintainer:
+# Contributor: Judd <jvinet@zeroflux.org>
+
+pkgname=xinetd
+pkgver=2.3.14
+pkgrel=8
+pkgdesc="A secure replacement for inetd"
+arch=('i686' 'x86_64')
+url="http://www.xinetd.org/"
+license=('custom')
+optdepends=('perl: for xconv.pl script')
+backup=('etc/xinetd.conf' 'etc/xinetd.d/servers' 'etc/xinetd.d/services')
+source=(http://www.xinetd.org/xinetd-$pkgver.tar.gz
+ xinetd.conf
+ xinetd
+ servers
+ services)
+md5sums=('567382d7972613090215c6c54f9b82d9'
+ 'f109f699a07bc8cfb5791060f5e87f9e'
+ 'ea37a2794f202e6b953d9b6956dad16a'
+ '21f47b4aa20921cfaddddd9f9a407f81'
+ '9fa2061dc7dd738c8424251deb86f81e')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ sed -i "s#${prefix}/man#${prefix}/share/man#" configure
+ ./configure --prefix=/usr --without-libwrap
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make prefix=$pkgdir/usr install
+
+ install -Dm755 $srcdir/xinetd $pkgdir/etc/rc.d/xinetd
+ install -Dm644 $srcdir/xinetd.conf $pkgdir/etc/xinetd.conf
+ install -Dm644 $srcdir/servers $pkgdir/etc/xinetd.d/servers
+ install -Dm644 $srcdir/services $pkgdir/etc/xinetd.d/services
+
+ # install license
+ install -Dm644 COPYRIGHT $pkgdir/usr/share/licenses/$pkgname/COPYRIGHT
+}
diff --git a/testing/xinetd/servers b/testing/xinetd/servers
new file mode 100644
index 000000000..f064c8d7a
--- /dev/null
+++ b/testing/xinetd/servers
@@ -0,0 +1,10 @@
+service servers
+{
+ type = INTERNAL UNLISTED
+ port = 9099
+ socket_type = stream
+ protocol = tcp
+ wait = no
+ disable = yes
+ only_from = 127.0.0.1
+}
diff --git a/testing/xinetd/services b/testing/xinetd/services
new file mode 100644
index 000000000..4ea304c4f
--- /dev/null
+++ b/testing/xinetd/services
@@ -0,0 +1,10 @@
+service services
+{
+ type = INTERNAL UNLISTED
+ port = 9098
+ socket_type = stream
+ protocol = tcp
+ wait = no
+ disable = yes
+ only_from = 127.0.0.1
+}
diff --git a/testing/xinetd/xinetd b/testing/xinetd/xinetd
new file mode 100755
index 000000000..4b8fa369a
--- /dev/null
+++ b/testing/xinetd/xinetd
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/xinetd`
+case "$1" in
+ start)
+ stat_busy "Starting xinetd"
+ [ -z "$PID" ] && /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ echo $PID > /var/run/xinetd.pid
+ add_daemon xinetd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping xinetd"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f /var/run/xinetd.pid
+ rm_daemon xinetd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/testing/xinetd/xinetd.conf b/testing/xinetd/xinetd.conf
new file mode 100644
index 000000000..b15d9f649
--- /dev/null
+++ b/testing/xinetd/xinetd.conf
@@ -0,0 +1,14 @@
+#
+# /etc/xinetd.conf
+#
+
+defaults
+{
+ instances = 60
+ log_type = SYSLOG authpriv
+ log_on_success = HOST PID
+ log_on_failure = HOST
+ cps = 25 30
+}
+
+includedir /etc/xinetd.d