summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
authorNicolas Reynolds <fauno@kiwwwi.com.ar>2011-05-09 20:23:53 -0300
committerNicolas Reynolds <fauno@kiwwwi.com.ar>2011-05-09 20:23:53 -0300
commit7c6a0188a5ac63d4bb6c667c2f1bcf26792312e6 (patch)
tree706c3ba50b28eb4e1414d122b28ce69cf2c8a285 /extra
parent25828de60b05b955dc23d7226b591b416f955875 (diff)
parentd2f2d3b5c845807249680c275031f94047f9e762 (diff)
Merge branch 'master' of ssh://vparabola/home/parabola/abslibre-pre-mips64el
Conflicts: community/libtextcat/PKGBUILD extra/glsof/PKGBUILD extra/orca/PKGBUILD extra/python-qt/PKGBUILD extra/python-sip/PKGBUILD extra/python2-qt/PKGBUILD extra/python2-sip/PKGBUILD extra/swfdec-mozilla/PKGBUILD extra/swfdec/PKGBUILD extra/trayer/PKGBUILD extra/xbill/PKGBUILD extra/xfce4-xfapplet-plugin/PKGBUILD
Diffstat (limited to 'extra')
-rw-r--r--extra/akonadi/PKGBUILD12
-rw-r--r--extra/dconf/PKGBUILD15
-rw-r--r--extra/dconf/load-enum.patch22
-rw-r--r--extra/fyre/ChangeLog7
-rw-r--r--extra/glsof/ChangeLog6
-rw-r--r--extra/glsof/PKGBUILD51
-rw-r--r--extra/glsof/glsof-filemonitor2
-rw-r--r--extra/glsof/glsof-queries2
-rw-r--r--extra/glsof/glsof.desktop12
-rw-r--r--extra/gnet/ChangeLog5
-rw-r--r--extra/gnome-applets/PKGBUILD11
-rw-r--r--extra/gnutls/PKGBUILD8
-rw-r--r--extra/kdebase-workspace/sensors-fix.patch22
-rw-r--r--extra/kdebase-workspace/shutdown-fix.patch11
-rw-r--r--extra/kdemultimedia/kmix-locale-pulseaudio.patch1117
-rw-r--r--extra/keytouch-editor/ChangeLog8
-rw-r--r--extra/kobodeluxe/ChangeLog8
-rw-r--r--extra/kobodeluxe/PKGBUILD64
-rw-r--r--extra/kobodeluxe/kobodeluxe-0.5.1-glibc2.10.patch11
-rw-r--r--extra/kobodeluxe/kobodeluxe.install9
-rw-r--r--extra/libgda/PKGBUILD6
-rw-r--r--extra/libsamplerate/PKGBUILD6
-rw-r--r--extra/libtextcat/PKGBUILD50
-rw-r--r--extra/libtextcat/fpdb.conf86
-rw-r--r--extra/libtextcat/libtextcat-2.2-OOo.patch634
-rw-r--r--extra/libtextcat/libtextcat-2.2-exportapi.patch305
-rw-r--r--extra/libwpd/PKGBUILD16
-rw-r--r--extra/libwps/PKGBUILD32
-rw-r--r--extra/llvm/PKGBUILD14
-rw-r--r--extra/llvm/bug-9869-operator-h-c++0x.patch57
-rw-r--r--extra/mysql/PKGBUILD6
-rw-r--r--extra/orca/PKGBUILD27
-rw-r--r--extra/orca/orca.install11
-rw-r--r--extra/phonon-gstreamer/PKGBUILD12
-rw-r--r--extra/python-qt/PKGBUILD41
-rw-r--r--extra/python-sip/PKGBUILD30
-rw-r--r--extra/python2-qt/PKGBUILD41
-rw-r--r--extra/python2-sip/PKGBUILD30
-rw-r--r--extra/qscintilla/PKGBUILD10
-rw-r--r--extra/quota-tools/ChangeLog9
-rw-r--r--extra/rxvt-unicode/rxvt-unicode.pngbin1513 -> 0 bytes
-rw-r--r--extra/squid/fix-for-new-cap-headers.patch14
-rw-r--r--extra/squid/squid-makefiles.patch53
-rw-r--r--extra/swfdec-mozilla/PKGBUILD21
-rw-r--r--extra/swfdec/PKGBUILD25
-rw-r--r--extra/trayer/PKGBUILD32
-rw-r--r--extra/xbill/PKGBUILD40
-rw-r--r--extra/xbill/xbill.install5
-rw-r--r--extra/xchat-gnome/PKGBUILD50
-rw-r--r--extra/xchat-gnome/gtk2-2.20.patch137
-rw-r--r--extra/xchat-gnome/xchat-gnome-0.26.1-deprecated-symbol.patch22
-rw-r--r--extra/xchat-gnome/xchat-gnome.install24
-rw-r--r--extra/xchm/PKGBUILD6
-rw-r--r--extra/xfce4-xfapplet-plugin/PKGBUILD32
54 files changed, 1356 insertions, 1931 deletions
diff --git a/extra/akonadi/PKGBUILD b/extra/akonadi/PKGBUILD
index eff8df43e..7b5d011c9 100644
--- a/extra/akonadi/PKGBUILD
+++ b/extra/akonadi/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 118244 2011-04-06 08:21:21Z andrea $
+# $Id: PKGBUILD 122924 2011-05-07 10:20:40Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
pkgname=akonadi
-pkgver=1.5.2
+pkgver=1.5.3
pkgrel=1
pkgdesc="PIM layer, which provides an asynchronous API to access all kind of PIM data"
arch=('i686' 'x86_64' 'mips64el')
@@ -13,10 +13,10 @@ depends=('shared-mime-info' 'boost-libs' 'mysql' 'soprano')
makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost')
install="${pkgname}.install"
source=("http://download.akonadi-project.org/${pkgname}-${pkgver}.tar.bz2")
-md5sums=('1c69a74474389e35709171a329c77bed')
+md5sums=('ad342acca61c2af27be4cce61b2d925a')
build() {
- cd ${srcdir}
+ cd "${srcdir}"
mkdir build
cd build
cmake ../${pkgname}-${pkgver} \
@@ -27,6 +27,6 @@ build() {
}
package() {
- cd ${srcdir}/build
- make DESTDIR=${pkgdir} install
+ cd "${srcdir}/build"
+ make DESTDIR="${pkgdir}" install
}
diff --git a/extra/dconf/PKGBUILD b/extra/dconf/PKGBUILD
index f9bd14a1b..14aec63dd 100644
--- a/extra/dconf/PKGBUILD
+++ b/extra/dconf/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 118171 2011-04-05 17:33:39Z ibiru $
+# $Id: PKGBUILD 123046 2011-05-07 19:01:26Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgname=dconf
-pkgver=0.7.3
-pkgrel=2
+pkgver=0.7.4
+pkgrel=1
pkgdesc="A low-level configuration system."
arch=(i686 x86_64 'mips64el')
url="http://live.gnome.org/dconf"
@@ -11,16 +11,13 @@ depends=('glib2')
makedepends=('vala' 'gobject-introspection' 'gtk3')
optdepends=('gtk3: for dconf-editor')
install=dconf.install
-source=(http://download.gnome.org/sources/${pkgname}/0.7/${pkgname}-${pkgver}.tar.bz2
- load-enum.patch)
-sha256sums=('84efc95cb62b6637b2131e110ff447908be739c2185d69bebb300293b561dfd9'
- '8ead56b2897b18c97b9b72b81bd6e9f9249e28743b05a2653bbf4e6af7d9f7cc')
+source=(http://download.gnome.org/sources/${pkgname}/0.7/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('299d79daf0b214c692e7d5788d7bda76d778c1748ea37c33256c4fa6143b22cd')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
- patch -Np1 -i "${srcdir}/load-enum.patch"
- ./configure --prefix=/usr \
+ ./configure --prefix=/usr --sysconfdir=/etc \
--libexecdir=/usr/lib/dconf
make
}
diff --git a/extra/dconf/load-enum.patch b/extra/dconf/load-enum.patch
deleted file mode 100644
index 949de1e00..000000000
--- a/extra/dconf/load-enum.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 0d00a6ad3385e08eff0c50efe970af8d5d63c536 Mon Sep 17 00:00:00 2001
-From: Robert Ancell <robert.ancell@canonical.com>
-Date: Tue, 29 Mar 2011 05:50:12 +0000
-Subject: editor: Load *.enums.xml as well as *.gschema.xml. This was stopping some enums from being loaded.
-
-Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=636880
----
-diff --git a/editor/dconf-schema.vala b/editor/dconf-schema.vala
-index 2b34e28..c2654b5 100644
---- a/editor/dconf-schema.vala
-+++ b/editor/dconf-schema.vala
-@@ -371,7 +371,7 @@ public class SchemaList
- while ((info = i.next_file (null)) != null) {
- string name = info.get_name();
-
-- if (!name.has_suffix(".gschema.xml"))
-+ if (!name.has_suffix(".gschema.xml") && !name.has_suffix(".enums.xml"))
- continue;
-
- string path = Path.build_filename(dir, name, null);
---
-cgit v0.9
diff --git a/extra/fyre/ChangeLog b/extra/fyre/ChangeLog
deleted file mode 100644
index edb09672c..000000000
--- a/extra/fyre/ChangeLog
+++ /dev/null
@@ -1,7 +0,0 @@
-2008-11-03 Eric Belanger <eric@archlinux.org>
-
- * fyre 1.0.1-3
- * Fixed mime file conflict
- * Fixed install scriptlet
- * Added shared-mime-info depends
- * Added ChangeLog
diff --git a/extra/glsof/ChangeLog b/extra/glsof/ChangeLog
deleted file mode 100644
index e941c8b45..000000000
--- a/extra/glsof/ChangeLog
+++ /dev/null
@@ -1,6 +0,0 @@
-2009-03-14 Eric Belanger <eric@archlinux.org>
-
- * glsof 0.9.16-5
- * Added license
- * Added .desktop file
- * Added ChangeLog
diff --git a/extra/glsof/PKGBUILD b/extra/glsof/PKGBUILD
index ac9eacdd4..cc82175f7 100644
--- a/extra/glsof/PKGBUILD
+++ b/extra/glsof/PKGBUILD
@@ -1,25 +1,38 @@
-# $Id: PKGBUILD 30064 2009-03-16 01:17:32Z eric $
-# Maintainer: Eric Belanger <eric@archlinux.org>
-# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# $Id: PKGBUILD 123056 2011-05-07 20:58:12Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=glsof
-pkgver=0.9.16
-pkgrel=5
-pkgdesc="A gtk-GUI for lsof (aka GTK-lsof)"
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="Two separate GUI utilities (Queries and Filemonitor) to the lsof command line utility"
arch=('i686' 'x86_64' 'mips64el')
url="http://glsof.sourceforge.net/"
-license=('GPL')
-depends=('libxml2' 'gtk2' 'lsof')
-source=(http://download.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz glsof.desktop)
-md5sums=('5ad5f2a6908be713753d9826c38e3e2c' '1a6ab5bf5ef44ae31b8b7461b76f62db')
-sha1sums=('80f4596ad09c5ddb463bad299a76ce275c0ecd4d' '647be33bea11fec6ba0bfd59c02034dc64925e52')
+license=('GPL3')
+depends=('java-runtime' 'lsof')
+if [ "$CARCH" = "i686" ]; then
+ source=(http://downloads.sourceforge.net/sourceforge/glsof/filemonitor-${pkgver}/filemonitor_linux32.tar.gz \
+ http://downloads.sourceforge.net/sourceforge/glsof/queries-${pkgver}/queries_linux32.tar.gz \
+ glsof-filemonitor glsof-queries)
+ md5sums=('7a541ee8c432b78f9bfd36dd1707fb8d'
+ '895bcec79edea97ebde36d7f5eaa3ee9'
+ '7e43c1120e15e65bd1a12d6f188be4a0'
+ '980da4b39e1e3f4fbed08018dfd3be7b')
+elif [ "$CARCH" = "x86_64" ]; then
+ source=(http://downloads.sourceforge.net/sourceforge/glsof/filemonitor-${pkgver}/filemonitor_linux64.tar.gz \
+ http://downloads.sourceforge.net/sourceforge/glsof/queries-${pkgver}/queries_linux64.tar.gz \
+ glsof-filemonitor glsof-queries)
+ md5sums=('9a6043b0b90fbc6de4db36967647dab0'
+ 'ed96ee2105428aa8b038f5fe13b8cd1d'
+ '7e43c1120e15e65bd1a12d6f188be4a0'
+ '980da4b39e1e3f4fbed08018dfd3be7b')
+fi
-build() {
- cd ${srcdir}/${pkgname}-${pkgver}
- ./configure --prefix=/usr || return 1
- make || return 1
- make DESTDIR=${pkgdir} install || return 1
- install -D -m644 ../glsof.desktop ${pkgdir}/usr/share/applications/glsof.desktop || return 1
- install -d ${pkgdir}/usr/share/pixmaps
- ln -s /usr/share/glsof/pixmaps/logo.png ${pkgdir}/usr/share/pixmaps/glsof.png
+package() {
+ cd "${srcdir}"
+ install -D -m755 glsof-filemonitor "${pkgdir}/usr/bin/glsof-filemonitor"
+ install -D -m755 glsof-queries "${pkgdir}/usr/bin/glsof-queries"
+ install -D -m644 filemonitor_linux??/filemonitor.jar "${pkgdir}/usr/share/java/glsof/filemonitor.jar"
+ install -D -m644 filemonitor_linux??/filemonitor.pdf "${pkgdir}/usr/share/doc/glsof/filemonitor.pdf"
+ install -D -m644 queries_linux??/queries.jar "${pkgdir}/usr/share/java/glsof/queries.jar"
+ install -D -m644 queries_linux??/queries.pdf "${pkgdir}/usr/share/doc/glsof/queries.pdf"
}
diff --git a/extra/glsof/glsof-filemonitor b/extra/glsof/glsof-filemonitor
new file mode 100644
index 000000000..616e23ac7
--- /dev/null
+++ b/extra/glsof/glsof-filemonitor
@@ -0,0 +1,2 @@
+#!/bin/sh
+java -jar /usr/share/java/glsof/filemonitor.jar
diff --git a/extra/glsof/glsof-queries b/extra/glsof/glsof-queries
new file mode 100644
index 000000000..1e9c4fc9d
--- /dev/null
+++ b/extra/glsof/glsof-queries
@@ -0,0 +1,2 @@
+#!/bin/sh
+java -jar /usr/share/java/glsof/queries.jar
diff --git a/extra/glsof/glsof.desktop b/extra/glsof/glsof.desktop
deleted file mode 100644
index fb13ffd6d..000000000
--- a/extra/glsof/glsof.desktop
+++ /dev/null
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Name=glsof
-Comment=A GUI for lsof
-Comment[pl]=GUI do lsof
-Exec=glsof
-Icon=glsof.png
-StartupNotify=false
-Terminal=false
-Type=Application
-Categories=GTK;System;Monitor;
-Encoding=UTF-8
-# vi: encoding=utf-8
diff --git a/extra/gnet/ChangeLog b/extra/gnet/ChangeLog
deleted file mode 100644
index b8975af31..000000000
--- a/extra/gnet/ChangeLog
+++ /dev/null
@@ -1,5 +0,0 @@
-2008-05-04 Eric Belanger <eric@archlinux.org>
-
- * gnet 2.0.8-1
- * Upstream update
- * Added ChangeLog
diff --git a/extra/gnome-applets/PKGBUILD b/extra/gnome-applets/PKGBUILD
index fe9bc25e6..d7f6db5a1 100644
--- a/extra/gnome-applets/PKGBUILD
+++ b/extra/gnome-applets/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 113478 2011-03-08 21:10:38Z ibiru $
+# $Id: PKGBUILD 123041 2011-05-07 17:45:38Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=gnome-applets
-pkgver=2.91.4
-pkgrel=2
+pkgver=3.1.1
+pkgrel=1
pkgdesc="GNOME Applets"
arch=(i686 x86_64 'mips64el')
license=('GPL')
@@ -13,9 +13,8 @@ options=(!emptydirs)
url="http://www.gnome.org"
groups=(gnome)
install=gnome-applets.install
-#source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.91/${pkgname}-${pkgver}.tar.bz2)
-source=(${pkgname}-${pkgver}.tar.xz)
-sha256sums=('950ab962c39fca9375a9df0827ccb8f2178f7e84950c8fdbea5e3d2f9889a49c')
+source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}-20110506.tar.xz)
+sha256sums=('eb19a412e804975d614255520f4c7c6477d927e8d5cb6abe217008ab62ab857b')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/extra/gnutls/PKGBUILD b/extra/gnutls/PKGBUILD
index 357733d16..146b627a4 100644
--- a/extra/gnutls/PKGBUILD
+++ b/extra/gnutls/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 120489 2011-04-24 13:19:44Z andyrtr $
+# $Id: PKGBUILD 123031 2011-05-07 16:07:34Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=gnutls
-pkgver=2.12.3
+pkgver=2.12.4
pkgrel=1
pkgdesc="A library which provides a secure layer over a reliable transport layer"
arch=('i686' 'x86_64' 'mips64el')
@@ -12,7 +12,7 @@ install=gnutls.install
options=('!libtool' '!zipman')
depends=('gcc-libs>=4.4.3' 'libtasn1>=2.5' 'readline>=6.0' 'zlib' 'libgcrypt>=1.4.5')
source=(ftp://ftp.gnu.org/gnu/gnutls/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('04b72b022b42b10df12cbbae051e2d55')
+md5sums=('3e17fc8cb1cf8272067f6b66baf02810')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
@@ -20,7 +20,7 @@ build() {
# we stay with libgcrypt for now. nettle would need to be moved from AUR to extra.
./configure --prefix=/usr \
--with-zlib \
- --with-libgcrypt \
+ --with-libgcrypt \
--disable-static \
--disable-guile
make
diff --git a/extra/kdebase-workspace/sensors-fix.patch b/extra/kdebase-workspace/sensors-fix.patch
deleted file mode 100644
index 2d9b70c52..000000000
--- a/extra/kdebase-workspace/sensors-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-commit 23863a99399cbb274f6756146b3c08de2efa0c7f
-Author: John Tapsell <johnflux@gmail.com>
-Date: Thu Apr 7 10:59:20 2011 +0100
-
- Fix accidental removal of a #include, when adding freebsd support. This broke the lmsensors at minimum
-
- BUG: 270246
- BUG: 270246
- CCMAIL: naylor.b.david@gmail.com
-
-diff --git a/ksysguard/ksysguardd/modules.h b/ksysguard/ksysguardd/modules.h
-index e780be6..9aae890 100644
---- a/ksysguard/ksysguardd/modules.h
-+++ b/ksysguard/ksysguardd/modules.h
-@@ -23,6 +23,7 @@
- #ifndef KSG_MODULES_H
- #define KSG_MODULES_H
-
-+#include "config-ksysguardd.h"
- #include "Command.h"
- #include "conf.h"
- #include "ksysguardd.h"
diff --git a/extra/kdebase-workspace/shutdown-fix.patch b/extra/kdebase-workspace/shutdown-fix.patch
deleted file mode 100644
index b01ab7fba..000000000
--- a/extra/kdebase-workspace/shutdown-fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- kdebase-workspace-4.6.2/kdm/config.def~ 2011-04-08 00:29:48.291941154 -0700
-+++ kdebase-workspace-4.6.2/kdm/config.def 2011-04-08 00:32:04.738607619 -0700
-@@ -38,7 +38,7 @@
- # define HALT_CMD "/usr/sbin/shutdown -h now"
- # define REBOOT_CMD "/usr/sbin/shutdown -r now"
- #elif defined(BSD) || defined(__linux__)
--# define HALT_CMD "/sbin/shutdown -p now"
-+# define HALT_CMD "/sbin/shutdown -h now"
- # define REBOOT_CMD "/sbin/shutdown -r now"
- #elif defined(__SVR4)
- # define HALT_CMD "/usr/sbin/halt"
diff --git a/extra/kdemultimedia/kmix-locale-pulseaudio.patch b/extra/kdemultimedia/kmix-locale-pulseaudio.patch
deleted file mode 100644
index 88be8dbde..000000000
--- a/extra/kdemultimedia/kmix-locale-pulseaudio.patch
+++ /dev/null
@@ -1,1117 +0,0 @@
-Index: kmix/apps/kmix.cpp
-===================================================================
---- kmix/apps/kmix.cpp (revision 1226955)
-+++ kmix/apps/kmix.cpp (revision 1226956)
-@@ -78,8 +78,6 @@
- m_dockWidget(),
- m_dontSetDefaultCardOnStart (false)
- {
-- _cornerLabelNew = 0;
--
- setObjectName( QLatin1String("KMixWindow" ));
- // disable delete-on-close because KMix might just sit in the background waiting for cards to be plugged in
- setAttribute(Qt::WA_DeleteOnClose, false);
-@@ -184,16 +182,29 @@
-
- void KMixWindow::initActionsAfterInitMixer()
- {
-+ bool isPulseAudio = false;
- // Add "launch_pavucontrol" to menu, if Pulseaudio backend is in use
- foreach( Mixer* mixer, Mixer::mixers() )
- {
-- if ( mixer->getDriverName() == "PulseAudio") {
-+ if ( mixer->getDriverName() == "PulseAudio")
-+ {
-+ isPulseAudio = true;
- KAction* action = actionCollection()->addAction( "launch_pavucontrol" );
- action->setText( i18n( "Audio setup (&Pulseaudio)" ) );
- connect(action, SIGNAL(triggered(bool) ), SLOT( slotPavucontrolExec() ));
- break;
- }
- }
-+
-+ if (! isPulseAudio )
-+ {
-+ QPixmap cornerNewPM = KIconLoader::global()->loadIcon( "tab-new", KIconLoader::Toolbar, KIconLoader::SizeSmall );
-+ QPushButton* _cornerLabelNew = new QPushButton();
-+ _cornerLabelNew->setIcon(cornerNewPM);
-+ //cornerLabelNew->setSizePolicy(QSizePolicy());
-+ m_wsMixers->setCornerWidget(_cornerLabelNew, Qt::TopLeftCorner);
-+ connect ( _cornerLabelNew, SIGNAL( clicked() ), SLOT (newView() ) );
-+ }
- }
-
- void KMixWindow::initPrefDlg()
-@@ -210,15 +221,10 @@
- m_wsMixers = new KTabWidget();
- m_wsMixers->setDocumentMode(true);
- setCentralWidget(m_wsMixers);
-- m_wsMixers->setTabsClosable(true);
-+ m_wsMixers->setTabsClosable(false);
- connect (m_wsMixers, SIGNAL(tabCloseRequested(int)), SLOT(saveAndCloseView(int)) );
-
- QPixmap cornerNewPM = KIconLoader::global()->loadIcon( "tab-new", KIconLoader::Toolbar, KIconLoader::SizeSmall );
-- _cornerLabelNew = new QPushButton();
-- _cornerLabelNew->setIcon(cornerNewPM);
-- //cornerLabelNew->setSizePolicy(QSizePolicy());
-- m_wsMixers->setCornerWidget(_cornerLabelNew, Qt::TopLeftCorner);
-- connect ( _cornerLabelNew, SIGNAL( clicked() ), SLOT (newView() ) );
-
- connect( m_wsMixers, SIGNAL( currentChanged ( int ) ), SLOT( newMixerShown(int)) );
-
-@@ -516,6 +522,7 @@
- addMixerWidget(mixer->id(), guiprof, -1);
- }
- else {
-+ // did exist => remove and insert new guiprof at old position
- int indexOfTab = m_wsMixers->indexOf(kmw);
- if ( indexOfTab != -1 ) m_wsMixers->removeTab(indexOfTab);
- delete kmw;
-@@ -676,9 +683,9 @@
- m_wsMixers->removeTab(idx);
- delete kmw;
-
-- if ( m_wsMixers->count() < 2 ) {
-- m_wsMixers->setTabsClosable(false);
-- }
-+ bool isPulseAudio = kmw->mixer()->getDriverName() == "PulseAudio";
-+ m_wsMixers->setTabsClosable(!isPulseAudio && m_wsMixers->count() > 1);
-+
- saveViewConfig();
- }
- kDebug() << "Exit";
-@@ -874,9 +881,9 @@
- if ( kmw->getGuiprof()->getId() == m_defaultCardOnStart ) {
- m_wsMixers->setCurrentWidget(kmw);
- }
-- if ( m_wsMixers->count() > 1 ) {
-- m_wsMixers->setTabsClosable(true);
-- }
-+
-+ bool isPulseAudio = mixer->getDriverName() == "PulseAudio";
-+ m_wsMixers->setTabsClosable(!isPulseAudio && m_wsMixers->count() > 1);
- m_dontSetDefaultCardOnStart = false;
-
-
-Index: kmix/apps/kmix.h
-===================================================================
---- kmix/apps/kmix.h (revision 1226955)
-+++ kmix/apps/kmix.h (revision 1226956)
-@@ -116,7 +116,6 @@
- Qt::Orientation m_toplevelOrientation;
-
- KTabWidget *m_wsMixers;
-- QPushButton* _cornerLabelNew;
-
- KMixPrefDlg *m_prefDlg;
- KMixDockWidget *m_dockWidget;
-Index: kmix/gui/viewbase.cpp
-===================================================================
---- kmix/gui/viewbase.cpp (revision 1226956)
-+++ kmix/gui/viewbase.cpp (revision 1226957)
-@@ -226,34 +226,35 @@
-
- // Check the guiprofile... if it is not the fallback GUIProfile, then
- // make sure that we add a specific entry for any devices not present.
-- if ( 0 != _guiprof && GUIProfile::fallbackProfile(_mixer) != _guiprof ) {
-+ if ( 0 != _guiprof && GUIProfile::fallbackProfile(_mixer) != _guiprof ) // TODO colin/cesken IMO calling GUIProfile::fallbackProfile(_mixer) is wrong, as it ALWAYS creates a new Object. fallbackProfile() would need to cache the created fallback profiles so this should make any sense.
-+ {
- kDebug(67100) << "Dynamic mixer " << _mixer->id() << " is NOT using Fallback GUIProfile. Checking to see if new controls are present";
-
- QList<QString> new_mix_devices;
- MixSet ms = _mixer->getMixSet();
- for (int i=0; i < ms.count(); ++i)
-+ {
- new_mix_devices.append("^" + ms[i]->id() + "$");
-+ kDebug(67100) << "new_mix_devices.append => " << ms[i]->id();
-+ }
-
-+ GUIProfile::ControlSet& ctlSet = _guiprof->getControls();
-+
- // std::vector<ProfControl*>::const_iterator itEnd = _guiprof->_controls.end();
- // for ( std::vector<ProfControl*>::const_iterator it = _guiprof->_controls.begin(); it != itEnd; ++it)
- // new_mix_devices.removeAll((*it)->id);
- // TODO Please check this change, Colin
-- foreach ( ProfControl* pctl, _guiprof->getControls() ) {
-+ foreach ( ProfControl* pctl, ctlSet ) {
- new_mix_devices.removeAll(pctl->id);
- }
-
-
- if ( new_mix_devices.count() > 0 ) {
- kDebug(67100) << "Found " << new_mix_devices.count() << " new controls. Adding to GUIProfile";
-+ QString sctlMatchAll("*");
- while ( new_mix_devices.count() > 0 ) {
-- QString sctlMatchAll("*");
- QString new_mix_devices0 = new_mix_devices.takeAt(0);
-- ProfControl* ctl = new ProfControl(new_mix_devices0, sctlMatchAll);
--// ctl->id = new_mix_devices.takeAt(0);
--// ctl->setSubcontrols(QString("*"));
--// ctl->tab = (_guiprof->tabs())[0]->name(); // Use the first tab... not ideal but should work most of the time;
--// ctl->show = "simple";
-- _guiprof->getControls().push_back(ctl);
-+ ctlSet.push_back(new ProfControl(new_mix_devices0, sctlMatchAll));
- }
- _guiprof->setDirty();
- }
-Index: kmix/gui/viewbase.cpp
-===================================================================
---- kmix/gui/viewbase.cpp (revision 1226957)
-+++ kmix/gui/viewbase.cpp (revision 1226958)
-@@ -33,6 +33,7 @@
- #include <kactioncollection.h>
- #include <ktoggleaction.h>
- #include <kstandardaction.h>
-+#include <kmessagebox.h>
- // KMix
- #include "dialogviewconfiguration.h"
- #include "gui/guiprofile.h"
-@@ -43,7 +44,7 @@
-
-
- ViewBase::ViewBase(QWidget* parent, const char* id, Mixer* mixer, Qt::WFlags f, ViewBase::ViewFlags vflags, GUIProfile *guiprof, KActionCollection *actionColletion)
-- : QWidget(parent, f), _actions(actionColletion), _vflags(vflags), _guiprof(guiprof)
-+ : QWidget(parent, f), _popMenu(NULL), _actions(actionColletion), _vflags(vflags), _guiprof(guiprof)
- {
- setObjectName(id);
- m_viewId = id;
-@@ -73,9 +74,11 @@
- }
- }
- }
-- QAction *action = _localActionColletion->addAction("toggle_channels");
-- action->setText(i18n("&Channels"));
-- connect(action, SIGNAL(triggered(bool) ), SLOT(configureView()));
-+ if ( !_mixer->isDynamic() ) {
-+ QAction *action = _localActionColletion->addAction("toggle_channels");
-+ action->setText(i18n("&Channels"));
-+ connect(action, SIGNAL(triggered(bool) ), SLOT(configureView()));
-+ }
- connect ( _mixer, SIGNAL(controlChanged()), this, SLOT(refreshVolumeLevels()) );
- connect ( _mixer, SIGNAL(controlsReconfigured(const QString&)), this, SLOT(controlsReconfigured(const QString&)) );
- }
-@@ -95,7 +98,7 @@
-
- bool ViewBase::isValid() const
- {
-- return ( _mixSet->count() > 0 || _mixer->dynamic() );
-+ return ( _mixSet->count() > 0 || _mixer->isDynamic() );
- }
-
- void ViewBase::setIcons (bool on) { KMixToolBox::setIcons (_mdws, on ); }
-@@ -170,6 +173,8 @@
- {
- QAction *a;
-
-+ if ( _popMenu )
-+ delete _popMenu;
- _popMenu = new KMenu( this );
- _popMenu->addTitle( KIcon( QLatin1String( "kmix" ) ), i18n("Device Settings" ));
-
-@@ -222,44 +227,8 @@
-
- void ViewBase::setMixSet()
- {
-- if ( _mixer->dynamic()) {
-+ if ( _mixer->isDynamic() ) {
-
-- // Check the guiprofile... if it is not the fallback GUIProfile, then
-- // make sure that we add a specific entry for any devices not present.
-- if ( 0 != _guiprof && GUIProfile::fallbackProfile(_mixer) != _guiprof ) // TODO colin/cesken IMO calling GUIProfile::fallbackProfile(_mixer) is wrong, as it ALWAYS creates a new Object. fallbackProfile() would need to cache the created fallback profiles so this should make any sense.
-- {
-- kDebug(67100) << "Dynamic mixer " << _mixer->id() << " is NOT using Fallback GUIProfile. Checking to see if new controls are present";
--
-- QList<QString> new_mix_devices;
-- MixSet ms = _mixer->getMixSet();
-- for (int i=0; i < ms.count(); ++i)
-- {
-- new_mix_devices.append("^" + ms[i]->id() + "$");
-- kDebug(67100) << "new_mix_devices.append => " << ms[i]->id();
-- }
--
-- GUIProfile::ControlSet& ctlSet = _guiprof->getControls();
--
--// std::vector<ProfControl*>::const_iterator itEnd = _guiprof->_controls.end();
--// for ( std::vector<ProfControl*>::const_iterator it = _guiprof->_controls.begin(); it != itEnd; ++it)
--// new_mix_devices.removeAll((*it)->id);
-- // TODO Please check this change, Colin
-- foreach ( ProfControl* pctl, ctlSet ) {
-- new_mix_devices.removeAll(pctl->id);
-- }
--
--
-- if ( new_mix_devices.count() > 0 ) {
-- kDebug(67100) << "Found " << new_mix_devices.count() << " new controls. Adding to GUIProfile";
-- QString sctlMatchAll("*");
-- while ( new_mix_devices.count() > 0 ) {
-- QString new_mix_devices0 = new_mix_devices.takeAt(0);
-- ctlSet.push_back(new ProfControl(new_mix_devices0, sctlMatchAll));
-- }
-- _guiprof->setDirty();
-- }
-- }
--
- // We need to delete the current MixDeviceWidgets so we can redraw them
- while (!_mdws.isEmpty()) {
- QWidget* mdw = _mdws.last();
-@@ -280,6 +249,8 @@
- */
- void ViewBase::configureView() {
-
-+ Q_ASSERT( !_mixer->isDynamic() );
-+
- DialogViewConfiguration* dvc = new DialogViewConfiguration(0, *this);
- dvc->show();
- // !! The dialog is modal. Does it delete itself?
-@@ -302,6 +273,10 @@
- kDebug(67100) << "KMixToolBox::loadView() grp=" << grp.toAscii();
-
- static char guiComplexity[3][20] = { "simple", "extended", "all" };
-+
-+ // Certain bits are not saved for dynamic mixers (e.g. PulseAudio)
-+ bool dynamic = _mixer->isDynamic();
-+
- for ( int tries = 0; tries < 3; tries++ )
- {
- bool atLeastOneControlIsShown = false;
-@@ -315,12 +290,12 @@
- Workaround: If found, write back correct group name.
- */
- MixDeviceWidget* mdw = (MixDeviceWidget*)qmdw;
-- QString devgrp;
-- devgrp.sprintf( "%s.%s.%s", grp.toAscii().data(), mdw->mixDevice()->mixer()->id().toAscii().data(), mdw->mixDevice()->id().toAscii().data() );
-+ MixDevice* md = mdw->mixDevice();
-+
-+ QString devgrp = QString("%1.%2.%3").arg(grp).arg(md->mixer()->id()).arg(md->id());
- KConfigGroup devcg = config->group( devgrp );
-
-- QString buggyDevgrp;
-- buggyDevgrp.sprintf( "%s.%s.%s", grp.toAscii().data(), view->id().toAscii().data(), mdw->mixDevice()->id().toAscii().data() );
-+ QString buggyDevgrp = QString("%1.%2.%3").arg(grp).arg(view->id()).arg(md->id());
- KConfigGroup buggyDevgrpCG = config->group( buggyDevgrp );
- if ( buggyDevgrpCG.exists() ) {
- buggyDevgrpCG.copyTo(&devcg);
-@@ -335,7 +310,7 @@
- }
-
- bool mdwEnabled = false;
-- if ( devcg.hasKey("Show") )
-+ if ( !dynamic && devcg.hasKey("Show") )
- {
- mdwEnabled = ( true == devcg.readEntry("Show", true) );
- //kDebug() << "Load devgrp" << devgrp << "show=" << mdwEnabled;
-@@ -382,20 +357,23 @@
- QString grp = "View.";
- grp += view->id();
- // KConfigGroup cg = config->group( grp );
-- kDebug(67100) << "KMixToolBox::saveView() grp=" << grp.toAscii();
-+ kDebug(67100) << "KMixToolBox::saveView() grp=" << grp;
-
-+ // Certain bits are not saved for dynamic mixers (e.g. PulseAudio)
-+ bool dynamic = _mixer->isDynamic();
-+
- for (int i=0; i < view->_mdws.count(); ++i ){
- QWidget *qmdw = view->_mdws[i];
- if ( qmdw->inherits("MixDeviceWidget") )
- {
- MixDeviceWidget* mdw = (MixDeviceWidget*)qmdw;
-+ MixDevice* md = mdw->mixDevice();
-
- //kDebug(67100) << " grp=" << grp.toAscii();
- //kDebug(67100) << " mixer=" << view->id().toAscii();
- //kDebug(67100) << " mdwPK=" << mdw->mixDevice()->id().toAscii();
-
-- QString devgrp;
-- devgrp.sprintf( "%s.%s.%s", grp.toAscii().data(), mdw->mixDevice()->mixer()->id().toAscii().data(), mdw->mixDevice()->id().toAscii().data() );
-+ QString devgrp = QString("%1.%2.%3").arg(grp).arg(md->mixer()->id()).arg(md->id());
- KConfigGroup devcg = config->group( devgrp );
-
- if ( mdw->inherits("MDWSlider") )
-@@ -403,15 +381,19 @@
- // only sliders have the ability to split apart in mutliple channels
- devcg.writeEntry( "Split", ! mdw->isStereoLinked() );
- }
-- devcg.writeEntry( "Show" , mdw->isVisibleTo(view) );
--kDebug() << "Save devgrp" << devgrp << "show=" << mdw->isVisibleTo(view);
-+ if ( !dynamic ) {
-+ devcg.writeEntry( "Show" , mdw->isVisibleTo(view) );
-+ kDebug() << "Save devgrp" << devgrp << "show=" << mdw->isVisibleTo(view);
-+ }
-
- } // inherits MixDeviceWidget
- } // for all MDW's
-
-- kDebug(67100) << "GUIProfile is dirty: " << guiProfile()->isDirty();
-- if ( guiProfile()->isDirty() ) {
-- guiProfile()->writeProfile();
-+ if ( !dynamic ) {
-+ // We do not save GUIProfiles (as they cannot be customised) for dynamic mixers (e.g. PulseAudio)
-+ kDebug(67100) << "GUIProfile is dirty: " << guiProfile()->isDirty();
-+ if ( guiProfile()->isDirty() )
-+ guiProfile()->writeProfile();
- }
- }
-
-Index: kmix/gui/mdwslider.cpp
-===================================================================
---- kmix/gui/mdwslider.cpp (revision 1226957)
-+++ kmix/gui/mdwslider.cpp (revision 1226958)
-@@ -86,10 +86,14 @@
- KToggleAction *taction = _mdwActions->add<KToggleAction>( "stereo" );
- taction->setText( i18n("&Split Channels") );
- connect( taction, SIGNAL( triggered(bool) ), SLOT( toggleStereoLinked() ) );
-- KAction *action = _mdwActions->add<KToggleAction>( "hide" );
-- action->setText( i18n("&Hide") );
-- connect( action, SIGNAL( triggered(bool) ), SLOT( setDisabled() ) );
-
-+ KAction *action;
-+ if ( ! m_mixdevice->mixer()->isDynamic() ) {
-+ action = _mdwActions->add<KToggleAction>( "hide" );
-+ action->setText( i18n("&Hide") );
-+ connect( action, SIGNAL( triggered(bool) ), SLOT( setDisabled() ) );
-+ }
-+
- if( m_mixdevice->playbackVolume().hasSwitch() ) {
- taction = _mdwActions->add<KToggleAction>( "mute" );
- taction->setText( i18n("&Muted") );
-@@ -129,8 +133,8 @@
- #ifdef __GNUC__
- #warning GLOBAL SHORTCUTS ARE NOW ASSIGNED TO ALL CONTROLS, as enableGlobalShortcut(), has not been committed
- #endif
-- if ( ! mixDevice()->isEthereal() ) {
-- // virtual / ethereal controls won't get shortcuts
-+ if ( ! mixDevice()->mixer()->isDynamic() ) {
-+ // virtual / dynamic controls won't get shortcuts
- b->setGlobalShortcut(dummyShortcut); // -<- enableGlobalShortcut() is not there => use workaround
- // b->enableGlobalShortcut();
- connect( b, SIGNAL( triggered(bool) ), SLOT( increaseVolume() ) );
-@@ -143,8 +147,8 @@
- #ifdef __GNUC__
- #warning GLOBAL SHORTCUTS ARE NOW ASSIGNED TO ALL CONTROLS, as enableGlobalShortcut(), has not been committed
- #endif
-- if ( ! mixDevice()->isEthereal() ) {
-- // virtual / ethereal controls won't get shortcuts
-+ if ( ! mixDevice()->mixer()->isDynamic() ) {
-+ // virtual / dynamic controls won't get shortcuts
- b->setGlobalShortcut(dummyShortcut); // -<- enableGlobalShortcut() is not there => use workaround
- // b->enableGlobalShortcut();
- connect( b, SIGNAL( triggered(bool) ), SLOT( decreaseVolume() ) );
-@@ -157,8 +161,8 @@
- #ifdef __GNUC__
- #warning GLOBAL SHORTCUTS ARE NOW ASSIGNED TO ALL CONTROLS, as enableGlobalShortcut(), has not been committed
- #endif
-- if ( ! mixDevice()->isEthereal() ) {
-- // virtual / ethereal controls won't get shortcuts
-+ if ( ! mixDevice()->mixer()->isDynamic() ) {
-+ // virtual / dynamic controls won't get shortcuts
- b->setGlobalShortcut(dummyShortcut); // -<- enableGlobalShortcut() is not there => use workaround
- // b->enableGlobalShortcut();
- connect( b, SIGNAL( triggered(bool) ), SLOT( toggleMuted() ) );
-Index: kmix/gui/viewdockareapopup.h
-===================================================================
---- kmix/gui/viewdockareapopup.h (revision 1226957)
-+++ kmix/gui/viewdockareapopup.h (revision 1226958)
-@@ -24,7 +24,6 @@
- #include "viewbase.h"
-
- class QGridLayout;
--class QPushButton;
- class QWidget;
-
- class Mixer;
-@@ -48,8 +47,6 @@
-
- protected:
- KMixWindow *_dock;
-- //MixDevice *_dockDevice;
-- QPushButton *_showPanelBox;
-
- void wheelEvent ( QWheelEvent * e );
- virtual void _setMixSet();
-Index: kmix/gui/viewsliders.cpp
-===================================================================
---- kmix/gui/viewsliders.cpp (revision 1226957)
-+++ kmix/gui/viewsliders.cpp (revision 1226958)
-@@ -148,7 +148,7 @@
- {
- const MixSet& mixset = _mixer->getMixSet();
-
-- if ( _mixer->dynamic() ) {
-+ if ( _mixer->isDynamic() ) {
- // We will be recreating our sliders, so make sure we trash all the separators too.
- qDeleteAll(_separators);
- _separators.clear();
-Index: kmix/gui/guiprofile.cpp
-===================================================================
---- kmix/gui/guiprofile.cpp (revision 1226957)
-+++ kmix/gui/guiprofile.cpp (revision 1226958)
-@@ -158,8 +158,12 @@
- {
- GUIProfile* guiprof = 0;
-
-- if ( mixer == 0 || profileName.isEmpty() ) {
-+ if ( mixer == 0 || profileName.isEmpty() )
- return 0;
-+
-+ if ( mixer->isDynamic() ) {
-+ kDebug(67100) << "GUIProfile::find() Not loading GUIProfile for Dynamic Mixer (e.g. PulseAudio)";
-+ return 0;
- }
-
- QString requestedProfileName;
-Index: kmix/gui/viewbase.h
-===================================================================
---- kmix/gui/viewbase.h (revision 1226957)
-+++ kmix/gui/viewbase.h (revision 1226958)
-@@ -133,7 +133,7 @@
-
- ViewFlags _vflags;
- GUIProfile* _guiprof;
-- KActionCollection *_localActionColletion;
-+ KActionCollection *_localActionColletion;
-
- virtual void _setMixSet() = 0;
-
-Index: kmix/gui/viewdockareapopup.cpp
-===================================================================
---- kmix/gui/viewdockareapopup.cpp (revision 1226957)
-+++ kmix/gui/viewdockareapopup.cpp (revision 1226958)
-@@ -88,8 +88,8 @@
- {
- // kDebug(67100) << "ViewDockAreaPopup::setMixSet()\n";
-
-- if ( _mixer->dynamic() ) {
-- // Our _layoutMDW now should only contain spacer widgets from the QSpacerItems's in add() below.
-+ if ( _mixer->isDynamic() ) {
-+ // Our _layoutMDW now should only contain spacer widgets from the QSpacerItem's in add() below.
- // We need to trash those too otherwise all sliders gradually migrate away from the edge :p
- QLayoutItem *li;
- while ( ( li = _layoutMDW->takeAt(0) ) )
-@@ -114,9 +114,9 @@
- QString matchAllPlaybackAndTheCswitch("pvolume,pswitch,cswitch");
- ProfControl *pctl = new ProfControl( dummyMatchAll, matchAllPlaybackAndTheCswitch);
- MixDeviceWidget *mdw = new MDWSlider(
-- md, // only 1 device. This is actually _dockDevice
-+ md, // only 1 device.
- true, // Show Mute LED
-- false, // Show Record LED
-+ false, // Show Record LED
- false, // Small
- Qt::Vertical, // Direction: only 1 device, so doesn't matter
- this, // parent
-@@ -128,10 +128,10 @@
- _layoutMDW->addWidget( mdw, 0, 1 );
-
- // Add button to show main panel
-- _showPanelBox = new QPushButton( i18n("Mixer"), this );
-- _showPanelBox->setObjectName( QLatin1String("MixerPanel" ));
-- connect ( _showPanelBox, SIGNAL( clicked() ), SLOT( showPanelSlot() ) );
-- _layoutMDW->addWidget( _showPanelBox, 1, 0, 1, 3 );
-+ QPushButton *pb = new QPushButton( i18n("Mixer"), this );
-+ pb->setObjectName( QLatin1String("MixerPanel" ));
-+ connect ( pb, SIGNAL( clicked() ), SLOT( showPanelSlot() ) );
-+ _layoutMDW->addWidget( pb, 1, 0, 1, 3 );
-
- return mdw;
- }
-Index: kmix/core/mixdevice.h
-===================================================================
---- kmix/core/mixdevice.h (revision 1226957)
-+++ kmix/core/mixdevice.h (revision 1226958)
-@@ -157,15 +157,6 @@
- _artificial = artificial;
- }
-
-- bool isEthereal() const
-- {
-- return _ethereal;
-- }
-- void setEthereal(bool _ethereal)
-- {
-- this->_ethereal = _ethereal;
-- }
--
- void setControlProfile(ProfControl* control);
- ProfControl* controlProfile();
-
-@@ -191,14 +182,12 @@
- int _enumCurrentId;
- QList<QString> _enumValues; // A MixDevice, that is an ENUM, has these _enumValues
-
-- //bool _doNotRestore;
- // A virtual control. It will not be saved/restored and/or doesn't get shortcuts
-- // Actually we discriminate those "virtual" controls in artificial controls and ethereal controls:
-+ // Actually we discriminate those "virtual" controls in artificial controls and dynamic controls:
- // Type Shortcut Restore
- // Artificial: yes no Virtual::GlobalMaster or Virtual::CaptureGroup_3 (controls that are constructed artificially from other controls)
-- // Ethereal : no no Controls that come and go, like Pulse Stream controls
-+ // Dynamic : no no Controls that come and go, like Pulse Stream controls
- bool _artificial;
-- bool _ethereal;
- MixSet *_moveDestinationMixSet;
- QString _iconName;
-
-Index: kmix/core/mixer.cpp
-===================================================================
---- kmix/core/mixer.cpp (revision 1226957)
-+++ kmix/core/mixer.cpp (revision 1226958)
-@@ -748,7 +748,7 @@
- m_dynamic = dynamic;
- }
-
--bool Mixer::dynamic()
-+bool Mixer::isDynamic()
- {
- return m_dynamic;
- }
-Index: kmix/core/mixer.h
-===================================================================
---- kmix/core/mixer.h (revision 1226957)
-+++ kmix/core/mixer.h (revision 1226958)
-@@ -164,7 +164,7 @@
-
- /// Says if we are dynamic (e.g. widgets can come and go)
- virtual void setDynamic( bool dynamic = true );
-- virtual bool dynamic();
-+ virtual bool isDynamic();
-
- virtual bool moveStream( const QString id, const QString& destId );
-
-Index: kmix/core/mixdevice.cpp
-===================================================================
---- kmix/core/mixdevice.cpp (revision 1226957)
-+++ kmix/core/mixdevice.cpp (revision 1226958)
-@@ -23,6 +23,7 @@
- #include <klocale.h>
-
- #include "core/mixdevice.h"
-+#include "core/mixer.h"
- #include "gui/guiprofile.h"
- #include "core/volume.h"
-
-@@ -96,14 +97,12 @@
-
- MixDevice::MixDevice( Mixer* mixer, const QString& id, const QString& name, const QString& iconName, MixSet* moveDestinationMixSet )
- {
-- // doNotRestore is superseded by the more generic concepts isEthereal(), isArtificial()
- init(mixer, id, name, iconName, moveDestinationMixSet);
- }
-
- void MixDevice::init( Mixer* mixer, const QString& id, const QString& name, const QString& iconName, MixSet* moveDestinationMixSet )
- {
- _artificial = false;
-- _ethereal = false;
- _mixer = mixer;
- _id = id;
- if( name.isEmpty() )
-@@ -117,9 +116,10 @@
- _moveDestinationMixSet = moveDestinationMixSet;
- if ( _id.contains(' ') ) {
- // The key is used in the config file. It MUST NOT contain spaces
-- kError(67100) << "MixDevice::setId(\"" << id << "\") . Invalid key - it might not contain spaces" << endl;
-+ kError(67100) << "MixDevice::setId(\"" << id << "\") . Invalid key - it must not contain spaces" << endl;
- _id.replace(' ', '_');
- }
-+ kDebug(67100) << "MixDevice::init() _id=" << _id;
- }
-
- void MixDevice::addPlaybackVolume(Volume &playbackVol)
-@@ -216,11 +216,10 @@
- */
- void MixDevice::read( KConfig *config, const QString& grp )
- {
-- if ( isEthereal() || isArtificial() ) {
-+ if ( _mixer->isDynamic() || isArtificial() ) {
- kDebug(67100) << "MixDevice::read(): This MixDevice does not permit volume restoration (i.e. because it is handled lower down in the audio stack). Ignoring.";
- } else {
-- QString devgrp;
-- devgrp.sprintf( "%s.Dev%s", grp.toAscii().data(), _id.toAscii().data() );
-+ QString devgrp = QString("%1.Dev%2").arg(grp).arg(_id);
- KConfigGroup cg = config->group( devgrp );
- //kDebug(67100) << "MixDevice::read() of group devgrp=" << devgrp;
-
-@@ -264,11 +263,10 @@
- */
- void MixDevice::write( KConfig *config, const QString& grp )
- {
-- if (isEthereal() || isArtificial()) {
-+ if (_mixer->isDynamic() || isArtificial()) {
- kDebug(67100) << "MixDevice::write(): This MixDevice does not permit volume saving (i.e. because it is handled lower down in the audio stack). Ignoring.";
- } else {
-- QString devgrp;
-- devgrp.sprintf( "%s.Dev%s", grp.toAscii().data(), _id.toAscii().data() );
-+ QString devgrp = QString("%1.Dev%2").arg(grp).arg(_id);
- KConfigGroup cg = config->group(devgrp);
- // kDebug(67100) << "MixDevice::write() of group devgrp=" << devgrp;
-
-Index: kmix/apps/kmix.cpp
-===================================================================
---- kmix/apps/kmix.cpp (revision 1226957)
-+++ kmix/apps/kmix.cpp (revision 1226958)
-@@ -182,21 +182,20 @@
-
- void KMixWindow::initActionsAfterInitMixer()
- {
-- bool isPulseAudio = false;
-- // Add "launch_pavucontrol" to menu, if Pulseaudio backend is in use
-+ // Only show the new tab widget if some of the mixers are not Dynamic.
-+ // The GUI that then pops up could then make a new mixer from a dynamic one,
-+ // if mixed dynamic and non-dynamic mixers were allowed, but this is generally not the case.
-+ bool allDynamic = true;
- foreach( Mixer* mixer, Mixer::mixers() )
- {
-- if ( mixer->getDriverName() == "PulseAudio")
-+ if ( !mixer->isDynamic() )
- {
-- isPulseAudio = true;
-- KAction* action = actionCollection()->addAction( "launch_pavucontrol" );
-- action->setText( i18n( "Audio setup (&Pulseaudio)" ) );
-- connect(action, SIGNAL(triggered(bool) ), SLOT( slotPavucontrolExec() ));
-+ allDynamic = false;
- break;
- }
- }
-
-- if (! isPulseAudio )
-+ if (! allDynamic )
- {
- QPixmap cornerNewPM = KIconLoader::global()->loadIcon( "tab-new", KIconLoader::Toolbar, KIconLoader::SizeSmall );
- QPushButton* _cornerLabelNew = new QPushButton();
-@@ -339,8 +338,11 @@
-
- // The following loop is necessary for the case that the user has hidden all views for a Mixer instance.
- // Otherwise we would not save the Meta information (step -2- below for that mixer.
-- foreach ( Mixer* mixer, Mixer::mixers() )
-- mixerViews[mixer->id()]; // just insert a map entry
-+ // We also do not save dynamic mixers (e.g. PulseAudio)
-+ foreach ( Mixer* mixer, Mixer::mixers() ) {
-+ if ( !mixer->isDynamic() )
-+ mixerViews[mixer->id()]; // just insert a map entry
-+ }
-
- // -1- Save the views themselves
- for ( int i=0; i<m_wsMixers->count() ; ++i ) {
-@@ -351,8 +353,10 @@
- // Otherwise the user will be confused afer re-plugging the card (as the config was not saved).
- mw->saveConfig( KGlobal::config().data() );
- // add the view to the corresponding mixer list, so we can save a views-per-mixer list below
-- QStringList& qsl = mixerViews[mw->mixer()->id()];
-- qsl.append(mw->getGuiprof()->getId());
-+ if ( !mw->mixer()->isDynamic() ) {
-+ QStringList& qsl = mixerViews[mw->mixer()->id()];
-+ qsl.append(mw->getGuiprof()->getId());
-+ }
- }
- }
-
-@@ -539,22 +543,29 @@
- continue; // OK, this mixer already has a profile => skip it
- }
- // No TAB YET => This should mean KMix is just started, or the user has just plugged in a card
-- bool profileListHasKey = pconfig.hasKey( mixer->id() ); // <<< SHOULD be before the following line
-- QStringList profileList = pconfig.readEntry( mixer->id(), QStringList() );
-+ bool profileListHasKey = false;
-+ QStringList profileList;
-+ bool aProfileWasAddedSucesufully = false;
-
-- bool aProfileWasAddedSucesufully = false;
-- foreach ( QString profileId, profileList)
-- {
-- // This handles the profileList form the kmixrc
-- kDebug() << "Now searching for profile: " << profileId ;
-- GUIProfile* guiprof = GUIProfile::find(mixer, profileId, true, false); // ### Card specific profile ###
-- if ( guiprof != 0 ) {
-- addMixerWidget(mixer->id(), guiprof, -1);
-- aProfileWasAddedSucesufully = true;
-+ if ( !mixer->isDynamic() ) {
-+ // We do not support save profiles for dynamic mixers (i.e. PulseAudio)
-+
-+ profileListHasKey = pconfig.hasKey( mixer->id() ); // <<< SHOULD be before the following line
-+ profileList = pconfig.readEntry( mixer->id(), QStringList() );
-+
-+ foreach ( QString profileId, profileList)
-+ {
-+ // This handles the profileList form the kmixrc
-+ kDebug() << "Now searching for profile: " << profileId ;
-+ GUIProfile* guiprof = GUIProfile::find(mixer, profileId, true, false); // ### Card specific profile ###
-+ if ( guiprof != 0 ) {
-+ addMixerWidget(mixer->id(), guiprof, -1);
-+ aProfileWasAddedSucesufully = true;
-+ }
-+ else {
-+ kError() << "Cannot load profile " << profileId << " . It was removed by the user, or the KMix config file is defective.";
-+ }
- }
-- else {
-- kError() << "Cannot load profile " << profileId << " . It was removed by the user, or the KMix config file is defective.";
-- }
- }
-
- // The we_need_a_fallback case is a bit tricky. Please ask the author (cesken) before even considering to change the code.
-@@ -568,11 +579,17 @@
-
- // Lets try a bunch of fallback strategies:
- GUIProfile* guiprof = 0;
-+ if ( !mixer->isDynamic() ) {
-+ // We know that GUIProfile::find() will return 0 if the mixer is dynamic, so don't bother checking.
-+ kDebug() << "Attempting to find a card-specific GUI Profile for the mixer " << mixer->id();
- guiprof = GUIProfile::find(mixer, QString("default"), false, false); // ### Card specific profile ###
-- if ( guiprof == 0 ) {
-- guiprof = GUIProfile::find(mixer, QString("default"), false, true); // ### Card unspecific profile ###
-+ if ( guiprof == 0 ) {
-+ kDebug() << "Not found. Attempting to find a generic GUI Profile for the mixer " << mixer->id();
-+ guiprof = GUIProfile::find(mixer, QString("default"), false, true); // ### Card unspecific profile ###
-+ }
- }
- if ( guiprof == 0) {
-+ kDebug() << "Using fallback GUI Profile for the mixer " << mixer->id();
- // This means there is neither card specific nor card unspecific profile
- // This is the case for some backends (as they don't ship profiles).
- guiprof = GUIProfile::fallbackProfile(mixer);
-@@ -683,8 +700,7 @@
- m_wsMixers->removeTab(idx);
- delete kmw;
-
-- bool isPulseAudio = kmw->mixer()->getDriverName() == "PulseAudio";
-- m_wsMixers->setTabsClosable(!isPulseAudio && m_wsMixers->count() > 1);
-+ m_wsMixers->setTabsClosable(!kmw->mixer()->isDynamic() && m_wsMixers->count() > 1);
-
- saveViewConfig();
- }
-@@ -882,8 +898,7 @@
- m_wsMixers->setCurrentWidget(kmw);
- }
-
-- bool isPulseAudio = mixer->getDriverName() == "PulseAudio";
-- m_wsMixers->setTabsClosable(!isPulseAudio && m_wsMixers->count() > 1);
-+ m_wsMixers->setTabsClosable(!mixer->isDynamic() && m_wsMixers->count() > 1);
- m_dontSetDefaultCardOnStart = false;
-
-
-@@ -1071,12 +1086,6 @@
- KMessageBox::information( 0, m_hwInfoString, i18n("Mixer Hardware Information") );
- }
-
--void KMixWindow::slotPavucontrolExec()
--{
-- QStringList args("pavucontrol");
-- forkExec(args);
--}
--
- void KMixWindow::slotKdeAudioSetupExec()
- {
- QStringList args;
-@@ -1133,6 +1142,12 @@
- m_defaultCardOnStart = kmw->getGuiprof()->getId();
- // As switching the tab does NOT mean switching the master card, we do not need to update dock icon here.
- // It would lead to unnecesary flickering of the (complete) dock area.
-+
-+ // We only show the "Configure Channels..." menu item if the mixer is not dynamic
-+ ViewBase* view = kmw->currentView();
-+ QAction* action = actionCollection()->action( "toggle_channels_currentview" );
-+ if (view && action)
-+ action->setVisible( !view->getMixer()->isDynamic() );
- }
- }
-
-Index: kmix/apps/kmix.h
-===================================================================
---- kmix/apps/kmix.h (revision 1226957)
-+++ kmix/apps/kmix.h (revision 1226958)
-@@ -136,7 +136,6 @@
- private slots:
- void saveConfig();
- void slotHWInfo();
-- void slotPavucontrolExec();
- void slotKdeAudioSetupExec();
- void slotConfigureCurrentView();
- void slotSelectMaster();
-Index: kmix/kmixui.rc
-===================================================================
---- kmix/kmixui.rc (revision 1226957)
-+++ kmix/kmixui.rc (revision 1226958)
-@@ -17,7 +17,6 @@
- <Action name="toggle_channels_currentview" append="save_merge"/>
- <Action name="select_master" append="save_merge"/>
- <Action name="launch_kdesoundsetup" append="save_merge"/>
-- <Action name="launch_pavucontrol" append="save_merge"/>
- </Menu>
- <Menu name="help" append="about_merge"><text>&amp;Help</text>
- <Action name="hwinfo"/>
-Index: kmix/backends/mixer_backend.cpp
-===================================================================
---- kmix/backends/mixer_backend.cpp (revision 1226957)
-+++ kmix/backends/mixer_backend.cpp (revision 1226958)
-@@ -48,7 +48,7 @@
- bool Mixer_Backend::openIfValid() {
- bool valid = false;
- int ret = open();
-- if ( ret == 0 && (m_mixDevices.count() > 0 || _mixer->dynamic())) {
-+ if ( ret == 0 && (m_mixDevices.count() > 0 || _mixer->isDynamic())) {
- valid = true;
- // A better ID is now calculated in mixertoolbox.cpp, and set via setID(),
- // but we want a somehow usable fallback just in case.
-@@ -139,7 +139,7 @@
- return m_mixDevices.at(0); // Backend has NOT set a recommended master. Evil backend => lets help out.
- } //first device (if exists)
- else {
-- if ( !_mixer->dynamic()) {
-+ if ( !_mixer->isDynamic()) {
- // This should never ever happen, as KMix doe NOT accept soundcards without controls
- kError(67100) << "Mixer_Backend::recommendedMaster(): returning invalid master. This is a bug in KMix. Please file a bug report stating how you produced this." << endl;
- }
-Index: kmix/backends/mixer_pulse.cpp
-===================================================================
---- kmix/backends/mixer_pulse.cpp (revision 1226957)
-+++ kmix/backends/mixer_pulse.cpp (revision 1226958)
-@@ -36,6 +36,8 @@
- #define KMIXPA_APP_CAPTURE 3
- #define KMIXPA_WIDGET_MAX KMIXPA_APP_CAPTURE
-
-+#define KMIXPA_EVENT_KEY "sink-input-by-media-role:event"
-+
- static unsigned int refcount = 0;
- static pa_glib_mainloop *s_mainloop = NULL;
- static pa_context *s_context = NULL;
-@@ -189,7 +191,7 @@
-
- devinfo s;
- s.index = s.device_index = i->index;
-- s.name = QString(i->name).replace(' ', '_');
-+ s.name = QString::fromUtf8(i->name).replace(' ', '_');
- s.description = QString::fromUtf8(i->description);
- s.icon_name = QString::fromUtf8(pa_proplist_gets(i->proplist, PA_PROP_DEVICE_ICON_NAME));
- s.volume = i->volume;
-@@ -242,7 +244,7 @@
-
- devinfo s;
- s.index = s.device_index = i->index;
-- s.name = QString(i->name).replace(' ', '_');
-+ s.name = QString::fromUtf8(i->name).replace(' ', '_');
- s.description = QString::fromUtf8(i->description);
- s.icon_name = QString::fromUtf8(pa_proplist_gets(i->proplist, PA_PROP_DEVICE_ICON_NAME));
- s.volume = i->volume;
-@@ -307,26 +309,28 @@
-
- const char *t;
- if ((t = pa_proplist_gets(i->proplist, "module-stream-restore.id"))) {
-- if (strcmp(t, "sink-input-by-media-role:event") == 0) {
-+ if (strcmp(t, KMIXPA_EVENT_KEY) == 0) {
- kWarning(67100) << "Ignoring sink-input due to it being designated as an event and thus handled by the Event slider";
- return;
- }
- }
-
-- QString prefix = QString("%1: ").arg(i18n("Unknown Application"));
-+ QString appname = i18n("Unknown Application");
- if (clients.contains(i->client))
-- prefix = QString("%1: ").arg(clients[i->client]);
-+ appname = clients[i->client];
-
-+ QString prefix = QString("%1: ").arg(appname);
-+
- devinfo s;
- s.index = i->index;
- s.device_index = i->sink;
- s.description = prefix + QString::fromUtf8(i->name);
-- s.name = QString("stream:") + i->index;
-+ s.name = QString("stream:") + QString::number(i->index); //appname.replace(' ', '_').toLower();
- s.icon_name = getIconNameFromProplist(i->proplist);
- s.volume = i->volume;
- s.channel_map = i->channel_map;
- s.mute = !!i->mute;
-- s.stream_restore_rule = t;
-+ s.stream_restore_rule = QString::fromUtf8(t);
-
- translateMasksAndMaps(s);
-
-@@ -370,22 +374,24 @@
- return;
- }
-
-- QString prefix = QString("%1: ").arg(i18n("Unknown Application"));
-+ QString appname = i18n("Unknown Application");
- if (clients.contains(i->client))
-- prefix = QString("%1: ").arg(clients[i->client]);
-+ appname = clients[i->client];
-
-+ QString prefix = QString("%1: ").arg(appname);
-+
- devinfo s;
- s.index = i->index;
- s.device_index = i->source;
- s.description = prefix + QString::fromUtf8(i->name);
-- s.name = QString("stream:") + i->index;
-+ s.name = QString("stream:") + QString::number(i->index); //appname.replace(' ', '_').toLower();
- s.icon_name = getIconNameFromProplist(i->proplist);
- //s.volume = i->volume;
- s.volume = captureDevices[i->source].volume;
- s.channel_map = i->channel_map;
- //s.mute = !!i->mute;
- s.mute = captureDevices[i->source].mute;
-- s.stream_restore_rule = pa_proplist_gets(i->proplist, "module-stream-restore.id");
-+ s.stream_restore_rule = QString::fromUtf8(pa_proplist_gets(i->proplist, "module-stream-restore.id"));
-
- translateMasksAndMaps(s);
-
-@@ -407,7 +413,7 @@
- }
-
-
--static devinfo create_role_devinfo(const char* name) {
-+static devinfo create_role_devinfo(QString name) {
-
- Q_ASSERT(s_RestoreRules.contains(name));
-
-@@ -436,9 +442,10 @@
-
- if (eol > 0) {
- dec_outstanding(c);
-+
- // Special case: ensure that our media events exists.
- // On first login by a new users, this wont be in our database so we should create it.
-- if (!outputRoles.contains(PA_INVALID_INDEX)) {
-+ if (!s_RestoreRules.contains(KMIXPA_EVENT_KEY)) {
- // Create a fake rule
- restoreRule rule;
- rule.channel_map.channels = 1;
-@@ -447,37 +454,56 @@
- rule.volume.values[0] = PA_VOLUME_NORM;
- rule.mute = false;
- rule.device = "";
-- s_RestoreRules["sink-input-by-media-role:event"] = rule;
-+ s_RestoreRules[KMIXPA_EVENT_KEY] = rule;
-+ kDebug(67100) << "Initialising restore rule for new user: " << i18n("Event Sounds");
-+ }
-
-- devinfo s = create_role_devinfo("sink-input-by-media-role:event");
-- outputRoles[s.index] = s;
-- kDebug(67100) << "Initialising restore rule for new user: " << s.description;
-+ if (s_mixers.contains(KMIXPA_APP_PLAYBACK)) {
-+ // If we have rules, it will be created below... but if no rules
-+ // then we add it here.
-+ if (!outputRoles.contains(PA_INVALID_INDEX)) {
-+ devinfo s = create_role_devinfo(KMIXPA_EVENT_KEY);
-+ outputRoles[s.index] = s;
-
-- if (s_mixers.contains(KMIXPA_APP_PLAYBACK))
- s_mixers[KMIXPA_APP_PLAYBACK]->addWidget(s.index);
-+ }
-+
-+ s_mixers[KMIXPA_APP_PLAYBACK]->triggerUpdate();
- }
-
-- if (s_mixers.contains(KMIXPA_APP_PLAYBACK))
-- s_mixers[KMIXPA_APP_PLAYBACK]->triggerUpdate();
- return;
- }
-
-- kDebug(67100) << "Got some info about restore rule: " << i->name << i->device;
-+
-+ QString name = QString::fromUtf8(i->name);
-+ kDebug(67100) << QString("Got some info about restore rule: '%1' (Device: %2)").arg(name).arg(i->device ? i->device : "None");
- restoreRule rule;
- rule.channel_map = i->channel_map;
- rule.volume = i->volume;
- rule.mute = !!i->mute;
- rule.device = i->device;
-- s_RestoreRules[i->name] = rule;
-
-- // We only want to know about Sound Events for now...
-- if (strcmp(i->name, "sink-input-by-media-role:event") == 0) {
-- devinfo s = create_role_devinfo(i->name);
-- bool is_new = !outputRoles.contains(s.index);
-- outputRoles[s.index] = s;
-+ if (rule.channel_map.channels < 1 && name == KMIXPA_EVENT_KEY) {
-+ // Stream restore rules may not have valid volumes/channel maps (as these are optional)
-+ // but we need a valid volume+channelmap for our events sounds so fix it up.
-+ rule.channel_map.channels = 1;
-+ rule.channel_map.map[0] = PA_CHANNEL_POSITION_MONO;
-+ rule.volume.channels = 1;
-+ rule.volume.values[0] = PA_VOLUME_NORM;
-+ }
-
-- if (is_new && s_mixers.contains(KMIXPA_APP_PLAYBACK))
-- s_mixers[KMIXPA_APP_PLAYBACK]->addWidget(s.index);
-+ s_RestoreRules[name] = rule;
-+
-+ if (s_mixers.contains(KMIXPA_APP_PLAYBACK)) {
-+ // We only want to know about Sound Events for now...
-+ if (name == KMIXPA_EVENT_KEY) {
-+ devinfo s = create_role_devinfo(name);
-+ bool is_new = !outputRoles.contains(s.index);
-+ outputRoles[s.index] = s;
-+
-+ if (is_new)
-+ s_mixers[KMIXPA_APP_PLAYBACK]->addWidget(s.index);
-+ }
- }
- }
-
-@@ -788,7 +814,6 @@
- Volume v(dev.chanMask, PA_VOLUME_NORM, PA_VOLUME_MUTED, true, false);
- setVolumeFromPulse(v, dev);
- MixDevice* md = new MixDevice( _mixer, dev.name, dev.description, dev.icon_name, ms);
-- md->setEthereal(true);
- md->addPlaybackVolume(v);
- md->setMuted(dev.mute);
- m_mixDevices.append(md);
-@@ -1095,10 +1120,10 @@
- {
- restoreRule &rule = s_RestoreRules[iter->stream_restore_rule];
- pa_ext_stream_restore_info info;
-- info.name = iter->stream_restore_rule.toAscii().constData();
-+ info.name = iter->stream_restore_rule.toUtf8().constData();
- info.channel_map = rule.channel_map;
- info.volume = genVolumeForPulse(*iter, md->playbackVolume());
-- info.device = rule.device.isEmpty() ? NULL : rule.device.toAscii().constData();
-+ info.device = rule.device.isEmpty() ? NULL : rule.device.toUtf8().constData();
- info.mute = (md->isMuted() ? 1 : 0);
-
- pa_operation* o;
-@@ -1153,13 +1178,13 @@
-
- // Lookup the stream index.
- uint32_t stream_index = PA_INVALID_INDEX;
-- const char* stream_restore_rule = NULL;
-+ QString stream_restore_rule = "";
- devmap::iterator iter;
- devmap *map = get_widget_map(m_devnum);
- for (iter = map->begin(); iter != map->end(); ++iter) {
- if (iter->name == id) {
- stream_index = iter->index;
-- stream_restore_rule = iter->stream_restore_rule.isEmpty() ? NULL : iter->stream_restore_rule.toAscii().constData();
-+ stream_restore_rule = iter->stream_restore_rule;
- break;
- }
- }
-@@ -1171,12 +1196,12 @@
-
- if (destId.isEmpty()) {
- // We want to remove any specific device in the stream restore rule.
-- if (!stream_restore_rule || !s_RestoreRules.contains(stream_restore_rule)) {
-+ if (stream_restore_rule.isEmpty() || !s_RestoreRules.contains(stream_restore_rule)) {
- kWarning(67100) << "Mixer_PULSE::moveStream(): Trying to set Automatic on a stream with no rule";
- } else {
- restoreRule &rule = s_RestoreRules[stream_restore_rule];
- pa_ext_stream_restore_info info;
-- info.name = stream_restore_rule;
-+ info.name = stream_restore_rule.toUtf8().constData();
- info.channel_map = rule.channel_map;
- info.volume = rule.volume;
- info.device = NULL;
-@@ -1192,12 +1217,12 @@
- } else {
- pa_operation* o;
- if (KMIXPA_APP_PLAYBACK == m_devnum) {
-- if (!(o = pa_context_move_sink_input_by_name(s_context, stream_index, destId.toAscii().constData(), NULL, NULL))) {
-+ if (!(o = pa_context_move_sink_input_by_name(s_context, stream_index, destId.toUtf8().constData(), NULL, NULL))) {
- kWarning(67100) << "pa_context_move_sink_input_by_name() failed";
- return false;
- }
- } else {
-- if (!(o = pa_context_move_source_output_by_name(s_context, stream_index, destId.toAscii().constData(), NULL, NULL))) {
-+ if (!(o = pa_context_move_source_output_by_name(s_context, stream_index, destId.toUtf8().constData(), NULL, NULL))) {
- kWarning(67100) << "pa_context_move_source_output_by_name() failed";
- return false;
- }
diff --git a/extra/keytouch-editor/ChangeLog b/extra/keytouch-editor/ChangeLog
deleted file mode 100644
index 0503eb1f7..000000000
--- a/extra/keytouch-editor/ChangeLog
+++ /dev/null
@@ -1,8 +0,0 @@
-2008-06-22 Eric Belanger <eric@archlinux.org>
-
- * keytouch-editor 3.1.3-1
- * Patched for glibc 2.8
- * Added to [extra] repo
- * Added ChangeLog
-
-
diff --git a/extra/kobodeluxe/ChangeLog b/extra/kobodeluxe/ChangeLog
deleted file mode 100644
index 08b4c2dec..000000000
--- a/extra/kobodeluxe/ChangeLog
+++ /dev/null
@@ -1,8 +0,0 @@
-2009-01-06 Eric Belanger <eric@archlinux.org>
-
- * kobodeluxe 0.5.1-2
- * Fixed build issue
- * Added game group support
- * Added .desktop file and icons
- * Improved package description
- * Added ChangeLog
diff --git a/extra/kobodeluxe/PKGBUILD b/extra/kobodeluxe/PKGBUILD
index be6f139a3..8a52ce946 100644
--- a/extra/kobodeluxe/PKGBUILD
+++ b/extra/kobodeluxe/PKGBUILD
@@ -1,44 +1,50 @@
-# $Id: PKGBUILD 23389 2009-01-09 00:47:54Z eric $
-# Maintainer: Eric Belanger <eric@archlinux.org>
-# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# $Id: PKGBUILD 122903 2011-05-07 08:05:30Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=kobodeluxe
pkgver=0.5.1
-pkgrel=2
+pkgrel=3
pkgdesc="An enhanced version of Akira Higuchi's game XKobo, an addictive space shoot'em up"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.olofson.net/kobodl/"
license=('GPL' 'LGPL')
-depends=('gcc-libs' 'libjpeg' 'libpng' 'sdl' 'sdl_image' 'sdl_mixer')
+depends=('libjpeg' 'libpng' 'sdl_image' 'hicolor-icon-theme' 'gtk-update-icon-cache')
install=kobodeluxe.install
-source=(http://www.olofson.net/kobodl/download/KoboDeluxe-${pkgver}.tar.gz kobodeluxe-gcc-4.3.patch)
-md5sums=('cf765559461213d651c7be042507b767' '2b76306ec997fdc64986b4425e5b7814')
-sha1sums=('12abe182ccde52050cd23077092d0424d25c3e75' '274dc8e7909bc6f9fab31306c85d992af8b62674')
+source=(http://www.olofson.net/kobodl/download/KoboDeluxe-${pkgver}.tar.gz \
+ kobodeluxe-gcc-4.3.patch kobodeluxe-0.5.1-glibc2.10.patch)
+md5sums=('cf765559461213d651c7be042507b767'
+ '2b76306ec997fdc64986b4425e5b7814'
+ '56115c9a1e3db1b95b731fdcb11f3f4f')
+sha1sums=('12abe182ccde52050cd23077092d0424d25c3e75'
+ '274dc8e7909bc6f9fab31306c85d992af8b62674'
+ '9d1b3b8cef4a16b6a082fed9f93f1dc12b2a3be0')
build() {
- cd ${srcdir}/KoboDeluxe-${pkgver}
+ cd "${srcdir}/KoboDeluxe-${pkgver}"
patch -p0 < ../kobodeluxe-gcc-4.3.patch
- ./configure --prefix=/usr --localstatedir=/var --sharedstatedir=/var/games || return 1
- make || return 1
- make DESTDIR=${pkgdir} install || return 1
+ patch -p0 < ../kobodeluxe-0.5.1-glibc2.10.patch
+ ./configure --prefix=/usr --localstatedir=/var --sharedstatedir=/var/games
+ make
+}
+
+package() {
+ cd "${srcdir}/KoboDeluxe-${pkgver}"
+ make DESTDIR="${pkgdir}" install
tar -xzf icons.tar.gz
- install -D -m644 icons/KDE/kobo-deluxe.desktop ${pkgdir}/usr/share/applications/kobo-deluxe.desktop
- install -D -m644 icons/KDE/icons/128x128/kobodl.png ${pkgdir}/usr/share/icons/hicolor/128x128/kobodl.png
- install -D -m644 icons/KDE/icons/16x16/kobodl.png ${pkgdir}/usr/share/icons/hicolor/16x16/kobodl.png
- install -D -m644 icons/KDE/icons/22x22/kobodl.png ${pkgdir}/usr/share/icons/hicolor/22x22/kobodl.png
- install -D -m644 icons/KDE/icons/32x32/kobodl.png ${pkgdir}/usr/share/icons/hicolor/32x32/kobodl.png
- install -D -m644 icons/KDE/icons/48x48/kobodl.png ${pkgdir}/usr/share/icons/hicolor/48x48/kobodl.png
- install -D -m644 icons/KDE/icons/64x64/kobodl.png ${pkgdir}/usr/share/icons/hicolor/64x64/kobodl.png
- install -D -m644 icons/Ubuntu/kobo-icon.xpm ${pkgdir}/usr/share/pixmaps/kobo-icon.xpm
- ln -s /usr/share/icons/hicolor/48x48/kobodl.png ${pkgdir}/usr/share/icons/kobodl.png
+ install -D -m644 icons/KDE/kobo-deluxe.desktop "${pkgdir}/usr/share/applications/kobo-deluxe.desktop"
+ for i in 16 22 32 48 64 128 ; do
+ install -D -m644 icons/KDE/icons/${i}x${i}/kobodl.png "${pkgdir}/usr/share/icons/hicolor/${i}x${i}/kobodl.png"
+ done
+ install -D -m644 icons/Ubuntu/kobo-icon.xpm "${pkgdir}/usr/share/pixmaps/kobo-icon.xpm"
+ ln -s /usr/share/icons/hicolor/48x48/kobodl.png "${pkgdir}/usr/share/icons/kobodl.png"
- chown root:games ${pkgdir}/usr/bin/kobodl
- chmod 2755 ${pkgdir}/usr/bin/kobodl
- chown root:games ${pkgdir}/var/games
- chmod 775 ${pkgdir}/var/games
- chown root:games ${pkgdir}/var/games/kobo-deluxe
- chmod 775 ${pkgdir}/var/games/kobo-deluxe
- chown root:games ${pkgdir}/var/games/kobo-deluxe/scores
- chmod 775 ${pkgdir}/var/games/kobo-deluxe/scores
+ chown root:games "${pkgdir}/usr/bin/kobodl"
+ chmod 2755 "${pkgdir}/usr/bin/kobodl"
+ chown root:games "${pkgdir}/var/games"
+ chmod 775 "${pkgdir}/var/games"
+ chown root:games "${pkgdir}/var/games/kobo-deluxe"
+ chmod 775 "${pkgdir}/var/games/kobo-deluxe"
+ chown root:games "${pkgdir}/var/games/kobo-deluxe/scores"
+ chmod 775 "${pkgdir}/var/games/kobo-deluxe/scores"
}
diff --git a/extra/kobodeluxe/kobodeluxe-0.5.1-glibc2.10.patch b/extra/kobodeluxe/kobodeluxe-0.5.1-glibc2.10.patch
new file mode 100644
index 000000000..1095cc1c7
--- /dev/null
+++ b/extra/kobodeluxe/kobodeluxe-0.5.1-glibc2.10.patch
@@ -0,0 +1,11 @@
+--- graphics/window.cpp
++++ graphics/window.cpp
+@@ -398,7 +398,7 @@
+ */
+ if(token)
+ {
+- char *tok = strchr(txt, token);
++ const char *tok = strchr(txt, token);
+ if(tok)
+ tokpos = tok-txt;
+ else
diff --git a/extra/kobodeluxe/kobodeluxe.install b/extra/kobodeluxe/kobodeluxe.install
index 7136b4880..54b9f81f6 100644
--- a/extra/kobodeluxe/kobodeluxe.install
+++ b/extra/kobodeluxe/kobodeluxe.install
@@ -4,18 +4,17 @@ post_install() {
post_upgrade() {
if [ -d usr/share/kobo-deluxe/kobo-deluxe/scores ] ; then
+ mkdir -p var/games/kobo-deluxe/scores/
for i in usr/share/kobo-deluxe/kobo-deluxe/scores/* ; do
mv $i var/games/kobo-deluxe/scores/
done
rmdir usr/share/kobo-deluxe/kobo-deluxe/scores
rmdir usr/share/kobo-deluxe/kobo-deluxe
- chgrp -R games /var/games/kobo-deluxe/scores/
+ chgrp -R games var/games/kobo-deluxe/scores/
fi
- # update icon cache if gtk2 is installed. I don't want to add a gtk2 depends just for that.
- [ -x usr/bin/gtk-update-icon-cache ] && gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
}
post_remove() {
- # update icon cache if gtk2 is installed. I don't want to add a gtk2 depends just for that.
- [ -x usr/bin/gtk-update-icon-cache ] && gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
}
diff --git a/extra/libgda/PKGBUILD b/extra/libgda/PKGBUILD
index c24e4d6fb..41b3a0f71 100644
--- a/extra/libgda/PKGBUILD
+++ b/extra/libgda/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 120419 2011-04-23 21:33:28Z ibiru $
+# $Id: PKGBUILD 123051 2011-05-07 19:17:52Z ibiru $
# Maintainer: tobias <tobias@archlinux.org>
# Contributor: Tobias Kieslich <tobias@justdreams.de>
pkgname=libgda
-pkgver=4.2.6
+pkgver=4.2.7
pkgrel=1
pkgdesc="Data abstraction layer with mysql, pgsql, xml, sqlite providers"
arch=(i686 x86_64 'mips64el')
@@ -16,7 +16,7 @@ options=('!libtool')
url="http://www.gnome-db.org"
install=libgda.install
source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('141259e19ba163500963bd5bd512cfa4eb542b24c99f2fa14a2ef27643308cd3')
+sha256sums=('0c95d2ae4563bbb024c9179a20e95a4b544a7d4fc687ca79ac6b33c5adc113d5')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/extra/libsamplerate/PKGBUILD b/extra/libsamplerate/PKGBUILD
index 9f36b38ff..b5435f7c0 100644
--- a/extra/libsamplerate/PKGBUILD
+++ b/extra/libsamplerate/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 100370 2010-11-23 01:14:32Z eric $
-# Maintainer: Eric Belanger <eric@archlinux.org>
+# $Id: PKGBUILD 123061 2011-05-07 21:22:40Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=libsamplerate
pkgver=0.1.7
-pkgrel=1
+pkgrel=2
pkgdesc="Secret Rabbit Code - aka Sample Rate Converter for audio"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.mega-nerd.com/SRC/index.html"
diff --git a/extra/libtextcat/PKGBUILD b/extra/libtextcat/PKGBUILD
new file mode 100644
index 000000000..dfccfb8db
--- /dev/null
+++ b/extra/libtextcat/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 122957 2011-05-07 14:06:48Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Contributor: William Rea <sillywilly@gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=libtextcat
+pkgver=2.2
+pkgrel=8
+pkgdesc="Library that implements N-gram-based text categorization"
+arch=('i686' 'x86_64')
+url="http://software.wise-guys.nl/libtextcat/"
+license=('BSD')
+depends=('glibc')
+options=(!libtool)
+source=(http://software.wise-guys.nl/download/${pkgname}-${pkgver}.tar.gz
+ # from http://hg.services.openoffice.org/hg/DEV300/raw-file/tip/libtextcat/data/new_fingerprints/fpdb.conf
+ fpdb.conf
+ libtextcat-2.2-exportapi.patch
+ libtextcat-2.2-OOo.patch)
+md5sums=('128cfc86ed5953e57fe0f5ae98b62c2e'
+ 'f4fafe97d3aa184f5476e4918dba045d'
+ '4c46fcb825ec13e9f7ae3728f5f4c834'
+ '1d5f1026392365c58f7a7406e923f886')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/libtextcat-2.2-exportapi.patch
+ patch -Np1 -i ${srcdir}/libtextcat-2.2-OOo.patch
+ autoreconf -fi
+ ./configure --prefix=/usr \
+ --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+# install -D -m644 src/textcat.h ${pkgdir}/usr/include/textcat.h
+
+ install -dm755 ${pkgdir}/usr/share/libtextcat/{LM,ShortTexts}
+ install -m644 ${srcdir}/fpdb.conf ${pkgdir}/usr/share/libtextcat
+ install -m644 langclass/conf.txt ${pkgdir}/usr/share/libtextcat
+ install -m644 langclass/LM/*.lm ${pkgdir}/usr/share/libtextcat/LM
+ install -m644 langclass/ShortTexts/*.txt ${pkgdir}/usr/share/libtextcat/ShortTexts
+
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ sed -i 's|LM|/usr/share/libtextcat/LM|' ${pkgdir}/usr/share/libtextcat/conf.txt
+}
+
diff --git a/extra/libtextcat/fpdb.conf b/extra/libtextcat/fpdb.conf
new file mode 100644
index 000000000..329184d51
--- /dev/null
+++ b/extra/libtextcat/fpdb.conf
@@ -0,0 +1,86 @@
+#
+# A sample config file for the language models
+# provided with Gertjan van Noords language guesser
+# (http://odur.let.rug.nl/~vannoord/TextCat/)
+#
+# Notes:
+# - You may consider eliminating a couple of small languages from this
+# list because they cause false positives with big languages and are
+# bad for performance. (Do you really want to recognize Drents?)
+# - Putting the most probable languages at the top of the list
+# improves performance, because this will raise the threshold for
+# likely candidates more quickly.
+#
+
+# this file have been modified (to OOo by Jocelyn MERAND joc.mer@gmail.com) to include country and encoding
+# guess strings are made as following : language-country-encoding
+
+afrikaans.lm af--utf8
+albanian.lm sq--utf8
+amharic_utf.lm am--utf8
+arabic.lm ar--utf8
+basque.lm eu--utf8
+belarus.lm be--utf8
+bosnian.lm bs--utf8
+breton.lm br--utf8
+catalan.lm ca--utf8
+chinese_simplified.lm zh-CN-utf8
+chinese_traditional.lm zh-TW-utf8
+croatian.lm hr--utf8
+czech.lm cs--utf8
+danish.lm da--utf8
+dutch.lm nl--utf8
+english.lm en--utf8
+esperanto.lm eo--utf8
+estonian.lm et--utf8
+finnish.lm fi--utf8
+french.lm fr--utf8
+frisian.lm fy--utf8
+georgian.lm ka--utf8
+german.lm de--utf8
+greek.lm el--utf8
+hebrew.lm he--utf8
+hindi.lm hi--utf8
+hungarian.lm hu--utf8
+icelandic.lm is--utf8
+indonesian.lm id--utf8
+irish_gaelic.lm ga--utf8
+italian.lm it--utf8
+japanese.lm ja--utf8
+korean.lm ko--utf8
+latin.lm la--utf8
+latvian.lm lv--utf8
+lithuanian.lm lt--utf8
+luxembourgish.lm lb--utf8
+malay.lm ms--utf8
+manx_gaelic.lm gv--utf8
+marathi.lm mr--utf8
+mongolian_cyrillic.lm mn--utf8
+nepali.lm ne--utf8
+norwegian.lm nb--utf8 # Norwegian (Bokmal)
+persian.lm fa--utf8 # Farsi
+polish.lm pl--utf8
+portuguese.lm pt-PT-utf8
+quechua.lm qu--utf8
+romanian.lm ro--utf8
+romansh.lm rm--utf8
+russian.lm ru--utf8
+sanskrit.lm sa--utf8
+scots.lm sco--utf8
+scots_gaelic.lm gd--utf8
+serbian.lm sr--utf-8
+serbian-latin.lm sh--utf-8
+slovak_ascii.lm sk-SK-utf8
+slovenian.lm sl--utf8
+spanish.lm es--utf8
+swahili.lm sw--utf8
+swedish.lm sv--utf8
+tagalog.lm tl--utf8
+tamil.lm ta--utf8
+thai.lm th--utf8
+turkish.lm tr--utf8
+ukrainian.lm uk--utf8
+vietnamese.lm vi--utf8
+welsh.lm cy--utf8
+yiddish_utf.lm yi--utf8
+zulu.lm zu--utf8
diff --git a/extra/libtextcat/libtextcat-2.2-OOo.patch b/extra/libtextcat/libtextcat-2.2-OOo.patch
new file mode 100644
index 000000000..70f9d8d23
--- /dev/null
+++ b/extra/libtextcat/libtextcat-2.2-OOo.patch
@@ -0,0 +1,634 @@
+diff -ruN libtextcat-2.2.part1/src/constants.h libtextcat-2.2/src/constants.h
+--- libtextcat-2.2.part1/src/constants.h 2007-07-25 10:46:49.000000000 +0100
++++ libtextcat-2.2/src/constants.h 2007-07-25 10:47:25.000000000 +0100
+@@ -39,6 +39,8 @@
+ */
+ #include <limits.h>
+
++#define _UTF8_
++
+ #define DESCRIPTION "out of place"
+
+ /* Reported matches are those fingerprints with a score less than best
+@@ -59,14 +61,21 @@
+ /* Maximum number of n-grams in a fingerprint */
+ #define MAXNGRAMS 400
+
+-/* Maximum size of an n-gram? */
+-#define MAXNGRAMSIZE 5
++/* Maximum number of character of an n-gram? */
++#define MAXNGRAMSYMBOL 5
++
++/* Maximum size of the string representing an n-gram (must be greater than number of symbol) */
++#ifdef _UTF8_
++#define MAXNGRAMSIZE 20
++#else
++#define MAXNGRAMSIZE MAXNGRAMSYMBOL
++#endif
+
+ /* Which characters are not acceptable in n-grams? */
+ #define INVALID(c) (isspace((int)c) || isdigit((int)c))
+
+ /* Minimum size (in characters) for accepting a document */
+-#define MINDOCSIZE 25
++#define MINDOCSIZE 6
+
+ /* Maximum penalty for missing an n-gram in fingerprint */
+ #define MAXOUTOFPLACE 400
+@@ -76,4 +85,7 @@
+
+ #define MAXSCORE INT_MAX
+
++/* where the fingerprints files are stored */
++#define DEFAULT_FINGERPRINTS_PATH ""
++
+ #endif
+diff -ruN libtextcat-2.2.part1/src/fingerprint.c libtextcat-2.2/src/fingerprint.c
+--- libtextcat-2.2.part1/src/fingerprint.c 2007-07-25 10:46:49.000000000 +0100
++++ libtextcat-2.2/src/fingerprint.c 2007-07-25 10:47:25.000000000 +0100
+@@ -63,6 +63,10 @@
+ * - put table/heap datastructure in a separate file.
+ */
+
++#ifndef _UTF8_
++#define _UTF8_
++#endif
++
+ #include "config.h"
+ #include <stdio.h>
+ #ifdef HAVE_STDLIB_H
+@@ -80,10 +84,12 @@
+ #include "wg_mempool.h"
+ #include "constants.h"
+
++#include "utf8misc.h"
+
+ #define TABLESIZE (1<<TABLEPOW)
+ #define TABLEMASK ((TABLESIZE)-1)
+
++
+ typedef struct {
+
+ sint2 rank;
+@@ -134,29 +140,14 @@
+ }
+
+
+-/* checks if n-gram lex is a prefix of key and of length len */
+-inline int issame( char *lex, char *key, int len )
+-{
+- int i;
+- for (i=0; i<len; i++) {
+- if ( key[i] != lex[i] ) {
+- return 0;
+- }
+- }
+- if ( lex[i] != 0 ) {
+- return 0;
+- }
+- return 1;
+-}
+-
+
+ /* increases frequency of ngram(p,len) */
+-static inline int increasefreq( table_t *t, char *p, int len )
+-{
+- uint4 hash = simplehash( p, len ) & TABLEMASK;
++static int increasefreq( table_t *t, char *p, int len )
++{
++ uint4 hash = simplehash( p, len ) & TABLEMASK;
+ entry_t *entry = t->table[ hash ];
+-
+- while ( entry ) {
++
++ while ( entry ) {
+ if ( issame( entry->str, p, len ) ) {
+ /*** Found it! ***/
+ entry->cnt++;
+@@ -168,7 +159,7 @@
+ }
+
+ /*** Not found, so create ***/
+- entry = wgmempool_alloc( t->pool, sizeof(entry_t) );
++ entry = (entry_t*)(wgmempool_alloc( t->pool, sizeof(entry_t) ));
+ strcpy( entry->str, p );
+ entry->cnt = 1;
+
+@@ -181,12 +172,12 @@
+ #if 0
+
+ /* looks up ngram(p,len) */
+-static entry_t *findfreq( table_t *t, char *p, int len )
+-{
+- uint4 hash = simplehash( p, len ) & TABLEMASK;
++static entry_t *findfreq( table_t *t, char *p, int len )
++{
++ uint4 hash = simplehash( p, len ) & TABLEMASK;
+ entry_t *entry = t->table[ hash ];
+-
+- while ( entry ) {
++
++ while ( entry ) {
+ if ( issame( entry->str, p, len ) ) {
+ return entry;
+ }
+@@ -219,7 +210,7 @@
+ #define GREATER(x,y) ((x).cnt > (y).cnt)
+ #define LESS(x,y) ((x).cnt < (y).cnt)
+
+-inline static void siftup( table_t *t, unsigned int child )
++static void siftup( table_t *t, unsigned int child )
+ {
+ entry_t *heap = t->heap;
+ unsigned int parent = (child-1) >> 1;
+@@ -241,7 +232,7 @@
+ }
+
+
+-inline static void siftdown( table_t *t, unsigned int heapsize, uint4 parent )
++static void siftdown( table_t *t, unsigned int heapsize, uint4 parent )
+ {
+ entry_t *heap = t->heap;
+ unsigned int child = parent*2 + 1;
+@@ -458,21 +449,27 @@
+ return dest;
+ }
+
+-
++/**
++* this function extract all n-gram from past buffer and put them into the table "t"
++* [modified] by Jocelyn Merand to accept utf-8 multi-character symbols to be used in OpenOffice
++*/
+ static void createngramtable( table_t *t, const char *buf )
+ {
+ char n[MAXNGRAMSIZE+1];
+ const char *p = buf;
+ int i;
++ int pointer = 0;
+
+ /*** Get all n-grams where 1<=n<=MAXNGRAMSIZE. Allow underscores only at borders. ***/
+- for (;;p++) {
++ while(1) {
+
+- const char *q = p;
++ const char *q = &p[pointer]; /*[modified] previously p++ above (for(;;p++)) now, it's pointer wich is increased so we have to get the new pointer on the buffer*/
+ char *m = n;
+
+ /*** First char may be an underscore ***/
+- *m++ = *q++;
++ int decay = charcopy(q, m); /*[modified] previously *q++ = *m++*/
++ q = &(p[pointer+decay]); /*[modified] the old copying method do not manage multi-character symbols*/
++ m += decay; /*[modified]*/
+ *m = '\0';
+
+ increasefreq( t, n, 1 );
+@@ -482,19 +479,22 @@
+ }
+
+ /*** Let the compiler unroll this ***/
+- for ( i=2; i<=MAXNGRAMSIZE; i++) {
++ for ( i=2; i<=MAXNGRAMSYMBOL; i++) {
+
+- *m++ = *q;
++ decay = charcopy(q, m); /*[modified] like above*/
++ m += decay;
+ *m = '\0';
+
+ increasefreq( t, n, i );
+
+ if ( *q == '_' ) break;
+- q++;
++ q += decay;
+ if ( *q == '\0' ) {
+ return;
+ }
+ }
++
++ pointer = nextcharstart(p,pointer); /*[modified] p[pointer] must point on the next start of symbol, but whith utf next start is not surely next char*/
+ }
+ return;
+ }
+diff -ruN libtextcat-2.2.part1/src/fingerprint.h.orig libtextcat-2.2/src/fingerprint.h.orig
+--- libtextcat-2.2.part1/src/fingerprint.h.orig 1970-01-01 01:00:00.000000000 +0100
++++ libtextcat-2.2/src/fingerprint.h.orig 2007-07-25 10:47:22.000000000 +0100
+@@ -0,0 +1,55 @@
++#ifndef _FINGERPRINT_H_
++#define _FINGERPRINT_H_
++/*
++ * Copyright (C) 2003 WiseGuys Internet B.V.
++ *
++ * THE BSD LICENSE
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * - Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * - Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the
++ * distribution.
++ *
++ * - Neither the name of the WiseGuys Internet B.V. nor the names of
++ * its contributors may be used to endorse or promote products derived
++ * from this software without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ */
++#include "common.h"
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++extern void *fp_Init(const char *name);
++extern void fp_Done( void *handle );
++extern int fp_Create( void *handle, const char *buffer, uint4 bufsize, uint4 maxngrams );
++extern int fp_Read( void *handle, const char *fname, int maxngrams );
++extern sint4 fp_Compare( void *cat, void *unknown, int cutoff );
++extern void fp_Show( void *handle );
++extern const char *fp_Name( void *handle );
++extern void fp_Print( void *handle, FILE *fp );
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
+diff -ruN libtextcat-2.2.part1/src/textcat.c libtextcat-2.2/src/textcat.c
+--- libtextcat-2.2.part1/src/textcat.c 2007-07-25 10:46:49.000000000 +0100
++++ libtextcat-2.2/src/textcat.c 2007-07-25 10:47:25.000000000 +0100
+@@ -74,6 +74,7 @@
+ typedef struct {
+
+ void **fprint;
++ char *fprint_disable;
+ uint4 size;
+ uint4 maxsize;
+
+@@ -112,11 +113,21 @@
+ fp_Done( h->fprint[i] );
+ }
+ wg_free( h->fprint );
++ wg_free( h->fprint_disable );
+ wg_free( h );
+
+ }
+
+-extern void *textcat_Init( const char *conffile )
++/** Replaces older function */
++extern void *textcat_Init( const char *conffile ){
++ return special_textcat_Init( conffile, DEFAULT_FINGERPRINTS_PATH );
++}
++
++/**
++ * Originaly this function had only one parameter (conffile) it has been modified since OOo use
++ * Basicaly prefix is the directory path where fingerprints are stored
++ */
++extern void *special_textcat_Init( const char *conffile, const char *prefix )
+ {
+ textcat_t *h;
+ char line[1024];
+@@ -134,11 +145,13 @@
+ h->size = 0;
+ h->maxsize = 16;
+ h->fprint = (void **)wg_malloc( sizeof(void*) * h->maxsize );
++ h->fprint_disable = (char *)wg_malloc( sizeof(char*) * h->maxsize ); /*added to store the state of languages*/
+
+ while ( wg_getline( line, 1024, fp ) ) {
+ char *p;
+ char *segment[4];
+- int res;
++ char finger_print_file_name[512];
++ int res;
+
+ /*** Skip comments ***/
+ #ifdef HAVE_STRCHR
+@@ -156,17 +169,23 @@
+ /*** Ensure enough space ***/
+ if ( h->size == h->maxsize ) {
+ h->maxsize *= 2;
+- h->fprint = (void *)wg_realloc( h->fprint, sizeof(void*) * h->maxsize );
++ h->fprint = (void **)wg_realloc( h->fprint, sizeof(void*) * h->maxsize );
++ h->fprint_disable = (char *)wg_realloc( h->fprint_disable, sizeof(char*) * h->maxsize );
+ }
+
+ /*** Load data ***/
+ if ((h->fprint[ h->size ] = fp_Init( segment[1] ))==NULL) {
+ goto ERROR;
+ }
+- if ( fp_Read( h->fprint[h->size], segment[0], 400 ) == 0 ) {
++ finger_print_file_name[0] = '\0';
++ strcat(finger_print_file_name, prefix);
++ strcat(finger_print_file_name, segment[0]);
++
++ if ( fp_Read( h->fprint[h->size], finger_print_file_name, 400 ) == 0 ) {
+ textcat_Done(h);
+ goto ERROR;
+- }
++ }
++ h->fprint_disable[h->size] = 0xF0; /*0xF0 is the code for enabled languages, 0x0F is for disabled*/
+ h->size++;
+ }
+
+@@ -203,11 +222,18 @@
+ result = _TEXTCAT_RESULT_SHORT;
+ goto READY;
+ }
+-
++
+ /*** Calculate the score for each category. ***/
+ for (i=0; i<h->size; i++) {
+- int score = fp_Compare( h->fprint[i], unknown, threshold );
+- candidates[i].score = score;
++ int score;
++ if(h->fprint_disable[i] & 0x0F){ /*if this language is disabled*/
++ score = MAXSCORE;
++ }
++ else{
++ score = fp_Compare( h->fprint[i], unknown, threshold );
++ /*printf("Score for %s : %i\n", fp_Name(h->fprint[i]), score);*/
++ }
++ candidates[i].score = score;
+ candidates[i].name = fp_Name( h->fprint[i] );
+ if ( score < minscore ) {
+ minscore = score;
+diff -ruN libtextcat-2.2.part1/src/textcat.h libtextcat-2.2/src/textcat.h
+--- libtextcat-2.2.part1/src/textcat.h 2007-07-25 10:46:49.000000000 +0100
++++ libtextcat-2.2/src/textcat.h 2007-07-25 10:48:18.000000000 +0100
+@@ -55,10 +54,19 @@
+ * Returns: handle on success, NULL on error. (At the moment, the
+ * only way errors can occur, is when the library cannot read the
+ * conffile, or one of the fingerprint files listed in it.)
++ *
++ * Replace older function (and has exacly the same behaviour)
++ * see below
+ */
+ extern void *textcat_Init( const char *conffile );
+
+ /**
++ * Originaly this function had only one parameter (conffile) it has been modified since OOo must be able to load alternativ DB
++ * Basicaly prefix is the directory path where fingerprints are stored
++ */
++extern void *special_textcat_Init( const char *conffile, const char *prefix );
++
++/**
+ * textcat_Done() - Free up resources for handle
+ */
+ extern void textcat_Done( void *handle );
+diff -ruN libtextcat-2.2.part1/src/utf8misc.c libtextcat-2.2/src/utf8misc.c
+--- libtextcat-2.2.part1/src/utf8misc.c 1970-01-01 01:00:00.000000000 +0100
++++ libtextcat-2.2/src/utf8misc.c 2007-07-25 10:48:57.000000000 +0100
+@@ -0,0 +1,132 @@
++/***************************************************************************
++ * Copyright (C) 2006 by Jocelyn Merand *
++ * joc.mer@gmail.com *
++ * *
++ * THE BSD LICENSE
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * - Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * - Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the
++ * distribution.
++ *
++ * - Neither the name of the WiseGuys Internet B.V. nor the names of
++ * its contributors may be used to endorse or promote products derived
++ * from this software without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ ***************************************************************************/
++
++#ifndef _UTF8_MISC_H_
++#include "utf8misc.h"
++#endif
++
++
++int nextcharstart(const char *str, int position){
++ int pointer = position;
++
++ if(str[pointer] & ESCAPE_MASK){ /*if the first bit of the current char is 1*/
++
++ /*then str[pointer] is an escape character*/
++
++ char escape_char = ((str[pointer] & WEIGHT_MASK) << 1); /*and we use it to count (by bit translation) following characters (only the weightest part)*/
++
++ while(escape_char & ESCAPE_MASK && str[pointer]){/*every step, we move the byte of 1 bit left, when first bit is 0, it's finished*/
++ escape_char = escape_char <<1;
++ ++pointer;
++ }
++ }
++ if(str[pointer]){ /*finaly, if we are not on the \0 character, we jump to the next character*/
++ ++pointer;
++ }
++ return pointer;
++}
++
++
++int charcopy(const char *str, char *dest){
++
++ int pointer = 0;
++ if(str[pointer] & ESCAPE_MASK){ /*if the first bit of the current char is 1*/
++
++ /*then str[pointer] is an escape character*/
++
++ char escape_char = ((str[pointer] & WEIGHT_MASK) << 1); /*and we use it to count following characters (only the weightest part)*/
++
++ while(escape_char & ESCAPE_MASK && str[pointer]){ /*every step, we move the byte of 1 bit left, when first bit is 0, it's finished*/
++ dest[pointer] = str[pointer];
++ escape_char = escape_char <<1;
++ ++pointer;
++ }
++ }
++ if(str[pointer]){
++ dest[pointer] = str[pointer];
++ ++pointer;
++ }
++
++ return pointer;
++}
++
++
++int issame( char *lex, char *key, int len )
++{
++ /*printf("[%s] prefix of [%s] with length %i", lex, key, len);*/
++ int char_counter = 0;
++ int pointer = 0;
++ while(char_counter < len) {
++
++ if(key[pointer] & ESCAPE_MASK){ /*if the first bit of the current char is 1*/
++
++ /*then key[pointer] is an escap character*/
++
++ char escape_char = ((key[pointer] & WEIGHT_MASK) << 1); /*and we use it to count (only the weightest part)*/
++
++ while(escape_char & ESCAPE_MASK && key[pointer] == lex[pointer] ){
++ escape_char = escape_char <<1;
++ ++pointer;
++ }
++ }
++ ++char_counter; /*and we are on a new utf8 character*/
++ if ( key[pointer] != lex[pointer] ) {
++ return 0;
++ /*printf(" NO\n", lex, key, len);*/
++ }
++ ++pointer;
++ }
++ if ( lex[pointer] != '\0' ) {
++ return 0;
++ /*printf(" NO\n");*/
++ }
++
++ /*printf(" YES\n");*/
++
++ return 1;
++}
++
++
++extern int utfstrlen(const char* str){
++ int char_counter = 0;
++ int pointer = 0;
++ while(str[pointer]) {
++ pointer = nextcharstart(str, pointer);
++
++ ++char_counter; /*and we are on a new utf8 character*/
++ }
++ return char_counter;
++}
++
+diff -ruN libtextcat-2.2.part1/src/utf8misc.h libtextcat-2.2/src/utf8misc.h
+--- libtextcat-2.2.part1/src/utf8misc.h 1970-01-01 01:00:00.000000000 +0100
++++ libtextcat-2.2/src/utf8misc.h 2007-07-25 10:48:57.000000000 +0100
+@@ -0,0 +1,88 @@
++/***************************************************************************
++ * Copyright (C) 2006 by Jocelyn Merand *
++ * joc.mer@gmail.com *
++ * *
++ * THE BSD LICENSE
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * - Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * - Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the
++ * distribution.
++ *
++ * - Neither the name of the WiseGuys Internet B.V. nor the names of
++ * its contributors may be used to endorse or promote products derived
++ * from this software without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ ***************************************************************************/
++
++#ifndef _UTF8_MISC_H_
++#define _UTF8_MISC_H_
++
++/**
++ * These variables are used in character processing functions
++ * These have been added to manage utf-8 symbols, particularly escape chars
++ */
++#ifdef _UTF8_
++#define ESCAPE_MASK 0x80
++#define WEIGHT_MASK 0xF0
++#else
++#define ESCAPE_MASK 0xFF
++#define WEIGHT_MASK 0x00
++#endif
++
++
++/*
++ * Is used to jump to the next start of char
++ * of course it's only usefull when encoding is utf-8
++ * This function have been added by Jocelyn Merand to use libtextcat in OOo
++ */
++int nextcharstart(const char *str, int position);
++
++
++/*Copy the char in str to dest
++ * of course it's only usefull when encoding is utf8 and the symbol is encoded with more than 1 char
++ * return the number of char jumped
++ * This function have been added by Jocelyn Merand to use libtextcat in OOo
++ */
++int charcopy(const char *str, char *dest);
++
++
++/* checks if n-gram lex is a prefix of key and of length len
++* if _UTF8_ is defined, it uses escap characters and len is not realy the length of lex
++* in this case, len is the number of utf-8 char strlen("€") == 3 but len == 1
++*/
++int issame( char *lex, char *key, int len );
++
++
++/* Counts the number of characters
++* if _UTF8_ is defined, it uses escap characters and the result is not realy the length of str
++* in this case, the result is the number of utf-8 char strlen("€") == 3 but utfstrlen("€") == 1
++*/
++#ifdef __cplusplus
++extern "C" {
++#endif
++extern int utfstrlen(const char* str);
++#ifdef __cplusplus
++}
++#endif
++
++#endif
++
+--- libtextcat-2.2.part2/src/Makefile.am 2007-07-25 10:55:02.000000000 +0100
++++ libtextcat-2.2/src/Makefile.am 2007-07-25 10:55:52.000000000 +0100
+@@ -12,11 +12,11 @@
+
+ libtextcat_includedir = $(includedir)/libtextcat
+ libtextcat_include_HEADERS = \
+- common.h constants.h fingerprint.h textcat.h
++ common.h constants.h fingerprint.h textcat.h utf8misc.h
+
+ lib_LTLIBRARIES = libtextcat.la
+ libtextcat_la_SOURCES = \
+- common.c fingerprint.c textcat.c wg_mempool.c
++ common.c fingerprint.c textcat.c wg_mempool.c utf8misc.c
+
+ bin_PROGRAMS = createfp
+ createfp_SOURCES = createfp.c
diff --git a/extra/libtextcat/libtextcat-2.2-exportapi.patch b/extra/libtextcat/libtextcat-2.2-exportapi.patch
new file mode 100644
index 000000000..acf84e099
--- /dev/null
+++ b/extra/libtextcat/libtextcat-2.2-exportapi.patch
@@ -0,0 +1,305 @@
+diff -ruN libtextcat-2.2.orig/src/common.c libtextcat-2.2/src/common.c
+--- libtextcat-2.2.orig/src/common.c 2007-06-27 17:02:34.000000000 +0100
++++ libtextcat-2.2/src/common.c 2007-06-27 17:45:16.000000000 +0100
+@@ -45,7 +45,7 @@
+ #endif
+ #include <stdarg.h>
+ #include <ctype.h>
+-#include "common.h"
++#include "common_impl.h"
+
+ extern void wgmem_error( const char *fmt, ... )
+ {
+@@ -55,8 +55,6 @@
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+-
+- exit(-1);
+ }
+
+
+diff -ruN libtextcat-2.2.orig/src/common_impl.h libtextcat-2.2/src/common_impl.h
+--- libtextcat-2.2.orig/src/common_impl.h 1970-01-01 01:00:00.000000000 +0100
++++ libtextcat-2.2/src/common_impl.h 2007-06-27 17:45:16.000000000 +0100
+@@ -0,0 +1,66 @@
++#ifndef _COMMON_IMPL_H_
++#define _COMMON_IMPL_H_
++/**
++ * common_impl.h -- a mixed bag of helper functions
++ *
++ * Copyright (C) 2003 WiseGuys Internet B.V.
++ *
++ * THE BSD LICENSE
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * - Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * - Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the
++ * distribution.
++ *
++ * - Neither the name of the WiseGuys Internet B.V. nor the names of
++ * its contributors may be used to endorse or promote products derived
++ * from this software without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ */
++
++#include "config.h"
++#ifndef HAVE_MALLOC
++#error "This library needs a GNU like malloc to compile. 'configure' says there isn't one."
++#endif
++#ifndef HAVE_REALLOC
++#error "This library needs a GNU like realloc to compile. 'configure' says there isn't one."
++#endif
++#ifndef HAVE_STRDUP
++#error "This library needs a GNU like strdup to compile. 'configure' says there isn't one."
++#endif
++#ifdef HAVE_INTTYPES_H
++#include <inttypes.h>
++#else
++#ifdef HAVE_STDINT_H
++#include <stdint.h>
++#endif
++#endif
++#ifdef HAVE_SYS_TIME_H
++#include <sys/time.h>
++#endif
++#include "common.h"
++
++#define WGMIN(x,y) ((x)<=(y)?(x):(y))
++#define WGMAX(x,y) ((x)<=(y)?(y):(x))
++#define __STR__(x) #x
++#define WGSTR(x) __STR__(x)
++
++#endif
+diff -ruN libtextcat-2.2.orig/src/createfp.c libtextcat-2.2/src/createfp.c
+--- libtextcat-2.2.orig/src/createfp.c 2007-06-27 17:02:34.000000000 +0100
++++ libtextcat-2.2/src/createfp.c 2007-06-27 17:45:16.000000000 +0100
+@@ -44,7 +44,7 @@
+ #endif
+
+ #include "fingerprint.h"
+-#include "common.h"
++#include "common_impl.h"
+
+ #define BLOCKSIZE 4096
+
+diff -ruN libtextcat-2.2.orig/src/fingerprint.c libtextcat-2.2/src/fingerprint.c
+--- libtextcat-2.2.orig/src/fingerprint.c 2007-06-27 17:02:34.000000000 +0100
++++ libtextcat-2.2/src/fingerprint.c 2007-06-27 17:45:16.000000000 +0100
+@@ -76,7 +76,7 @@
+ #endif
+ #include <ctype.h>
+
+-#include "common.h"
++#include "common_impl.h"
+ #include "wg_mempool.h"
+ #include "constants.h"
+
+diff -ruN libtextcat-2.2.orig/src/Makefile.am libtextcat-2.2/src/Makefile.am
+--- libtextcat-2.2.orig/src/Makefile.am 2007-06-27 17:02:34.000000000 +0100
++++ libtextcat-2.2/src/Makefile.am 2007-06-27 17:47:40.000000000 +0100
+@@ -8,7 +8,11 @@
+ AM_LDFLAGS = -g
+
+ noinst_HEADERS = \
+- common.h constants.h fingerprint.h textcat.h wg_mempool.h
++ common_impl.h wg_mempool.h
++
++libtextcat_includedir = $(includedir)/libtextcat
++libtextcat_include_HEADERS = \
++ common.h constants.h fingerprint.h textcat.h
+
+ lib_LTLIBRARIES = libtextcat.la
+ libtextcat_la_SOURCES = \
+diff -ruN libtextcat-2.2.orig/src/testtextcat.c libtextcat-2.2/src/testtextcat.c
+--- libtextcat-2.2.orig/src/testtextcat.c 2007-06-27 17:02:34.000000000 +0100
++++ libtextcat-2.2/src/testtextcat.c 2007-06-27 17:45:16.000000000 +0100
+@@ -47,7 +47,7 @@
+ #endif
+
+ #include "textcat.h"
+-#include "common.h"
++#include "common_impl.h"
+
+ #define BLOCKSIZE 4096
+
+diff -ruN libtextcat-2.2.orig/src/textcat.c libtextcat-2.2/src/textcat.c
+--- libtextcat-2.2.orig/src/textcat.c 2007-06-27 17:02:34.000000000 +0100
++++ libtextcat-2.2/src/textcat.c 2007-06-27 17:45:16.000000000 +0100
+@@ -65,7 +65,7 @@
+ #include <alloca.h>
+ #endif
+
+-#include "common.h"
++#include "common_impl.h"
+ #include "fingerprint.h"
+ #include "textcat.h"
+ #include "constants.h"
+diff -ruN libtextcat-2.2.orig/src/wg_mempool.c libtextcat-2.2/src/wg_mempool.c
+--- libtextcat-2.2.orig/src/wg_mempool.c 2007-06-27 17:02:34.000000000 +0100
++++ libtextcat-2.2/src/wg_mempool.c 2007-06-27 17:45:16.000000000 +0100
+@@ -41,7 +41,7 @@
+ #ifdef HAVE_STRING_H
+ #include <string.h>
+ #endif
+-#include "common.h"
++#include "common_impl.h"
+
+ typedef struct memblock_s {
+ char *pool;
+diff -ru libtextcat-2.2.orig/src/common.h libtextcat-2.2/src/common.h
+--- libtextcat-2.2.orig/src/common.h 2003-05-22 14:02:29.000000000 +0100
++++ libtextcat-2.2/src/common.h 2007-06-28 09:10:42.000000000 +0100
+@@ -1,7 +1,7 @@
+ #ifndef _COMMON_H_
+ #define _COMMON_H_
+ /**
+- * common.h -- a mixed bag of helper functions
++ * common.h
+ *
+ * Copyright (C) 2003 WiseGuys Internet B.V.
+ *
+@@ -36,56 +36,25 @@
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+-#include "config.h"
+-#ifndef HAVE_MALLOC
+-#error "This library needs a GNU like malloc to compile. 'configure' says there isn't one."
+-#endif
+-#ifndef HAVE_REALLOC
+-#error "This library needs a GNU like realloc to compile. 'configure' says there isn't one."
+-#endif
+-#ifndef HAVE_STRDUP
+-#error "This library needs a GNU like strdup to compile. 'configure' says there isn't one."
+-#endif
+ #include <stdio.h>
+-#ifdef HAVE_INTTYPES_H
+ #include <inttypes.h>
+-#else
+-#ifdef HAVE_STDINT_H
+-#include <stdint.h>
+-#endif
+-#endif
+-#ifdef HAVE_SYS_TIME_H
+-#include <sys/time.h>
+-#endif
+ #include <time.h>
+
+-#define WGMIN(x,y) ((x)<=(y)?(x):(y))
+-#define WGMAX(x,y) ((x)<=(y)?(y):(x))
+-#define __STR__(x) #x
+-#define WGSTR(x) __STR__(x)
+-
+-#ifdef HAVE_INTTYPES_H
+-typedef uint32_t uint4;
+-typedef uint16_t uint2;
+-typedef uint8_t uchar;
+-
+-typedef int32_t sint4;
+-typedef int16_t sint2;
+-typedef int8_t schar;
+-
+-typedef int8_t boole;
+-#else
+-typedef unsigned long uint4;
+-typedef unsigned int uint2;
+-typedef unsigned char uchar;
+-
+-typedef long sint4;
+-typedef int sint2;
+-typedef char schar;
+-
+-typedef char boole;
++#include <sys/time.h>
++#ifdef __cplusplus
++extern "C" {
+ #endif
+
++typedef uint32_t uint4;
++typedef uint16_t uint2;
++typedef uint8_t uchar;
++
++typedef int32_t sint4;
++typedef int16_t sint2;
++typedef int8_t schar;
++
++typedef int8_t boole;
++
+ typedef struct wgtimer_s {
+ struct timeval start;
+ struct timeval stop;
+@@ -108,6 +76,8 @@
+ extern char *wg_strgmov( char *dest, const char *src, const char *destlimit );
+ extern char *wg_trim( char *dest, const char *src );
+
++#ifdef __cplusplus
++}
++#endif
+
+ #endif
+-
+diff -ru libtextcat-2.2.orig/src/fingerprint.h libtextcat-2.2/src/fingerprint.h
+--- libtextcat-2.2.orig/src/fingerprint.h 2003-05-19 13:16:31.000000000 +0100
++++ libtextcat-2.2/src/fingerprint.h 2007-06-28 09:11:17.000000000 +0100
+@@ -35,6 +35,10 @@
+ */
+ #include "common.h"
+
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ extern void *fp_Init(const char *name);
+ extern void fp_Done( void *handle );
+ extern int fp_Create( void *handle, const char *buffer, uint4 bufsize, uint4 maxngrams );
+@@ -44,4 +48,8 @@
+ extern const char *fp_Name( void *handle );
+ extern void fp_Print( void *handle, FILE *fp );
+
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+--- libtextcat-2.2.orig/src/textcat.h 2007-06-28 09:19:26.000000000 +0100
++++ libtextcat-2.2/src/textcat.h 2007-06-28 09:20:19.000000000 +0100
+@@ -37,6 +37,10 @@
+ */
+ #include <stdio.h>
+
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ #define _TEXTCAT_RESULT_UNKOWN "UNKNOWN"
+ #define _TEXTCAT_RESULT_SHORT "SHORT"
+
+@@ -77,4 +81,9 @@
+ * textcat_Version() - Returns a string describing the version of this classifier.
+ */
+ extern char *textcat_Version();
++
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
diff --git a/extra/libwpd/PKGBUILD b/extra/libwpd/PKGBUILD
index f1cfa64e7..30b22c16e 100644
--- a/extra/libwpd/PKGBUILD
+++ b/extra/libwpd/PKGBUILD
@@ -1,24 +1,22 @@
-# $Id: PKGBUILD 110381 2011-02-19 06:05:32Z eric $
-# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# $Id: PKGBUILD 122922 2011-05-07 10:20:23Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
pkgname=libwpd
-pkgver=0.9.1
+pkgver=0.9.2
pkgrel=1
pkgdesc="Library for importing WordPerfect (tm) documents"
arch=('i686' 'x86_64' 'mips64el')
url="http://libwpd.sourceforge.net/"
license=('LGPL')
-depends=('libgsf>=1.14.3-2')
+depends=('gcc-libs')
+makedepends=('libgsf>=1.14.20')
options=('!libtool')
source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
-md5sums=('6edd1b7eb8992888c6c82fc95859ac1b')
-sha1sums=('af4bc109ad270e873652d0af80e96b42d82dddbc')
+md5sums=('da43f18da732f6156cef145d06613960')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
-
- ./configure --prefix=/usr \
- --without-docs
+ ./configure --prefix=/usr
make
}
diff --git a/extra/libwps/PKGBUILD b/extra/libwps/PKGBUILD
new file mode 100644
index 000000000..650e94400
--- /dev/null
+++ b/extra/libwps/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 122933 2011-05-07 10:59:22Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Robert McCathie <archaur at rmcc dot com dot au>
+
+pkgname=libwps
+pkgver=0.2.2
+pkgrel=1
+pkgdesc="a Microsoft Works file word processor format import filter library"
+arch=('i686' 'x86_64')
+url="http://libwps.sourceforge.net/"
+license=('LGPL')
+depends=('libwpd>=0.9.2')
+options=(!libtool)
+source=("http://downloads.sourceforge.net/project/libwps/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.bz2")
+#md5sums=('83d4029aebf290c0a9a8fee9c99638d3')
+#md5sums=('9e436bff44c60dc8b97cba0c7fc11a5c')
+md5sums=('29721a16f25967d59969d5f0ae485b4a')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ sed -i -e 's: -Wall -Werror -pedantic::' configure.in
+ touch NEWS AUTHORS ChangeLog
+ autoreconf -fi
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+
diff --git a/extra/llvm/PKGBUILD b/extra/llvm/PKGBUILD
index 3587a7775..234b009b6 100644
--- a/extra/llvm/PKGBUILD
+++ b/extra/llvm/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 121057 2011-04-28 21:09:26Z heftig $
+# $Id: PKGBUILD 123080 2011-05-08 02:35:16Z foutrelis $
# Maintainer: Evangelos Foutras <foutrelis@gmail.com>
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
# Contributor: Sebastian Nowicki <sebnow@gmail.com>
@@ -12,7 +12,7 @@
pkgname=('llvm' 'llvm-ocaml' 'clang' 'clang-analyzer')
pkgver=2.9
_gcc_ver=4.6.0
-pkgrel=4
+pkgrel=5
arch=('i686' 'x86_64')
url="http://llvm.org/"
license=('custom:University of Illinois/NCSA Open Source License')
@@ -24,7 +24,8 @@ source=(http://llvm.org/releases/$pkgver/$pkgname-$pkgver.tgz
cindexer-clang-path.patch
clang-toolchains-gcc-versions.patch
clang-pure64.patch
- enable-lto.patch)
+ enable-lto.patch
+ bug-9869-operator-h-c++0x.patch)
md5sums=('793138412d2af2c7c7f54615f8943771'
'634de18d04b7a4ded19ec4c17d23cfca'
'70e23a3dc2b38ecb2bb4d2c48f47295d'
@@ -32,7 +33,8 @@ md5sums=('793138412d2af2c7c7f54615f8943771'
'87a7162dbe99e9ffce6c40bd09f5f4f0'
'8da236120a9a287a977b575b8b905c93'
'225ee6b531f8327f34f344a18cb4ec81'
- '8f7582d7440e4a8342c3aea9ec714fb4')
+ '8f7582d7440e4a8342c3aea9ec714fb4'
+ '047cac563a557463d7ec6bd87d953f5e')
build() {
cd "$srcdir/$pkgname-$pkgver"
@@ -73,6 +75,10 @@ build() {
# Use gold instead of default linker, and always use the plugin
patch -d tools/clang -Np0 -i "$srcdir/enable-lto.patch"
+ # Fix upstream bug #9869:
+ # Operator.h incompatibility with GCC 4.6 in C++0x mode
+ patch -Np2 -i "$srcdir/bug-9869-operator-h-c++0x.patch"
+
# Apply strip option to configure
_optimized_switch="enable"
[[ $(check_option strip) == n ]] && _optimized_switch="disable"
diff --git a/extra/llvm/bug-9869-operator-h-c++0x.patch b/extra/llvm/bug-9869-operator-h-c++0x.patch
new file mode 100644
index 000000000..b95d7d772
--- /dev/null
+++ b/extra/llvm/bug-9869-operator-h-c++0x.patch
@@ -0,0 +1,57 @@
+--- llvm/trunk/include/llvm/Operator.h 2011/02/07 16:40:21 125006
++++ llvm/trunk/include/llvm/Operator.h 2011/05/08 01:59:22 131062
+@@ -186,28 +186,46 @@
+ };
+
+ class AddOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Add> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Add> {
++ ~AddOperator(); // DO NOT IMPLEMENT
++};
+ class SubOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Sub> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Sub> {
++ ~SubOperator(); // DO NOT IMPLEMENT
++};
+ class MulOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Mul> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Mul> {
++ ~MulOperator(); // DO NOT IMPLEMENT
++};
+ class ShlOperator
+- : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Shl> {};
++ : public ConcreteOperator<OverflowingBinaryOperator, Instruction::Shl> {
++ ~ShlOperator(); // DO NOT IMPLEMENT
++};
+
+
+ class SDivOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::SDiv> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::SDiv> {
++ ~SDivOperator(); // DO NOT IMPLEMENT
++};
+ class UDivOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::UDiv> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::UDiv> {
++ ~UDivOperator(); // DO NOT IMPLEMENT
++};
+ class AShrOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::AShr> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::AShr> {
++ ~AShrOperator(); // DO NOT IMPLEMENT
++};
+ class LShrOperator
+- : public ConcreteOperator<PossiblyExactOperator, Instruction::LShr> {};
++ : public ConcreteOperator<PossiblyExactOperator, Instruction::LShr> {
++ ~LShrOperator(); // DO NOT IMPLEMENT
++};
+
+
+
+ class GEPOperator
+ : public ConcreteOperator<Operator, Instruction::GetElementPtr> {
++ ~GEPOperator(); // DO NOT IMPLEMENT
++
+ enum {
+ IsInBounds = (1 << 0)
+ };
diff --git a/extra/mysql/PKGBUILD b/extra/mysql/PKGBUILD
index 326472290..6f4d6c974 100644
--- a/extra/mysql/PKGBUILD
+++ b/extra/mysql/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 118056 2011-04-05 09:37:46Z andrea $
+# $Id: PKGBUILD 122912 2011-05-07 10:07:11Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
# Contributor: judd <jvinet@zeroflux.org>
pkgbase=mysql
pkgname=('libmysqlclient' 'mysql-clients' 'mysql')
-pkgver=5.5.11
+pkgver=5.5.12
pkgrel=1
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
@@ -15,7 +15,7 @@ options=('!libtool')
source=("http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.5/${pkgbase}-${pkgver}.tar.gz"
'mysqld'
'my.cnf')
-md5sums=('befa4e0d0aa95be6c8f6f143ae3b0641'
+md5sums=('53d31a0b24f3eb3176185090eff129b9'
'2234207625baa29b2ff7d7b4f088abce'
'1c949c0dbea5206af0db14942d9927b6')
diff --git a/extra/orca/PKGBUILD b/extra/orca/PKGBUILD
deleted file mode 100644
index c2049503f..000000000
--- a/extra/orca/PKGBUILD
+++ /dev/null
@@ -1,27 +0,0 @@
-# $Id: PKGBUILD 99644 2010-11-15 23:32:08Z ibiru $
-# Maintainer: Jan de Groot <jgc@archlinux.org>
-# Contributor: William Rea <sillywilly@gmail.com>
-
-pkgname=orca
-pkgver=2.32.1
-pkgrel=1
-pkgdesc="A scriptable screen reader and magnifier"
-arch=(i686 x86_64 'mips64el')
-license=('LGPL')
-url="http://www.gnome.org/projects/orca"
-install=orca.install
-options=('!libtool')
-depends=('pygtk>=2.22.0' 'python2-gconf' 'python2-bonobo' 'python2-libgnome' 'python-wnck' 'dbus-python>=0.83.0' 'at-spi>=1.32.0' 'gnome-speech>=0.4.25' 'gnome-mag>=0.16.0' 'brltty' 'hicolor-icon-theme' 'pyxdg')
-makedepends=('intltool')
-replaces=('gnopernicus')
-groups=('gnome-extra')
-source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('44da9da70c1b47bc87fda8f3b9da4cc1df9993d92388434f5707d39b5a832629')
-
-build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr --sysconfdir=/etc \
- --localstatedir=/var
- make
- make DESTDIR="${pkgdir}" install
-}
diff --git a/extra/orca/orca.install b/extra/orca/orca.install
deleted file mode 100644
index 17ca8f78a..000000000
--- a/extra/orca/orca.install
+++ /dev/null
@@ -1,11 +0,0 @@
-post_install() {
- gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
-}
-
-post_upgrade() {
- post_install $1
-}
-
-post_remove() {
- post_install $1
-}
diff --git a/extra/phonon-gstreamer/PKGBUILD b/extra/phonon-gstreamer/PKGBUILD
index 4b87c9924..18c3813c5 100644
--- a/extra/phonon-gstreamer/PKGBUILD
+++ b/extra/phonon-gstreamer/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 119060 2011-04-10 18:47:30Z andrea $
+# $Id: PKGBUILD 122917 2011-05-07 10:12:53Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
pkgname=phonon-gstreamer
-pkgver=4.5.0
+pkgver=4.5.1
pkgrel=1
arch=('i686' 'x86_64' 'mips64el')
url="http://phonon.kde.org"
@@ -12,10 +12,10 @@ depends=('gstreamer0.10-base-plugins')
makedepends=('cmake' 'automoc4' 'phonon' 'mesa')
provides=('phonon-backend')
source=("http://download.kde.org/stable/phonon/phonon-backend-gstreamer/${pkgver}/src/phonon-backend-gstreamer-${pkgver}.tar.bz2")
-md5sums=('2875139f2b7b649396125f4acc66de67')
+md5sums=('021cf7740208e7212b7ce91adb6a349b')
build() {
- cd ${srcdir}
+ cd "${srcdir}"
mkdir build
cd build
cmake ../phonon-backend-gstreamer-${pkgver} \
@@ -25,6 +25,6 @@ build() {
}
package() {
- cd ${srcdir}/build
- make DESTDIR=${pkgdir} install
+ cd "${srcdir}/build"
+ make DESTDIR="${pkgdir}" install
}
diff --git a/extra/python-qt/PKGBUILD b/extra/python-qt/PKGBUILD
deleted file mode 100644
index cdf111a7f..000000000
--- a/extra/python-qt/PKGBUILD
+++ /dev/null
@@ -1,41 +0,0 @@
-# $Id: PKGBUILD 110673 2011-02-21 12:42:56Z andrea $
-# Maintainer: Andrea Scarpino <andrea@archlinux.org>
-
-pkgname=python-qt
-pkgver=4.8.3
-pkgrel=2
-arch=('i686' 'x86_64' 'mips64el')
-url="http://riverbankcomputing.co.uk/software/pyqt/intro"
-license=('GPL')
-pkgdesc="A set of Python 3 bindings for the Qt toolkit"
-depends=('python2-qt' 'python-sip')
-optdepends=('phonon: enable audio and video in PyQt applications'
- 'qscintilla: QScintilla API'
- 'qt-assistant-compat: add PyQt online help in Qt Assistant')
-makedepends=('phonon' 'qt-assistant-compat')
-source=("http://riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-${pkgver}.tar.gz")
-md5sums=('d54fd1c37a74864faf42709c8102f254')
-
-build() {
- cd "${srcdir}/PyQt-x11-gpl-${pkgver}"
-
- python configure.py \
- --confirm-license \
- --qsci-api
-
- # Thanks Gerardo for the rpath fix
- find -name 'Makefile' | xargs sed -i 's|-Wl,-rpath,/usr/lib||g;s|-Wl,-rpath,.* ||g'
-
- make
-}
-
-package(){
- cd "${srcdir}/PyQt-x11-gpl-${pkgver}"
- # INSTALL_ROOT is needed for the QtDesigner module, the other Makefiles use DESTDIR
- make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install
-
- # Provided by python2-qt package
- rm ${pkgdir}/usr/bin/{pylupdate4,pyrcc4,pyuic4}
- rm ${pkgdir}/usr/lib/qt/plugins/designer/libpythonplugin.so
- rm ${pkgdir}/usr/share/qt/qsci/api/python/PyQt4.api
-}
diff --git a/extra/python-sip/PKGBUILD b/extra/python-sip/PKGBUILD
deleted file mode 100644
index ba45af8a9..000000000
--- a/extra/python-sip/PKGBUILD
+++ /dev/null
@@ -1,30 +0,0 @@
-# $Id: PKGBUILD 110667 2011-02-21 12:01:59Z stephane $
-# Maintainer: Andrea Scarpino <andrea@archlinux.org>
-
-pkgname=python-sip
-pkgver=4.12.1
-pkgrel=2
-arch=('i686' 'x86_64' 'mips64el')
-url="http://www.riverbankcomputing.com/software/sip/"
-license=('custom:"sip"')
-pkgdesc="A tool that makes it easy to create Python 3 bindings for C and C++ libraries"
-depends=('python2-sip' 'python')
-source=("http://www.riverbankcomputing.com/static/Downloads/sip4/sip-${pkgver}.tar.gz")
-md5sums=('0f8e8305b14c1812191de2e0ee22fea9')
-
-build() {
- cd "${srcdir}/sip-${pkgver}"
-
- python configure.py CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}"
- make
-}
-
-package() {
- cd "${srcdir}/sip-${pkgver}"
- make DESTDIR="${pkgdir}" install
-
- install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
-
- # Provided by python2-sip package
- rm "${pkgdir}/usr/bin/sip"
-}
diff --git a/extra/python2-qt/PKGBUILD b/extra/python2-qt/PKGBUILD
deleted file mode 100644
index de24795ff..000000000
--- a/extra/python2-qt/PKGBUILD
+++ /dev/null
@@ -1,41 +0,0 @@
-# $Id: PKGBUILD 107404 2011-01-24 17:30:13Z andrea $
-# Maintainer: Andrea Scarpino <andrea@archlinux.org>
-# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
-# Contributor: riai <riai@bigfoot.com> Ben <ben@benmazer.net>
-
-pkgname=python2-qt
-pkgver=4.8.3
-pkgrel=1
-pkgdesc="A set of Python 2 bindings for the Qt toolkit"
-arch=('i686' 'x86_64' 'mips64el')
-url="http://riverbankcomputing.co.uk/software/pyqt/intro"
-license=('GPL')
-depends=('qt' 'python2-sip' 'dbus-python')
-makedepends=('phonon' 'python-opengl' 'qt-assistant-compat')
-optdepends=('phonon: enable audio and video in PyQt applications'
- 'python-opengl: enable OpenGL 3D graphics in PyQt applications'
- 'qscintilla: QScintilla API'
- 'qt-assistant-compat: add PyQt online help in Qt Assistant')
-replaces=('pyqt')
-source=("http://riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-${pkgver}.tar.gz")
-md5sums=('d54fd1c37a74864faf42709c8102f254')
-
-build() {
- cd "${srcdir}/PyQt-x11-gpl-${pkgver}"
-
- python2 configure.py \
- --confirm-license \
- -v /usr/share/sip \
- --qsci-api
-
- # Thanks Gerardo for the rpath fix
- find -name 'Makefile' | xargs sed -i 's|-Wl,-rpath,/usr/lib||g;s|-Wl,-rpath,.* ||g'
-
- make
-}
-
-package(){
- cd "${srcdir}/PyQt-x11-gpl-${pkgver}"
- # INSTALL_ROOT is needed for the QtDesigner module, the other Makefiles use DESTDIR
- make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install
-}
diff --git a/extra/python2-sip/PKGBUILD b/extra/python2-sip/PKGBUILD
deleted file mode 100644
index 477f7595d..000000000
--- a/extra/python2-sip/PKGBUILD
+++ /dev/null
@@ -1,30 +0,0 @@
-# $Id: PKGBUILD 107403 2011-01-24 17:30:04Z andrea $
-# Maintainer: Andrea Scarpino <andrea@archlinux.org>
-# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
-# Contributor: riai <riai@bigfoot.com>, Ben <ben@benmazer.net>
-
-pkgname=python2-sip
-pkgver=4.12.1
-pkgrel=1
-pkgdesc="A tool that makes it easy to create Python 2 bindings for C and C++ libraries"
-arch=('i686' 'x86_64' 'mips64el')
-url="http://www.riverbankcomputing.com/software/sip/"
-license=('custom:"sip"')
-depends=('python2')
-replaces=('sip')
-source=("http://www.riverbankcomputing.com/static/Downloads/sip4/sip-${pkgver}.tar.gz")
-md5sums=('0f8e8305b14c1812191de2e0ee22fea9')
-
-build() {
- cd "${srcdir}/sip-${pkgver}"
-
- python2 configure.py CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}"
- make
-}
-
-package() {
- cd "${srcdir}/sip-${pkgver}"
- make DESTDIR="${pkgdir}" install
-
- install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
-}
diff --git a/extra/qscintilla/PKGBUILD b/extra/qscintilla/PKGBUILD
index fa2b2aaa8..d8c966d4d 100644
--- a/extra/qscintilla/PKGBUILD
+++ b/extra/qscintilla/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 119950 2011-04-17 11:43:04Z andrea $
+# $Id: PKGBUILD 123072 2011-05-07 23:41:27Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Douglas Soares de Andrade <dsa@aur.archlinux.org>
pkgbase=qscintilla
pkgname=('qscintilla' 'python-qscintilla' 'python2-qscintilla')
pkgver=2.5.1
-pkgrel=1
+pkgrel=2
license=('GPL')
arch=('i686' 'x86_64' 'mips64el')
url="http://www.riverbankcomputing.co.uk/software/qscintilla/intro"
-makedepends=('python-qt')
+makedepends=('python2-pyqt')
source=("http://riverbankcomputing.com/static/Downloads/QScintilla2/QScintilla-gpl-${pkgver}.tar.gz"
'configure.py-objdir-support.diff')
md5sums=('dd7edef5ff674d307057a3c12dbd8fce'
@@ -52,7 +52,7 @@ package_qscintilla() {
package_python-qscintilla() {
pkgdesc="Python 3 bindings for QScintilla2"
- depends=('python-qt' 'python2-qscintilla')
+ depends=('pyqt' 'qscintilla')
cd "${srcdir}/QScintilla-gpl-${pkgver}/Python"
install -Dm755 Qsci.so \
@@ -61,7 +61,7 @@ package_python-qscintilla() {
package_python2-qscintilla() {
pkgdesc="Python 2 bindings for QScintilla2"
- depends=('qscintilla' 'python2-qt')
+ depends=('python-qscintilla' 'python2-pyqt')
cd "${srcdir}/QScintilla-gpl-${pkgver}/Python2"
make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install
diff --git a/extra/quota-tools/ChangeLog b/extra/quota-tools/ChangeLog
deleted file mode 100644
index 56c760b78..000000000
--- a/extra/quota-tools/ChangeLog
+++ /dev/null
@@ -1,9 +0,0 @@
-2009-01-07 Eric Belanger <eric@archlinux.org>
-
- * quota-tools 3.17-1
- * Upstream update
-
-2008-05-01 Eric Belanger <eric@archlinux.org>
-
- * quota-tools 3.16-1
- * Upstream update
diff --git a/extra/rxvt-unicode/rxvt-unicode.png b/extra/rxvt-unicode/rxvt-unicode.png
deleted file mode 100644
index 0738a7840..000000000
--- a/extra/rxvt-unicode/rxvt-unicode.png
+++ /dev/null
Binary files differ
diff --git a/extra/squid/fix-for-new-cap-headers.patch b/extra/squid/fix-for-new-cap-headers.patch
deleted file mode 100644
index ce24681e8..000000000
--- a/extra/squid/fix-for-new-cap-headers.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- src/tools.c.orig 2009-11-02 10:54:49.000000000 -0500
-+++ src/tools.c 2009-11-02 10:55:05.000000000 -0500
-@@ -44,9 +44,9 @@
- #if HAVE_SYS_CAPABILITY_H
- #undef _POSIX_SOURCE
- /* Ugly glue to get around linux header madness colliding with glibc */
--#define _LINUX_TYPES_H
-+/*#define _LINUX_TYPES_H*/
- #define _LINUX_FS_H
--typedef uint32_t __u32;
-+/*typedef uint32_t __u32;*/
- #include <sys/capability.h>
- #endif
- #endif
diff --git a/extra/squid/squid-makefiles.patch b/extra/squid/squid-makefiles.patch
deleted file mode 100644
index 4cefb89a0..000000000
--- a/extra/squid/squid-makefiles.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-diff -Naur squid-2.7.STABLE2-orig/helpers/basic_auth/SMB/Makefile.in squid-2.7.STABLE2/helpers/basic_auth/SMB/Makefile.in
---- squid-2.7.STABLE2-orig/helpers/basic_auth/SMB/Makefile.in 2007-11-11 20:14:01.000000000 -0500
-+++ squid-2.7.STABLE2/helpers/basic_auth/SMB/Makefile.in 2008-06-09 21:32:52.000000000 -0400
-@@ -268,7 +268,7 @@
- sysconfdir = @sysconfdir@
- target_alias = @target_alias@
- SMB_AUTH_HELPER = smb_auth.sh
--SAMBAPREFIX = /usr/local/samba
-+SAMBAPREFIX = /usr
- SMB_AUTH_HELPER_PATH = $(libexecdir)/$(SMB_AUTH_HELPER)
- libexec_SCRIPTS = $(SMB_AUTH_HELPER)
- smb_auth_CFLAGS = -DSAMBAPREFIX=\"$(SAMBAPREFIX)\" -DHELPERSCRIPT=\"$(SMB_AUTH_HELPER_PATH)\"
-diff -Naur squid-2.7.STABLE2-orig/src/Makefile.in squid-2.7.STABLE2/src/Makefile.in
---- squid-2.7.STABLE2-orig/src/Makefile.in 2008-01-02 20:16:40.000000000 -0500
-+++ squid-2.7.STABLE2/src/Makefile.in 2008-06-09 21:34:39.000000000 -0400
-@@ -653,13 +653,13 @@
- DEFAULT_CONFIG_FILE = $(sysconfdir)/squid.conf
- DEFAULT_MIME_TABLE = $(sysconfdir)/mime.conf
- DEFAULT_DNSSERVER = $(libexecdir)/`echo dnsserver | sed '$(transform);s/$$/$(EXEEXT)/'`
--DEFAULT_LOG_PREFIX = $(localstatedir)/logs
-+DEFAULT_LOG_PREFIX = $(localstatedir)/log/squid
- DEFAULT_CACHE_LOG = $(DEFAULT_LOG_PREFIX)/cache.log
- DEFAULT_ACCESS_LOG = $(DEFAULT_LOG_PREFIX)/access.log
- DEFAULT_STORE_LOG = $(DEFAULT_LOG_PREFIX)/store.log
--DEFAULT_PID_FILE = $(DEFAULT_LOG_PREFIX)/squid.pid
-+DEFAULT_PID_FILE = $(localstatedir)/run/squid.pid
- DEFAULT_NETDB_FILE = $(DEFAULT_LOG_PREFIX)/netdb.state
--DEFAULT_SWAP_DIR = $(localstatedir)/cache
-+DEFAULT_SWAP_DIR = $(localstatedir)/cache/squid
- DEFAULT_PINGER = $(libexecdir)/`echo pinger | sed '$(transform);s/$$/$(EXEEXT)/'`
- DEFAULT_UNLINKD = $(libexecdir)/`echo unlinkd | sed '$(transform);s/$$/$(EXEEXT)/'`
- DEFAULT_DISKD = $(libexecdir)/`echo diskd-daemon | sed '$(transform);s/$$/$(EXEEXT)/'`
-diff -Naur squid-2.7.STABLE2-orig/src/cf.data.pre squid-2.7.STABLE2/src/cf.data.pre
---- squid-2.7.STABLE2-orig/src/cf.data.pre 2008-05-31 16:49:45.000000000 -0400
-+++ squid-2.7.STABLE2/src/cf.data.pre 2008-06-09 21:35:43.000000000 -0400
-@@ -3749,7 +3749,7 @@
-
- NAME: cache_effective_user
- TYPE: string
--DEFAULT: nobody
-+DEFAULT: proxy
- LOC: Config.effectiveUser
- DOC_START
- If you start Squid as root, it will change its effective/real
-@@ -3763,7 +3763,7 @@
-
- NAME: cache_effective_group
- TYPE: string
--DEFAULT: none
-+DEFAULT: proxy
- LOC: Config.effectiveGroup
- DOC_START
- If you want Squid to run with a specific GID regardless of
diff --git a/extra/swfdec-mozilla/PKGBUILD b/extra/swfdec-mozilla/PKGBUILD
deleted file mode 100644
index d477c34be..000000000
--- a/extra/swfdec-mozilla/PKGBUILD
+++ /dev/null
@@ -1,21 +0,0 @@
-#$Id: PKGBUILD 17042 2008-10-24 15:55:09Z andyrtr $
-#Maintainer: Jan de Groot <jgc@archlinux.org>
-
-pkgname=swfdec-mozilla
-pkgver=0.8.2
-pkgrel=1
-pkgdesc="free plugin for Mozilla browsers that uses the Swfdec library for playing SWF files"
-arch=('i686' 'x86_64' 'mips64el')
-url="http://swfdec.freedesktop.org"
-license=('LGPL')
-depends=("swfdec>=$pkgver")
-source=(http://swfdec.freedesktop.org/download/swfdec-mozilla/0.8/${pkgname}-${pkgver}.tar.gz)
-options=('!libtool')
-md5sums=('716632e0d35b3c1582c180569ba30346')
-
-build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr --disable-static --with-plugin-dir=/usr/lib/mozilla/plugins/
- make || return 1
- make DESTDIR=${startdir}/pkg install
-}
diff --git a/extra/swfdec/PKGBUILD b/extra/swfdec/PKGBUILD
deleted file mode 100644
index d651e0497..000000000
--- a/extra/swfdec/PKGBUILD
+++ /dev/null
@@ -1,25 +0,0 @@
-#$Id: PKGBUILD 64546 2010-01-21 03:43:49Z eric $
-#Maintainer: Andreas Radke <andyrtr@archlinux.org>
-
-pkgname=swfdec
-pkgver=0.8.4
-pkgrel=2
-pkgdesc="free library for decoding and rendering Flash animations"
-arch=('i686' 'x86_64' 'mips64el')
-url="http://swfdec.freedesktop.org"
-license=('LGPL')
-depends=('alsa-lib>=1.0.18' 'liboil>=0.3.15' 'gtk2>=2.14.6' 'libsoup>=2.24.2.1-1')
-makedepends=('pkgconfig' 'gstreamer0.10-ffmpeg>=0.10.6-1')
-optdepends=('gstreamer0.10-base: required for various audio and video formats'
- 'gstreamer0.10-ffmpeg: most common audio/video format for internet flash')
-source=(http://swfdec.freedesktop.org/download/swfdec/0.8/${pkgname}-${pkgver}.tar.gz)
-md5sums=('aece501d0e73f3e564200a44ec03c385')
-options=('!libtool' '!emptydirs')
-
-build() {
- cd ${startdir}/src/${pkgname}-${pkgver}
- ./configure --prefix=/usr --disable-static --enable-gtk \
- --enable-gstreamer --enable-soup --with-audio=alsa
- make || return 1
- make DESTDIR=${startdir}/pkg install || return 1
-}
diff --git a/extra/trayer/PKGBUILD b/extra/trayer/PKGBUILD
index 844d36bb4..fc5a39222 100644
--- a/extra/trayer/PKGBUILD
+++ b/extra/trayer/PKGBUILD
@@ -1,23 +1,31 @@
-# $Id: PKGBUILD 15775 2008-10-18 20:40:50Z eric $
-# Maintainer: Thayer Williams <thayer@archlinux.org>
+# $Id: PKGBUILD 122890 2011-05-07 04:26:20Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=trayer
pkgver=1.0
-pkgrel=4
-pkgdesc="Swallows GTK 1.2/2.x application docklets, and KDE docklets."
+pkgrel=5
+pkgdesc="A lightweight GTK2-based systray"
arch=('i686' 'x86_64' 'mips64el')
url="https://gna.org/projects/fvwm-crystal/"
license=('GPL' 'MIT')
-depends=('gtk2' 'libxmu')
+depends=('gtk2')
+makedepends=('libxmu')
options=('!makeflags')
-source=(http://download.gna.org/fvwm-crystal/trayer/$pkgver/$pkgname-$pkgver.tar.gz
+source=(http://download.gna.org/fvwm-crystal/trayer/${pkgver}/${pkgname}-${pkgver}.tar.gz
trayer.diff)
-md5sums=('e1b0b6464f991f2c296561e377585867' '7f66eee885563871f9f76646bca6b14d')
+md5sums=('e1b0b6464f991f2c296561e377585867'
+ '7f66eee885563871f9f76646bca6b14d')
build() {
- cd $startdir/src/$pkgname-$pkgver
- patch -Np0 -i ${startdir}/src/trayer.diff || return 1
- make || return 1
- make PREFIX=$startdir/pkg/usr install
- install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/LICENSE
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 -i ../trayer.diff
+ sed -i 's/$(LIBS) $(OBJ) $(SYSTRAYOBJ)/$(OBJ) $(SYSTRAYOBJ) $(LIBS)/' Makefile
+ make CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make PREFIX="${pkgdir}/usr" install
+ install -D -m644 README "${pkgdir}/usr/share/doc/${pkgname}/README"
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
diff --git a/extra/xbill/PKGBUILD b/extra/xbill/PKGBUILD
index 0b2e56693..7b9503c78 100644
--- a/extra/xbill/PKGBUILD
+++ b/extra/xbill/PKGBUILD
@@ -1,35 +1,39 @@
-# $Id: PKGBUILD 22212 2008-12-23 06:11:22Z eric $
-# Maintainer: Arjan Timmerman <arjan@archlinux.org>
-# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# $Id: PKGBUILD 122895 2011-05-07 05:36:47Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=xbill
pkgver=2.1
-pkgrel=6
-pkgdesc="Xbill is a game that tests you reflexes as you seek and destroy all forms of Bill"
+pkgrel=7
+pkgdesc="A game that tests your reflexes as you seek and destroy all forms of Bill"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.xbill.org/"
license=('GPL')
-depends=('xaw3d>=1.5E' 'libxaw')
+depends=('xaw3d')
+makedepends=('libxaw')
install=xbill.install
-source=(http://www.xbill.org/download/$pkgname-$pkgver.tar.gz)
+source=(http://www.xbill.org/download/${pkgname}-${pkgver}.tar.gz)
md5sums=('585e4866b15255a24203db9959407b2f')
build() {
- cd $srcdir/$pkgname-$pkgver
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr --mandir=/usr/share/man --localstatedir=/var/games \
- --disable-motif --enable-athena --disable-gtk || return 1
- make || return 1
- make DESTDIR=$pkgdir install || return 1
+ --disable-motif --enable-athena --disable-gtk
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
# set appropriate permissions and destinations
- chown root:games $pkgdir/usr/bin/xbill
- chmod 2755 $pkgdir/usr/bin/xbill
+ chown root:games "${pkgdir}/usr/bin/xbill"
+ chmod 2755 "${pkgdir}/usr/bin/xbill"
- chown root:games $pkgdir/var/games
- chmod 775 $pkgdir/var/games
- chown root:games $pkgdir/var/games/xbill
- chmod 775 $pkgdir/var/games/xbill
+ chown root:games "${pkgdir}/var/games"
+ chmod 775 "${pkgdir}/var/games"
+ chown root:games "${pkgdir}/var/games/xbill"
+ chmod 775 "${pkgdir}/var/games/xbill"
# Handle the scores file creation in the install script
- rm $pkgdir/var/games/xbill/scores
+ rm "${pkgdir}/var/games/xbill/scores"
}
diff --git a/extra/xbill/xbill.install b/extra/xbill/xbill.install
index 014c0d54b..b68d88071 100644
--- a/extra/xbill/xbill.install
+++ b/extra/xbill/xbill.install
@@ -1,6 +1,7 @@
pre_install() {
- if [ ! -e var/games/xbill/scores ]; then
- [ -e usr/var/xbill/scores ] && mv usr/var/xbill/scores var/games/xbill/scores
+ if [ ! -e var/games/xbill/scores -a -e usr/var/xbill/scores ]; then
+ mkdir -p var/games/xbill
+ mv usr/var/xbill/scores var/games/xbill/scores
fi
}
diff --git a/extra/xchat-gnome/PKGBUILD b/extra/xchat-gnome/PKGBUILD
deleted file mode 100644
index 94c6b5c40..000000000
--- a/extra/xchat-gnome/PKGBUILD
+++ /dev/null
@@ -1,50 +0,0 @@
-# $Id: PKGBUILD 112861 2011-03-07 10:29:01Z eric $
-# Maintainer: Allan McRae <allan@archlinux.org>
-# Contributor: Jan de Groot <jgc@archlinux.org>
-
-pkgname=xchat-gnome
-pkgver=0.26.1
-pkgrel=5
-pkgdesc="GNOME frontend to the popular X-Chat IRC client."
-arch=('i686' 'x86_64' 'mips64el')
-license=('GPL')
-url="http://xchat-gnome.navi.cx/"
-depends=('libgnomeui>=2.18.1-2' 'libsexy>=0.1.11' 'gconf>=2.18.0.1-4'
- 'hicolor-icon-theme' 'desktop-file-utils' 'libcanberra' 'libsm')
-makedepends=('gettext' 'perlxml' 'python2' 'tcl' 'libnotify' 'gnome-doc-utils>=0.10.3'
- 'intltool' 'pkg-config')
-optdepends=('libnotify: notifications'
- 'python2: plugin'
- 'tcl: plugin')
-options=('!libtool')
-install=xchat-gnome.install
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.26/${pkgname}-${pkgver}.tar.gz
- gtk2-2.20.patch xchat-gnome-0.26.1-deprecated-symbol.patch)
-md5sums=('e355d71d76cd97a0764e37bfacf09101' 'dafc2536a0c5ee3f8015af81fce69656'\
- 'f82417277f0b5e83334147c4bf63d531')
-sha1sums=('303bfbf2f1bda83fbc4edab148df4764cb4b8998' 'f1bfc5af50be7c10a9db96be20185325636d8da9'\
- '9aa0abc4b7999e09cafdeb8da1ad4641552a421b')
-
-build() {
- cd "$srcdir/${pkgname}-${pkgver}"
- patch -Np1 -i "$srcdir/gtk2-2.20.patch"
- patch -Np1 -i "$srcdir/xchat-gnome-0.26.1-deprecated-symbol.patch"
- sed -i 's/notify_notification_new (summary, escaped, NULL, NULL);/notify_notification_new (summary, escaped, NULL);/' plugins/notify-osd/notify-osd.c
- sed -i -e "s/ /\t/" src/common/dbus/Makefile.in
-
- ./configure --prefix=/usr --sysconfdir=/etc \
- --localstatedir=/var --disable-static \
- --enable-ipv6 --enable-shm \
- --disable-gtkfe --disable-scrollkeeper
- make
-}
-
-package() {
- cd "$srcdir/${pkgname}-${pkgver}"
- make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
-
- install -d "$pkgdir/usr/share/gconf/schemas"
- gconf-merge-schema "$pkgdir/usr/share/gconf/schemas/${pkgname}.schemas" \
- "$pkgdir"/etc/gconf/schemas/*.schemas
- rm -f "$pkgdir"/etc/gconf/schemas/*.schemas
-}
diff --git a/extra/xchat-gnome/gtk2-2.20.patch b/extra/xchat-gnome/gtk2-2.20.patch
deleted file mode 100644
index 7a5dcedf2..000000000
--- a/extra/xchat-gnome/gtk2-2.20.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/fe-gnome.c xchat-gnome-0.26.1/src/fe-gnome/fe-gnome.c
---- xchat-gnome-0.26.1.OLD/src/fe-gnome/fe-gnome.c 2008-09-07 09:18:45.000000000 -0400
-+++ xchat-gnome-0.26.1/src/fe-gnome/fe-gnome.c 2010-03-28 16:16:52.181405173 -0400
-@@ -753,7 +753,7 @@ fe_gui_info (session * sess, int info_ty
- {
- switch (info_type) {
- case 0:
-- if (!GTK_WIDGET_VISIBLE (GTK_WINDOW (gui.main_window))) {
-+ if (!gtk_widget_get_visible (GTK_WIDGET (gui.main_window))) {
- return 2;
- }
- if (gtk_window_is_active (GTK_WINDOW (gui.main_window))) {
-diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/find-bar.c xchat-gnome-0.26.1/src/fe-gnome/find-bar.c
---- xchat-gnome-0.26.1.OLD/src/fe-gnome/find-bar.c 2007-03-09 10:42:57.000000000 -0500
-+++ xchat-gnome-0.26.1/src/fe-gnome/find-bar.c 2010-03-28 16:26:24.300405158 -0400
-@@ -247,7 +247,7 @@ find_bar_close (FindBar *bar)
- {
- gint position;
-
-- if (!GTK_WIDGET_VISIBLE (bar)) {
-+ if (!gtk_widget_get_visible (GTK_WIDGET (bar))) {
- return;
- }
-
-diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/text-entry.c xchat-gnome-0.26.1/src/fe-gnome/text-entry.c
---- xchat-gnome-0.26.1.OLD/src/fe-gnome/text-entry.c 2008-09-07 10:02:45.000000000 -0400
-+++ xchat-gnome-0.26.1/src/fe-gnome/text-entry.c 2010-03-28 16:39:48.755153605 -0400
-@@ -667,7 +667,7 @@ text_entry_set_current (TextEntry *entry
- char *selection = NULL, *text = NULL;
- int start, end;
-
-- g_return_if_fail (GTK_WIDGET_REALIZED (widget));
-+ g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (widget)));
-
- if (sess == priv->current) {
- return;
-diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/userlist-gui.c xchat-gnome-0.26.1/src/fe-gnome/userlist-gui.c
---- xchat-gnome-0.26.1.OLD/src/fe-gnome/userlist-gui.c 2008-10-13 17:02:16.000000000 -0400
-+++ xchat-gnome-0.26.1/src/fe-gnome/userlist-gui.c 2010-03-28 16:47:55.703154452 -0400
-@@ -261,12 +261,12 @@ userlist_gui_show (void)
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gui.userlist_toggle), TRUE);
-
-- if (!GTK_WIDGET_REALIZED (gui.userlist_window)) {
-+ if (!gtk_widget_get_realized (GTK_WIDGET (gui.userlist_window))) {
- gtk_widget_realize (gui.userlist_window);
- }
- gtk_widget_size_request (gui.userlist, &request);
-
-- if (GTK_WIDGET_REALIZED (gui.userlist_toggle))
-+ if (gtk_widget_get_realized (GTK_WIDGET (gui.userlist_toggle)))
- anchor_widget = gui.userlist_toggle;
- else
- anchor_widget = gui.main_window;
-diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/xtext.c xchat-gnome-0.26.1/src/fe-gnome/xtext.c
---- xchat-gnome-0.26.1.OLD/src/fe-gnome/xtext.c 2009-01-16 08:17:31.000000000 -0500
-+++ xchat-gnome-0.26.1/src/fe-gnome/xtext.c 2010-03-28 16:57:17.441402617 -0400
-@@ -1086,7 +1086,7 @@ gtk_xtext_size_allocate (GtkWidget * wid
- xtext->avoid_trans = FALSE;
-
- widget->allocation = *allocation;
-- if (GTK_WIDGET_REALIZED (widget))
-+ if (gtk_widget_get_realized (GTK_WIDGET (widget)))
- {
- xtext->buffer->window_width = allocation->width;
- xtext->buffer->window_height = allocation->height;
-@@ -4113,7 +4113,7 @@ gtk_xtext_set_palette (GtkXText * xtext,
- xtext->palette[i] = palette[i].pixel;
- }
-
-- if (GTK_WIDGET_REALIZED (xtext))
-+ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
- {
- xtext_set_fg (xtext, xtext->fgc, XTEXT_FG);
- xtext_set_bg (xtext, xtext->fgc, XTEXT_BG);
-@@ -4211,7 +4211,7 @@ gtk_xtext_set_font (GtkXText *xtext, cha
-
- gtk_xtext_fix_indent (xtext->buffer);
-
-- if (GTK_WIDGET_REALIZED (xtext))
-+ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
- gtk_xtext_recalc_widths (xtext->buffer, TRUE);
-
- return TRUE;
-@@ -4248,7 +4248,7 @@ gtk_xtext_set_background (GtkXText * xte
- if (trans)
- {
- xtext->shaded = shaded;
-- if (GTK_WIDGET_REALIZED (xtext))
-+ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
- gtk_xtext_load_trans (xtext);
- return;
- }
-@@ -4260,14 +4260,14 @@ gtk_xtext_set_background (GtkXText * xte
- if (pixmap != 0)
- {
- g_object_ref (pixmap);
-- if (GTK_WIDGET_REALIZED (xtext))
-+ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
- {
- gdk_gc_set_tile (xtext->bgc, pixmap);
- gdk_gc_set_ts_origin (xtext->bgc, 0, 0);
- xtext->ts_x = xtext->ts_y = 0;
- gdk_gc_set_fill (xtext->bgc, GDK_TILED);
- }
-- } else if (GTK_WIDGET_REALIZED (xtext))
-+ } else if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
- {
- g_object_unref (xtext->bgc);
- val.subwindow_mode = GDK_INCLUDE_INFERIORS;
-@@ -4516,7 +4516,7 @@ gtk_xtext_render_page (GtkXText * xtext)
- int subline;
- int startline = xtext->adj->value;
-
-- if(!GTK_WIDGET_REALIZED(xtext))
-+ if(!gtk_widget_get_realized (GTK_WIDGET (xtext)))
- return;
-
- if (xtext->buffer->indent < MARGIN)
-@@ -4636,7 +4636,7 @@ gtk_xtext_render_page (GtkXText * xtext)
- void
- gtk_xtext_refresh (GtkXText * xtext, int do_trans)
- {
-- if (GTK_WIDGET_REALIZED (GTK_WIDGET (xtext)))
-+ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
- {
- #if defined(USE_XLIB) || defined(WIN32)
- if (xtext->transparent && do_trans)
-@@ -5204,7 +5204,7 @@ gtk_xtext_buffer_show (GtkXText *xtext,
- xtext->io_tag = 0;
- }
-
-- if (!GTK_WIDGET_REALIZED (GTK_WIDGET (xtext)))
-+ if (!gtk_widget_get_realized (GTK_WIDGET (xtext)))
- gtk_widget_realize (GTK_WIDGET (xtext));
-
- gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &w, &h);
diff --git a/extra/xchat-gnome/xchat-gnome-0.26.1-deprecated-symbol.patch b/extra/xchat-gnome/xchat-gnome-0.26.1-deprecated-symbol.patch
deleted file mode 100644
index 5bf1e4ef5..000000000
--- a/extra/xchat-gnome/xchat-gnome-0.26.1-deprecated-symbol.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 8d35b36baa8204b68c9520ec92327e34c1d7c580 Mon Sep 17 00:00:00 2001
-From: Ritesh Khadgaray <khadgaray@gmail.com>
-Date: Sun, 04 Jul 2010 09:52:07 +0000
-Subject: remove deprecated GTK+ symbols, GTK_WIDGET_SET_FLAGS.
-
----
-diff --git a/src/fe-gnome/xtext.c b/src/fe-gnome/xtext.c
-index 92562a3..51503f8 100644
---- a/src/fe-gnome/xtext.c
-+++ b/src/fe-gnome/xtext.c
-@@ -963,7 +963,7 @@ gtk_xtext_realize (GtkWidget * widget)
- GdkColor col;
- GdkColormap *cmap;
-
-- GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
-+ gtk_widget_set_realized (widget, TRUE);
- xtext = GTK_XTEXT (widget);
-
- attributes.x = widget->allocation.x;
---
-cgit v0.8.3.1
-
diff --git a/extra/xchat-gnome/xchat-gnome.install b/extra/xchat-gnome/xchat-gnome.install
deleted file mode 100644
index b0816ece3..000000000
--- a/extra/xchat-gnome/xchat-gnome.install
+++ /dev/null
@@ -1,24 +0,0 @@
-pkgname=xchat-gnome
-
-post_install() {
- usr/sbin/gconfpkg --install ${pkgname}
- gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
- update-desktop-database -q
-}
-
-pre_upgrade() {
- pre_remove $1
-}
-
-post_upgrade() {
- post_install $1
-}
-
-pre_remove() {
- usr/sbin/gconfpkg --uninstall ${pkgname}
-}
-
-post_remove() {
- gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
- update-desktop-database -q
-}
diff --git a/extra/xchm/PKGBUILD b/extra/xchm/PKGBUILD
index d870cc608..c74241a47 100644
--- a/extra/xchm/PKGBUILD
+++ b/extra/xchm/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 120950 2011-04-27 19:00:34Z giovanni $
+# $Id: PKGBUILD 122945 2011-05-07 11:59:58Z giovanni $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
pkgname=xchm
-pkgver=1.19
+pkgver=1.20
pkgrel=1
pkgdesc="A cross-platform GUI front-end to chmlib"
arch=('i686' 'x86_64' 'mips64el')
@@ -13,7 +13,7 @@ install=xchm.install
source=(http://downloads.sourceforge.net/sourceforge/xchm/${pkgname}-${pkgver}.tar.gz
xchm.desktop
xchm.xml)
-md5sums=('c9d65971801e044d51476f57e91909fc'
+md5sums=('85943645d20af536704a20b58ebd5849'
'31fb9692b9ee9f2a205f58b9ff4bc4fe'
'4102b0a393f5c60236143cc034664dd0')
diff --git a/extra/xfce4-xfapplet-plugin/PKGBUILD b/extra/xfce4-xfapplet-plugin/PKGBUILD
deleted file mode 100644
index 517f78b81..000000000
--- a/extra/xfce4-xfapplet-plugin/PKGBUILD
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id: PKGBUILD 105796 2011-01-11 20:47:13Z andyrtr $
-# Maintainer:
-# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
-
-pkgname=xfce4-xfapplet-plugin
-pkgver=0.1.0
-pkgrel=7
-pkgdesc="plugin that allows to use gnome applets in the Xfce4 panel"
-arch=('i686' 'x86_64' 'mips64el')
-license=('GPL2')
-url="http://xfce-goodies.berlios.de/"
-groups=('xfce4-goodies')
-depends=('xfce4-panel' 'libxfcegui4' 'gnome-panel' 'gnome-panel-bonobo')
-makedepends=('')
-source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.1/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('6a06c44b18a97626f44a240ad3bc3244')
-
-build() {
- cd ${srcdir}/${pkgname}-${pkgver}
- ./configure --prefix=/usr \
- --sysconfdir=/etc \
- --libexecdir=/usr/lib/ \
- --localstatedir=/var \
- --disable-static \
- --disable-debug
- make
-}
-
-package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- make DESTDIR=${pkgdir} install
-}