Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to devel-xorg-modular grimoire by Treeve Jelbert (a2214042277b4a009f6220cb290911d21ac7d203)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Treeve Jelbert <scm AT sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to devel-xorg-modular grimoire by Treeve Jelbert (a2214042277b4a009f6220cb290911d21ac7d203)
  • Date: Sat, 4 Aug 2012 02:31:38 -0500

GIT changes to devel-xorg-modular grimoire by Treeve Jelbert
<treeve AT sourcemage.org>:

archive-libs/lzo/BUILD | 3
archive-libs/lzo/DETAILS | 1
archive-libs/lzo/HISTORY | 4
audio-players/qmmp/DETAILS | 4
audio-players/qmmp/HISTORY | 3
crypto/cryptsetup-luks/DETAILS | 4
crypto/cryptsetup-luks/HISTORY | 3
database/virtuoso/DETAILS | 4
database/virtuoso/HISTORY | 3
dev/null |binary
devel/oprofile/DETAILS | 4
devel/oprofile/HISTORY | 4
disk/partclone/DETAILS | 4
disk/partclone/HISTORY | 3
disk/udisks2/DEPENDS | 2
disk/udisks2/DETAILS | 4
disk/udisks2/HISTORY | 4
ftp/proftpd/BUILD | 39
ftp/proftpd/CONFIGURE | 158 ++
ftp/proftpd/DEPENDS | 112 +
ftp/proftpd/DETAILS | 4
ftp/proftpd/HISTORY | 16
ftp/proftpd/PRE_BUILD | 6
ftp/proftpd/init.d/proftpd | 8
ftp/proftpd/ldap-cert.patch | 286 ++++
java/antlr/HISTORY | 4
java/antlr/PRE_SUB_DEPENDS | 6
java/antlr/REPAIR^all^PRE_SUB_DEPENDS | 6
java/antlr/SUB_DEPENDS | 6
kde4-apps/FUNCTIONS | 2
kde4-apps/KDE_DEPENDS | 6
kde4-bindings/FUNCTIONS | 2
kde4-edu/FUNCTIONS | 2
kde4-graphics/FUNCTIONS | 2
kde4-look/FUNCTIONS | 2
kde4/FUNCTIONS | 2
kde4/HISTORY | 6
kde4/KDE_DEPENDS | 6
kde4/kdepim4/DEPENDS | 27
kde4/kdepim4/DETAILS | 4
kde4/kdepim4/HISTORY | 9
kde4/kdepim4/PRE_BUILD | 4
kde4/kdepim4/kdepim-4.8.4-boost-1.48.patch | 11
kde4/kdepimlibs4/DEPENDS | 10
kde4/kdepimlibs4/DETAILS | 4
kde4/kdepimlibs4/HISTORY | 5
kde4/kdesdk4/BUILD | 7
kde4/kdesdk4/CONFIGURE | 3
kde4/kdesdk4/DEPENDS | 22
kde4/kdesdk4/DETAILS | 4
kde4/kdesdk4/HISTORY | 15
libs/tzdata/DETAILS | 4
libs/tzdata/HISTORY | 3
net/dhcp/DETAILS | 4
net/dhcp/HISTORY | 4
net/iptables/DETAILS | 2
net/iptables/HISTORY | 3
net/tinc/BUILD | 3
net/tinc/CONFIGURE | 3
net/tinc/DEPENDS | 12
net/tinc/DETAILS | 12
net/tinc/HISTORY | 9
net/tinc/INSTALL | 6
net/tinc/PREPARE | 5
net/tinc/init.d/tinc | 16
net/tinc/init.d/tinc.conf | 3
printer/cups-filters/DEPENDS | 1
printer/cups-filters/HISTORY | 3
printer/pycups/HISTORY | 4
printer/pycups/PRE_BUILD | 4
printer/pycups/pycups-1.9.61-cups-1.6.patch | 1675
++++++++++++++++++++++++++++
python-pypi/lxml/DETAILS | 2
python-pypi/lxml/HISTORY | 3
ruby-raa/rake/DETAILS | 7
ruby-raa/rake/HISTORY | 5
science/mkgmap/DETAILS | 4
science/mkgmap/HISTORY | 3
video/handbrake/DETAILS | 2
video/handbrake/HISTORY | 4
video/handbrake/HandBrake-0.9.6.tar.bz2.sig | 0
video/handbrake/HandBrake-0.9.8.tar.bz2.sig |binary
xfce/ristretto/DEPENDS | 7
xfce/ristretto/DETAILS | 4
xfce/ristretto/HISTORY | 4
84 files changed, 2540 insertions(+), 141 deletions(-)

New commits:
commit 2f48bb6512d09a96748998923824824bb417b0d4
Author: Eric Sandall <sandalle AT sourcemage.org>
Commit: Eric Sandall <sandalle AT sourcemage.org>

handbrake: Updated to 0.9.6, matches upstream MD5

commit 3f5f558c69646bc7a4317358b00cf496581cf9af
Author: Sukneet Basuta <sukneet AT sourcemage.org>
Commit: Sukneet Basuta <sukneet AT sourcemage.org>

tzdata: => 2012e

commit 412c7a58a7b7f9db3e76eea2d99f4b6e516b3bd7
Author: Sukneet Basuta <sukneet AT sourcemage.org>
Commit: Sukneet Basuta <sukneet AT sourcemage.org>

rake: => 0.9.2.2
SOURCE_URL changed to debian since upstream does not have a tarball.

Updated because 0.8.7 wouldn't compile for me with ruby 1.9

commit 9670ad2ed82d495eee4e4db6f68e181fb1a9e449
Author: Treeve Jelbert <treeve AT sourcemage.org>
Commit: Treeve Jelbert <treeve AT sourcemage.org>

virtuoso: => 6.1.6

commit a402c716cf0956cbc4a3dba2fc036efa04133e64
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

Revert "dhcpcd: => 5.6.1"

This reverts commit 613a43f36dae78076e1d586c5632cff10b208684.

We don't force experimental[0] releases of software (especially of such
essential software), which goes to stable branch regularly.

[0] http://roy.marples.name/projects/dhcpcd/wiki/DhcpcdDownload

commit a80994625bdad912f96045b0b20efeb9b760332f
Author: Tommy Boatman <tboatman AT sourcemage.org>
Commit: Tommy Boatman <tboatman AT sourcemage.org>

oprofile: version 0.9.7 upgrade to deal with 3.x kernels

commit 613a43f36dae78076e1d586c5632cff10b208684
Author: Treeve Jelbert <treeve AT sourcemage.org>
Commit: Treeve Jelbert <treeve AT sourcemage.org>

dhcpcd: => 5.6.1

commit 28f9181725bb4f01e2307c04716cbff920e58571
Author: Florian Franzmann <siflfran AT hawo.stw.uni-erlangen.de>
Commit: Florian Franzmann <siflfran AT hawo.stw.uni-erlangen.de>

science/mkgmap: version 2311

commit bc2bb9a22fc9177d4594773dda50f8f840d67173
Author: Treeve Jelbert <treeve AT sourcemage.org>
Commit: Treeve Jelbert <treeve AT sourcemage.org>

cups-filters - add depends bc

commit 238d2a3d29a082b7d276e75699d77d27c9232e9d
Author: Treeve Jelbert <treeve AT sourcemage.org>
Commit: Treeve Jelbert <treeve AT sourcemage.org>

partclone: => 0.2.51

commit cdd3d5247d489e19d7b15298d5b7911cb28f7c99
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

proftpd: => 1.3.4b

commit 4da9bc60cab46fb1274f48328c40566a628f3202
Author: Ladislav Hagara <hgr AT vabo.cz>
Commit: Ladislav Hagara <hgr AT vabo.cz>

qmmp 0.6.2

commit 38df00fd5988dfc5ef708a570dbd8d560e4985fa
Author: Ladislav Hagara <hgr AT vabo.cz>
Commit: Ladislav Hagara <hgr AT vabo.cz>

cryptsetup-luks 1.5.0

commit a95497806eb31a8ddc81438f437bcf50a2ab1799
Author: Ladislav Hagara <hgr AT vabo.cz>
Commit: Ladislav Hagara <hgr AT vabo.cz>

iptables 1.4.15

commit ce5efc79c462fe263b0c82981f1d6e4bb50b17cf
Author: Sukneet Basuta <sukneet AT sourcemage.org>
Commit: Sukneet Basuta <sukneet AT sourcemage.org>

pycups: apply patch to fix compatibility with cups 1.6 (fixes #417)
* pycups-1.9.61-cups-1.6.patch: from upstream git, fixes pycups for cups
1.6

commit ff2503d402d8773df0cea6c22361611617a67632
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

tinc: => 1.0.19

commit e3db9690eb4e9f017869ba82551d444ee0b76665
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

lzo: build shared library

commit 17ec22b4dbe1ba0622a6e10e52a740665a303117
Author: Treeve Jelbert <treeve AT sourcemage.org>
Commit: Treeve Jelbert <treeve AT sourcemage.org>

udisks2: => 1.99.0

commit 5825fc1379fce202d6aac5866038612e2431f10b
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

lxml: => 2.3.5

commit 6066097f9c88ccc7ec55af3c5252329022bed69f
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

proftpd: corrected stop() in init script

commit 89752a2b528752fb620c32f192dff60599f65cf8
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

proftpd: redefine localstatedir to /var/run

commit 8f263101003fb52446deb59c47bce498bb86107d
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

proftpd: refreshed the spell

commit 223544c5a8300404287384647f68a8d25e01bd5b
Author: Sukneet Basuta <sukneet AT sourcemage.org>
Commit: Sukneet Basuta <sukneet AT sourcemage.org>

kdepim4: => 4.8.4
* DEPENDS: added depends akonadi, zlib, strigi, libxslt.
Changed optional_depends gpgme, libassuan to depends.
Removed optional_depends qca2, libmal, gnokii.
Added optional_depends grantlee, dblatex
* PRE_BUILD: added, to apply boost patch
* kdepim-4.8.4-boost-1.48.patch: added, fixes compilation with boost >=
1.48

commit d77298634e78f9befeca0baa04b7a95549a9e4ac
Author: Sukneet Basuta <sukneet AT sourcemage.org>
Commit: Sukneet Basuta <sukneet AT sourcemage.org>

kdepimlibs4: => 4.8.4
* DEPENDS: added depends boost, gpgme, shared-mime-info,
shared-desktop-ontologies, soprano, libxsl

Moved kdepimlibs case from KDE_DEPENDS and added them to the spell. I
don't see a reason to put individual spell depends in KDE_DEPENDS.

commit c02da29fdfe6f587e2bd5165fad98f8ded962f74
Author: Sukneet Basuta <sukneet AT sourcemage.org>
Commit: Sukneet Basuta <sukneet AT sourcemage.org>

kdesdk4: use % instead of @ to pass cmake flags, as prepare_cmake_flags
handles this.

commit bbe2c33fc69930f1e6dfb9eb09b16af4679d9474
Author: Sukneet Basuta <sukneet AT sourcemage.org>
Commit: Sukneet Basuta <sukneet AT sourcemage.org>

kde4*/FUNCTIONS: added prepare_cmake_flags to default_build, to allow
passing cmake flags.
Added to default_build rather than each individual BUILD since all kde
spells use cmake.

commit 12c5327f27e274df88aa963816159dc5a05ede08
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

ristretto: => 0.6.2

commit 8b13b10f35784d86ca17e3b5fa48f3a866f62848
Author: Treeve Jelbert <treeve AT sourcemage.org>
Commit: Treeve Jelbert <treeve AT sourcemage.org>

kde4-apps/KDE_DEPENDS revert an invalid change

commit 600d6654ad05eb0eba73ca796423f595fa162b8b
Author: Sukneet Basuta <sukneet AT sourcemage.org>
Commit: Sukneet Basuta <sukneet AT sourcemage.org>

kdesdk4: => 4.8.4

* CONFIGURE: added query for umbrello

* DEPENDS: added depends strigi.
added depends libxslt, libxml2, & boost if umbrello enabled.
added optional_depends hunspell, qca2, antlr, kdebase4. Note
that : is replaced with @ in the flags since sorcery uses : as delimiters.
removed optional_depends db.

* BUILD: added, to add svn flags if SVN enabled/disabled.
replace @ with : in OPTS

commit 2674392074fb77c2d96190f9bb6658126529c541
Author: Sukneet Basuta <sukneet AT sourcemage.org>
Commit: Sukneet Basuta <sukneet AT sourcemage.org>

antlr: SUB_DEPENDS added to force JAVA optional_depends

commit 889a5030fb28cae043ef27ea770d2d869db3bbb1
Author: Vlad Glagolev <stealth AT sourcemage.org>
Commit: Vlad Glagolev <stealth AT sourcemage.org>

dhcp: => 4.2.4-P1 (security)

diff --git a/archive-libs/lzo/BUILD b/archive-libs/lzo/BUILD
new file mode 100755
index 0000000..6bf90bf
--- /dev/null
+++ b/archive-libs/lzo/BUILD
@@ -0,0 +1,3 @@
+OPTS="--enable-shared $OPTS" &&
+
+default_build
diff --git a/archive-libs/lzo/DETAILS b/archive-libs/lzo/DETAILS
index cde7026..32d0991 100755
--- a/archive-libs/lzo/DETAILS
+++ b/archive-libs/lzo/DETAILS
@@ -1,5 +1,6 @@
SPELL=lzo
VERSION=2.06
+ PATCHLEVEL=1

SOURCE_HASH=sha512:2369b87627c6f075b58b88189344989969050289185596db1174e6d918baa2b86e6076c8ec9cc68953df10c13bd1145d841603f26bde8a80111fb0d7091bf1c7
SOURCE=$SPELL-$VERSION.tar.gz
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION
diff --git a/archive-libs/lzo/HISTORY b/archive-libs/lzo/HISTORY
index 4435ac4..1378b50 100644
--- a/archive-libs/lzo/HISTORY
+++ b/archive-libs/lzo/HISTORY
@@ -1,3 +1,7 @@
+2012-07-31 Vlad Glagolev <stealth AT sourcemage.org>
+ * DETAILS: PATCHLEVEL=1
+ * BUILD: added, to build shared library
+
2011-10-14 Bor Kraljič <pyrobor AT ver.si>
* DETAILS: fixed long description wrap (scripted)

diff --git a/audio-players/qmmp/DETAILS b/audio-players/qmmp/DETAILS
index 93a5510..c1ff086 100755
--- a/audio-players/qmmp/DETAILS
+++ b/audio-players/qmmp/DETAILS
@@ -1,8 +1,8 @@
SPELL=qmmp
- VERSION=0.6.0
+ VERSION=0.6.2
SOURCE="${SPELL}-${VERSION}.tar.bz2"
SOURCE_URL[0]=http://${SPELL}.ylsoftware.com/files/${SOURCE}
-
SOURCE_HASH=sha512:63897d7b93a071a1b51a18063f453044013bee91c68b186e52a48aa08c84180a8914dcaf1b20fdb8554430fd99511485d4529608f1ae61704c7c0a591356be98
+
SOURCE_HASH=sha512:adf443969b024f085b9d65f2fdf0032bd083a61da628f5b5fef0d91588e37d33ee1b4ce48d9744070c164bbd80e3576375af4be46aba798fc26cf313656d0f63
SOURCE_DIRECTORY="${BUILD_DIRECTORY}/${SPELL}-${VERSION}"
WEB_SITE="http://qmmp.ylsoftware.com/";
LICENSE[0]="GPL"
diff --git a/audio-players/qmmp/HISTORY b/audio-players/qmmp/HISTORY
index 3b99b3c..cc55690 100644
--- a/audio-players/qmmp/HISTORY
+++ b/audio-players/qmmp/HISTORY
@@ -1,3 +1,6 @@
+2012-08-01 Ladislav Hagara <hgr AT vabo.cz>
+ * DETAILS: 0.6.2
+
2012-07-05 Ladislav Hagara <hgr AT vabo.cz>
* DETAILS: 0.6.0

diff --git a/crypto/cryptsetup-luks/DETAILS b/crypto/cryptsetup-luks/DETAILS
index edd3d44..b0030a7 100755
--- a/crypto/cryptsetup-luks/DETAILS
+++ b/crypto/cryptsetup-luks/DETAILS
@@ -1,9 +1,9 @@
SPELL=cryptsetup-luks
- VERSION=1.4.3
+ VERSION=1.5.0
SOURCE=cryptsetup-$VERSION.tar.bz2
SOURCE_DIRECTORY=$BUILD_DIRECTORY/cryptsetup-$VERSION
SOURCE_URL[0]=http://cryptsetup.googlecode.com/files/$SOURCE
-
SOURCE_HASH=sha512:e91ad9cda9549802e9ea5cec02273ee4bc1a040883650e903e91a07c8cce8131b0bda068fa3433d2b5b3b7470cf9481d73670267cd419ce2d7b0f673b3601ba3
+
SOURCE_HASH=sha512:a6db8fd043f4bba1bf796ce05c17003f6dfea0596048cb5a3e8cb33f8f994320b26deef9fc0bd8046265199c02abff9e92ab81d812f5e78beb7fdb93aa77312f
WEB_SITE=http://code.google.com/p/cryptsetup/
ENTERED=20060117
LICENSE[0]=GPL
diff --git a/crypto/cryptsetup-luks/HISTORY b/crypto/cryptsetup-luks/HISTORY
index cc28acf..f63726d 100644
--- a/crypto/cryptsetup-luks/HISTORY
+++ b/crypto/cryptsetup-luks/HISTORY
@@ -1,3 +1,6 @@
+2012-08-01 Ladislav Hagara <hgr AT vabo.cz>
+ * DETAILS: 1.5.0
+
2012-06-06 Ladislav Hagara <hgr AT vabo.cz>
* DETAILS: 1.4.3

diff --git a/database/virtuoso/DETAILS b/database/virtuoso/DETAILS
index 1c7b936..2dd249d 100755
--- a/database/virtuoso/DETAILS
+++ b/database/virtuoso/DETAILS
@@ -1,6 +1,6 @@
SPELL=virtuoso
- VERSION=6.1.5
-
SOURCE_HASH=sha512:957fa2bdd570e47999887475bcea3c97940d3ae986500c098e14582469dcce6ee6d8031f5fd9e6f4ca1e9b32e28a6015d1a3247144a2b28ae3845336248e32c5
+ VERSION=6.1.6
+
SOURCE_HASH=sha512:d423e872bce8737f60a348c89e24f20de5581e7b943856df534b4c86015e50969cbe46fe0c73eb0f1a29a1a45f2d7cebca98564ab38044f1f731f661635ded55
SOURCE=$SPELL-opensource-$VERSION.tar.gz
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-opensource-$VERSION
WEB_SITE=http://virtuoso.openlinksw.com/wiki/main/Main/
diff --git a/database/virtuoso/HISTORY b/database/virtuoso/HISTORY
index 8f9f580..1572e23 100644
--- a/database/virtuoso/HISTORY
+++ b/database/virtuoso/HISTORY
@@ -1,3 +1,6 @@
+2012-08-03 Treeve Jelbert <treeve AT sourcemage.org>
+ * DETAILS: version 6.1.6
+
2012-03-17 Treeve Jelbert <treeve AT sourcemage.org>
* DETAILS: version 6.1.5
reorder urls
diff --git a/devel/oprofile/DETAILS b/devel/oprofile/DETAILS
index 14cbccf..f2eeb82 100755
--- a/devel/oprofile/DETAILS
+++ b/devel/oprofile/DETAILS
@@ -1,6 +1,6 @@
SPELL=oprofile
- VERSION=0.9.6
-
SOURCE_HASH=sha512:dfc496255183d0413f534feaca86d42d38ce4e25ea9d29f9e5956721f30049e99b1f58b6b56e71e6d466be5e8204a7c867b1b3db4fe557774d8db7ad698cd04a

+ VERSION=0.9.7
+
SOURCE_HASH=sha512:9242525eb285e920e166315aa82907d55507055d520bf951d7203ed7a047c1627d211225211c303d9dd70e8ca24cfa003d1541226180f06396c2fede9ffeccaa

SOURCE=$SPELL-$VERSION.tar.gz
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION
SOURCE_URL[0]=$SOURCEFORGE_URL/$SPELL/$SOURCE
diff --git a/devel/oprofile/HISTORY b/devel/oprofile/HISTORY
index dc46a5b..6fd3c12 100644
--- a/devel/oprofile/HISTORY
+++ b/devel/oprofile/HISTORY
@@ -1,3 +1,7 @@
+2012-08-02 Tommy Boatman <tboatman AT sourcemage.org>
+ * DETAILS: 0.9.7 to handle 3.x kernels
+
+
2011-10-10 Bor Kraljič <pyrobor AT ver.si>
* DEPENDS: removed optional dependency on qt-x11

diff --git a/disk/partclone/DETAILS b/disk/partclone/DETAILS
index 5c6be6c..737208b 100755
--- a/disk/partclone/DETAILS
+++ b/disk/partclone/DETAILS
@@ -1,6 +1,6 @@
SPELL=partclone
- VERSION=0.2.50
-
SOURCE_HASH=sha512:77fc61cfea83045d5b6a6df3dab39dadd7f4a70e104730eb5f275fa754790a0565e580b2e08c4676825291130fdbb0ba4ce0890a4bd11582bcdb7e7aa6f60271
+ VERSION=0.2.51
+
SOURCE_HASH=sha512:2d88a9cef2deedc77cb87b42f9c372e45ad9b34e4f362a76d33ffe9b3d26d90ed6ade77db6f7704c2bb9af991fd3a3355c89db8ddfe69f5327c18f2263d96573
SOURCE=${SPELL}_${VERSION}.tar.gz
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION
SOURCE_URL[0]=$SOURCEFORGE_URL/${SPELL}/${SOURCE}
diff --git a/disk/partclone/HISTORY b/disk/partclone/HISTORY
index 4f04fb3..c7fe888 100644
--- a/disk/partclone/HISTORY
+++ b/disk/partclone/HISTORY
@@ -1,3 +1,6 @@
+2012-08-01 Treeve Jelbert <treeve AT sourcemage.org>
+ * DETAILS: version 0.2.51
+
2012-07-10 Treeve Jelbert <treeve AT sourcemage.org>
* DETAILS: version 0.2.50

diff --git a/disk/udisks2/DEPENDS b/disk/udisks2/DEPENDS
index d0cc91c..1c04bd4 100755
--- a/disk/udisks2/DEPENDS
+++ b/disk/udisks2/DEPENDS
@@ -1,7 +1,7 @@
depends pkgconfig &&
depends glib2 &&
depends udev &&
-depends libacl &&
+depends acl &&
depends libxslt &&
depends libatasmart &&
depends policykit &&
diff --git a/disk/udisks2/DETAILS b/disk/udisks2/DETAILS
index f31983f..29c54e2 100755
--- a/disk/udisks2/DETAILS
+++ b/disk/udisks2/DETAILS
@@ -1,6 +1,6 @@
SPELL=udisks2
- VERSION=1.97.0
-
SOURCE_HASH=sha512:6bf9c1acdb2f80f7ad9b2844310badeace7f2fdb5d9eb62f45b69f2d74b6310775cdf625cdb133e6a6aaacc299e6788a28edc9a93bc160814f583c559fcf4435
+ VERSION=1.99.0
+
SOURCE_HASH=sha512:943d8e2f0b15a8d1e69ebc16008bf19374df6ecc127347d9bdc5bb55ec83fde74e10ce471813da38fd692832bd0dbebc8449425ee41526b7d721374786df57a4
# SECURITY_PATCH=2
SOURCE="${SPELL//2}-${VERSION}.tar.bz2"
SOURCE_URL[0]=http://udisks.freedesktop.org/releases/$SOURCE
diff --git a/disk/udisks2/HISTORY b/disk/udisks2/HISTORY
index 48e8825..b2d19b4 100644
--- a/disk/udisks2/HISTORY
+++ b/disk/udisks2/HISTORY
@@ -1,3 +1,7 @@
+2012-07-31 Treeve Jelbert <treeve AT sourcemage.otg>
+ * DETAILS: 1.99.0
+ * DEPENDS: fix libacl => acl
+
2012-05-21 Treeve Jelbert <treeve AT sourcemage.otg>
* DETAILS: 1.97.0
* DEPENDS: gobject-introspection is optional
diff --git a/ftp/proftpd/BUILD b/ftp/proftpd/BUILD
index 7e44a7f..da079c3 100755
--- a/ftp/proftpd/BUILD
+++ b/ftp/proftpd/BUILD
@@ -1,26 +1,27 @@
-#if [[ $PROFTPD_DEVEL == "n" ]]; then
-if [[ -z $PROFTPD_CAPS ]]; then
- CFLAGS=${CFLAGS/-fPIC} &&
- CFLAGS=${CFLAGS/-DPIC} &&
- CXXFLAGS=${CXXFLAGS/-fPIC} &&
- CXXFLAGS=${CXXFLAGS/-DPIC}
-fi
-#fi &&
+if list_find "$PROFTPD_OPTS" "--disable-cap"; then
+ disable_pic
+fi &&

-sedit "s/ standalone/ inetd/" sample-configurations/basic.conf
&&
+if [[ $XINETD_INSTALLED ]]; then
+ sedit "s/ standalone/ inetd/" sample-configurations/basic.conf
+fi &&

-OPTS="${PROFTPD_CAPS} ${PROFTPD_MODS} ${OPTS}" &&
+local SQL_INC="." &&

-./configure --prefix=${INSTALL_ROOT}/usr \
- --sysconfdir=${INSTALL_ROOT}/etc \
- --localstatedir=${INSTALL_ROOT}/var/run \
- --mandir=$INSTALL_ROOT/usr/share/man \
- --enable-shadow \
- ${OPTS} &&
+if list_find "$PROFTPD_MODS" "mod_sql_mysql"; then
+ SQL_INC="$SQL_INC:$INSTALL_ROOT/usr/include/mysql"
+fi &&

-sedit 's:RUN_DIR.*"/var/run/proftpd":RUN_DIR "/var/run":' config.h &&
-sedit 's:rundir=/var/run/proftpd:rundir=/var/run:' Make.rules &&
+if list_find "$PROFTPD_MODS" "mod_sql_postgres"; then
+ SQL_INC="$SQL_INC:$INSTALL_ROOT/usr/include/postgresql"
+fi &&
+
+OPTS="${PROFTPD_OPTS} \
+ ${OPTS} \
+ --localstatedir=$INSTALL_ROOT/var/run \
+ --with-modules=${PROFTPD_MODS// /:} \
+ --with-includes=${SQL_INC}" &&

make_single &&
-make &&
+default_build &&
make_normal
diff --git a/ftp/proftpd/CONFIGURE b/ftp/proftpd/CONFIGURE
index 67b6db6..ac57f9c 100755
--- a/ftp/proftpd/CONFIGURE
+++ b/ftp/proftpd/CONFIGURE
@@ -1,40 +1,138 @@
-. $GRIMOIRE/FUNCTIONS &&
-#if [[ $PROFTPD_DEVEL == "n" ]]; then
+. $GRIMOIRE/FUNCTIONS &&
+
if [[ $(get_sorcery_kernel_config CONFIG_SECURITY) != y ]]; then
- config_query_option PROFTPD_CAPS \
- "You don't have capabilities enabled in your kernel, do you still \
- want to build them?" n "" "--disable-cap"
-fi
-#fi &&
+ config_query_option PROFTPD_OPTS "You don't have capabilities enabled in
your kernel, do you still want to build them?" n \
+ "--enable-cap" \
+ "--disable-cap"
+fi &&
+
+config_query_option PROFTPD_OPTS "Enable IPv6 support?" y \
+ "--enable-ipv6" \
+ "--disable-ipv6" &&
+
+config_query_option PROFTPD_OPTS "Enable use of ident (RFC1413) lookups?" y \
+ "--enable-ident" \
+ "--disable-ident" &&

-config_query_option PROFTPD_IP6 "enable IPv6 support?" \
-y "--enable-ipv6" "" &&
+config_query_option PROFTPD_OPTS "Enable sendfile support?" y \
+ "--enable-sendfile" \
+ "--disable-sendfile" &&

-config_query PROFTPD_MOD \
-"Choose optional user contributed modules to install?" n &&
+config_query_option PROFTPD_OPTS "Enable proftpd controls via ftpdctl?" n \
+ "--enable-ctrls" \
+ "--disable-ctrls" &&
+
+config_query PROFTPD_MOD "Choose optional user contributed modules to
install?" n &&

-#radius module failed (probably missing dep), all the others not in
-#the query are yet to be tried.
if [[ $PROFTPD_MOD == "y" ]]; then
- config_query_multi PROFTPD_MODS "Choose among this list:" \
- mod_ratio mod_readme mod_rewrite mod_tls mod_wrap \
- mod_sql mod_ldap &&
+ local MODULES="mod_copy \
+ mod_deflate \
+ mod_dynmasq \
+ mod_exec \
+ mod_ifsession \
+ mod_ifversion \
+ mod_load \
+ mod_qos \
+ mod_quotatab \
+ mod_ratio \
+ mod_readme \
+ mod_rewrite \
+ mod_sftp \
+ mod_site_misc \
+ mod_sql \
+ mod_tls \
+ mod_unique_id \
+ mod_wrap \
+ mod_wrap2" &&
+
+ if list_find "$PROFTPD_OPTS" "--enable-ctrls"; then
+ MODULES="mod_ban \
+ mod_ctrls_admin \
+ mod_shaper \
+ ${MODULES}"
+ fi &&
+
+ config_query_multi PROFTPD_MODS "Choose among this list:" ${MODULES} &&
+
+ if list_find "$PROFTPD_MODS" "mod_quotatab"; then
+ config_query PROFTPD_MOD_QUOTATAB_LDAP "Include LDAP support in
mod_quotatab?" n &&

- PROFTPD_MODS="--with-modules=`echo $PROFTPD_MODS | sed 's/\ /:/g'`" &&
+ if [[ $PROFTPD_MOD_QUOTATAB_LDAP == y ]]; then
+ list_add "PROFTPD_MODS" "mod_quotatab_ldap"
+ fi &&

- if [[ "x`echo $PROFTPD_MODS | grep sql`" != "x" ]]; then
- config_query_list PROFTPD_SQL \
- "You chose mod_sql, now which DBMS do you want:" mod_sql_mysql \
- mod_sql_postgres &&
+ config_query PROFTPD_MOD_QUOTATAB_RADIUS "Include RADIUS support in
mod_quotatab?" n &&

- if [[ "x${PROFTPD_SQL}" == "xmod_sql_mysql" ]]; then
- SQL_INC="/usr/include/mysql"
- else
- SQL_INC="/usr/include/postgresql"
+ if [[ $PROFTPD_MOD_QUOTATAB_RADIUS == y ]]; then
+ list_add "PROFTPD_MODS" "mod_quotatab_radius"
+ fi &&
+
+ config_query PROFTPD_MOD_QUOTATAB_SQL "Include SQL support in
mod_quotatab?" n &&
+
+ if ! list_find "$PROFTPD_MODS" "mod_sql"; then
+ list_add "PROFTPD_MODS" "mod_sql"
+ fi &&
+
+ if [[ $PROFTPD_MOD_QUOTATAB_SQL == y ]]; then
+ list_add "PROFTPD_MODS" "mod_quotatab_sql"
fi
-
- PROFTPD_MODS="${PROFTPD_MODS}:${PROFTPD_SQL} \
- --with-includes=${SQL_INC}"
- fi
-fi
+ fi &&
+
+ if list_find "$PROFTPD_MODS" "mod_sftp"; then
+ config_query PROFTPD_MOD_SFTP_SQL "Include SQL support in mod_sftp?" n &&
+
+ if ! list_find "$PROFTPD_MODS" "mod_sql"; then
+ list_add "PROFTPD_MODS" "mod_sql"
+ fi &&
+
+ if [[ $PROFTPD_MOD_SFTP_SQL == y ]]; then
+ list_add "PROFTPD_MODS" "mod_sftp_sql"
+ fi &&
+
+ config_query PROFTPD_MOD_SFTP_PAM "Include PAM support in mod_sftp?" n &&

+ if [[ $PROFTPD_MOD_SFTP_PAM == y ]]; then
+ list_add "PROFTPD_MODS" "mod_sftp_pam"
+ fi
+ fi &&
+
+ if list_find "$PROFTPD_MODS" "mod_wrap2"; then
+ config_query PROFTPD_MOD_WRAP2_FILE "Include file support in mod_wrap2?"
n &&
+
+ if [[ $PROFTPD_MOD_WRAP2_FILE == y ]]; then
+ list_add "PROFTPD_MODS" "mod_wrap2_file"
+ fi &&
+
+ config_query PROFTPD_MOD_WRAP2_SQL "Include SQL support in mod_wrap2?" n
&&
+
+ if ! list_find "$PROFTPD_MODS" "mod_sql"; then
+ list_add "PROFTPD_MODS" "mod_sql"
+ fi &&
+
+ if [[ $PROFTPD_MOD_WRAP2_SQL == y ]]; then
+ list_add "PROFTPD_MODS" "mod_wrap2_sql"
+ fi
+ fi &&
+
+ if list_find "$PROFTPD_MODS" "mod_sql"; then
+ config_query PROFTPD_MOD_SQL_PASSWD "Include passwd support in mod_sql?"
n &&
+
+ if [[ $PROFTPD_MOD_SQL_PASSWD == y ]]; then
+ list_add "PROFTPD_MODS" "mod_sql_passwd"
+ fi
+ fi &&
+
+ if list_find "$PROFTPD_MODS" "mod_tls"; then
+ config_query PROFTPD_MOD_TLS_MEMCACHE "Include memcache support in
mod_tls?" n &&
+
+ if [[ $PROFTPD_MOD_TLS_MEMCACHE == y ]]; then
+ list_add "PROFTPD_MODS" "mod_tls_memcache"
+ fi &&
+
+ config_query PROFTPD_MOD_TLS_SHMCACHE "Include SysV shared memory cache
support in mod_tls?" n &&
+
+ if [[ $PROFTPD_MOD_TLS_SHMCACHE == y ]]; then
+ list_add "PROFTPD_MODS" "mod_tls_shmcache"
+ fi
+ fi
+fi
diff --git a/ftp/proftpd/DEPENDS b/ftp/proftpd/DEPENDS
index f4c0dd2..a45290b 100755
--- a/ftp/proftpd/DEPENDS
+++ b/ftp/proftpd/DEPENDS
@@ -1,29 +1,111 @@
-if [[ "x`echo $PROFTPD_MODS | grep tls`" != "x" ]]; then
- depends openssl
+if list_find "$PROFTPD_MODS" "mod_deflate"; then
+ depends zlib
fi &&

-if [[ "x`echo $PROFTPD_MODS | grep wrap`" != "x" ]]; then
- depends tcp_wrappers
+if list_find "$PROFTPD_MODS" "mod_sql"; then
+ optional_depends MYSQL "" "" "for MySQL support in mod_sql" &&
+
+ if is_depends_enabled $SPELL $(get_spell_provider $SPELL MYSQL); then
+ list_add "PROFTPD_MODS" "mod_sql_mysql"
+ fi &&
+
+ optional_depends postgresql "" "" "for PostgreSQL support in mod_sql" &&
+
+ if is_depends_enabled $SPELL postgresql; then
+ list_add "PROFTPD_MODS" "mod_sql_postgres"
+ fi &&
+
+ optional_depends sqlite "" "" "for SQLite support in mod_sql" &&
+
+ if is_depends_enabled $SPELL sqlite; then
+ list_add "PROFTPD_MODS" "mod_sql_sqlite"
+ fi &&
+
+ optional_depends ODBC-MGR "" "" "for ODBC support in mod_sql" &&
+
+ if is_depends_enabled $SPELL $(get_spell_provider $SPELL ODBC-MGR); then
+ list_add "PROFTPD_MODS" "mod_sql_odbc"
+ fi
+fi &&
+
+if list_find "$PROFTPD_MODS" "mod_wrap" || list_find "$PROFTPD_MODS"
"mod_wrap2"; then
+ depends tcp_wrappers
+fi &&
+
+if list_find "$PROFTPD_MODS" "mod_tls" || list_find "$PROFTPD_MODS"
"mod_sftp" || list_find "$PROFTPD_MODS" "mod_sql_passwd"; then
+ depends openssl '--enable-openssl'
+else
+ optional_depends openssl \
+ "--enable-openssl" \
+ "--disable-openssl" \
+ "for OpenSSL support"
+fi &&
+
+if list_find "$PROFTPD_OPTS" "mod_sftp_pam"; then
+ depends linux-pam
+fi &&
+
+if list_find "$PROFTPD_OPTS" "mod_tls_memcache"; then
+ depends libmemcached
fi &&

-if [[ "x`echo $PROFTPD_MODS | grep mysql`" != "x" ]]; then
- depends MYSQL
+optional_depends openldap "" "" "to build mod_ldap module" &&
+
+if is_depends_enabled $SPELL openldap; then
+ list_add "PROFTPD_MODS" "mod_ldap"
+elif list_find "$PROFTPD_MODS" "mod_quotatab_ldap"; then
+ depends openldap
fi &&

-if [[ "x`echo $PROFTPD_MODS | grep postgresql`" != "x" ]]; then
- depends postgresql
+optional_depends freeradius "" "" "to build mod_radius module" &&
+
+if is_depends_enabled $SPELL freeradius; then
+ list_add "PROFTPD_MODS" "mod_radius"
+elif list_find "$PROFTPD_MODS" "mod_quotatab_radius"; then
+ depends freeradius
fi &&

-if [[ "x`echo $PROFTPD_MODS | grep ldap`" != "x" ]]; then
- depends openldap
+optional_depends ncurses \
+ "--enable-curses" \
+ "--disable-curses" \
+ "for use of curses" &&
+
+optional_depends shadow \
+ "--enable-shadow" \
+ "--disable-shadow" \
+ "for shadowed password support" &&
+
+if is_depends_enabled $SPELL shadow; then
+ config_query_option PROFTPD_OPTS "Enable run-time auto-detection of
shadowed passwords?" n \
+ "--enable-autoshadow" \
+ "--disable-autoshadow"
fi &&

-optional_depends libcap \
- "--enable-cap" \
- "--disable-cap" \
- "for POSIX.1e capabilities" &&
+if list_find "$PROFTPD_OPTS" "--enable-cap"; then
+ optional_depends libcap "" "" "to use system libcap library for POSIX.1e
capabilities"
+fi &&

optional_depends linux-pam \
"--enable-auth-pam" \
"--disable-auth-pam" \
- "for Linux-PAM support"
+ "for Linux-PAM support" &&
+
+optional_depends libmemcached \
+ "--enable-memcache" \
+ "--disable-memcache" \
+ "for memcache support" &&
+
+optional_depends gettext \
+ "--enable-nls" \
+ "--disable-nls" \
+ "for Native Language Support" &&
+
+optional_depends pcre \
+ "--enable-pcre" \
+ "--disable-pcre" \
+ "for use of PCRE for POSIX regular expressions rather than
the system library" &&
+
+optional_depends acl \
+ "--enable-facl" \
+ "--disable-facl" \
+ "for POSIX ACLs support"
diff --git a/ftp/proftpd/DETAILS b/ftp/proftpd/DETAILS
index 03ee949..2b880dd 100755
--- a/ftp/proftpd/DETAILS
+++ b/ftp/proftpd/DETAILS
@@ -1,7 +1,7 @@
SPELL=proftpd
- VERSION=1.3.4a
+ VERSION=1.3.4b
SECURITY_PATCH=2
- SOURCE=$SPELL-$VERSION.tar.bz2
+ SOURCE=$SPELL-$VERSION.tar.gz
SOURCE2=$SOURCE.asc
SOURCE2_IGNORE=signature
SOURCE_GPG=A511976A.gpg:$SOURCE2:UPSTREAM_KEY
diff --git a/ftp/proftpd/HISTORY b/ftp/proftpd/HISTORY
index 99ac8f3..2d5f693 100644
--- a/ftp/proftpd/HISTORY
+++ b/ftp/proftpd/HISTORY
@@ -1,3 +1,19 @@
+2012-08-01 Vlad Glagolev <stealth AT sourcemage.org>
+ * DETAILS: updated spell to 1.3.4b; changed SOURCEs extension
+
+2012-07-31 Vlad Glagolev <stealth AT sourcemage.org>
+ * DETAILS: PATCHLEVEL=1
+ * BUILD: remove pic flags wisely; fix basic config file only when
xinetd
+ script had been installed; use default_build; dropped deprecated
seds;
+ use PROFTPD_OPTS and PROFTPD_MODS; moved sql include paths here;
+ redefine localstatedir to /var/run
+ * CONFIGURE, DEPENDS: use new modules framework; added missing options
+ and dependencies; switched to PROFTPD_OPTS
+ * PRE_BUILD: added, to optionally apply the patch
+ * ldap-cert.patch: added, for certificates selection support in
mod_ldap
+ * init.d/proftpd: switch to default stop() method, which doesn't
return
+ success on already stopped service
+
2012-01-09 Vlad Glagolev <stealth AT sourcemage.org>
* DETAILS: SECURITY_PATCH++ (CVE-2011-4130)

diff --git a/ftp/proftpd/PRE_BUILD b/ftp/proftpd/PRE_BUILD
new file mode 100755
index 0000000..e4c1378
--- /dev/null
+++ b/ftp/proftpd/PRE_BUILD
@@ -0,0 +1,6 @@
+default_pre_build &&
+cd "$SOURCE_DIRECTORY" &&
+
+if is_depends_enabled $SPELL openldap; then
+ patch -p0 < "$SPELL_DIRECTORY/ldap-cert.patch"
+fi
diff --git a/ftp/proftpd/init.d/proftpd b/ftp/proftpd/init.d/proftpd
index 09a4400..848b81c 100755
--- a/ftp/proftpd/init.d/proftpd
+++ b/ftp/proftpd/init.d/proftpd
@@ -5,11 +5,3 @@ RUNLEVEL=3
NEEDS="+remote_fs"

. /etc/init.d/smgl_init
-
-stop() {
- echo "Stopping proftpd..."
- if [ -f /var/run/proftpd.pid ]; then
- kill `cat /var/run/proftpd.pid`
- fi
- evaluate_retval
-}
diff --git a/ftp/proftpd/ldap-cert.patch b/ftp/proftpd/ldap-cert.patch
new file mode 100644
index 0000000..f4fee22
--- /dev/null
+++ b/ftp/proftpd/ldap-cert.patch
@@ -0,0 +1,286 @@
+--- contrib/mod_ldap.c.orig 2011-05-24 00:56:40.000000000 +0400
++++ contrib/mod_ldap.c 2012-07-31 15:14:59.181954021 +0400
+@@ -161,7 +161,14 @@
+ *ldap_attr_memberuid = "memberUid",
+ *ldap_attr_ftpquota = "ftpQuota",
+ *ldap_attr_ftpquota_profiledn = "ftpQuotaProfileDN",
+- *ldap_attr_ssh_pubkey = "sshPublicKey";
++ *ldap_attr_ssh_pubkey = "sshPublicKey",
++ *ldap_tls_ca_cert_dir,
++ *ldap_tls_ca_cert_file,
++ *ldap_tls_cert_file,
++ *ldap_tls_cipher_suite,
++ *ldap_tls_crl_file,
++ *ldap_tls_dh_file,
++ *ldap_tls_key_file;
+ #ifdef HAS_LDAP_INITIALIZE
+ static char *ldap_server_url;
+ #endif /* HAS_LDAP_INITIALIZE */
+@@ -171,7 +178,9 @@
+ ldap_forcedefaultuid = 0, ldap_forcedefaultgid = 0,
+ ldap_forcegenhdir = 0, ldap_protocol_version = 3,
+ ldap_dereference = LDAP_DEREF_NEVER,
+- ldap_search_scope = LDAP_SCOPE_SUBTREE;
++ ldap_search_scope = LDAP_SCOPE_SUBTREE,
++ ldap_tls_crl_check = -1,
++ ldap_tls_require_cert = -1;
+ static struct timeval ldap_querytimeout_tp;
+
+ static uid_t ldap_defaultuid = -1;
+@@ -214,6 +223,86 @@
+ struct berval bindcred;
+ #endif
+
++ if (ldap_tls_ca_cert_dir) {
++ ret = ldap_set_option(NULL, LDAP_OPT_X_TLS_CACERTDIR,
ldap_tls_ca_cert_dir);
++ if (ret != LDAP_OPT_SUCCESS) {
++ pr_log_pri(PR_LOG_ERR, MOD_LDAP_VERSION ": pr_ldap_connect(): Setting
LDAP_OPT_X_TLS_CACERTDIR option failed: %s", ldap_err2string(ret));
++ pr_ldap_unbind();
++ return -1;
++ }
++ pr_log_debug(DEBUG3, MOD_LDAP_VERSION ": set LDAP_OPT_X_TLS_CACERTDIR
to %s", ldap_tls_ca_cert_dir);
++ }
++
++ if (ldap_tls_ca_cert_file) {
++ ret = ldap_set_option(NULL, LDAP_OPT_X_TLS_CACERTFILE,
ldap_tls_ca_cert_file);
++ if (ret != LDAP_OPT_SUCCESS) {
++ pr_log_pri(PR_LOG_ERR, MOD_LDAP_VERSION ": pr_ldap_connect(): Setting
LDAP_OPT_X_TLS_CACERTFILE option failed: %s", ldap_err2string(ret));
++ pr_ldap_unbind();
++ return -1;
++ }
++ pr_log_debug(DEBUG3, MOD_LDAP_VERSION ": set LDAP_OPT_X_TLS_CACERTFILE
to %s", ldap_tls_ca_cert_file);
++ }
++
++ if (ldap_tls_cert_file) {
++ ret = ldap_set_option(NULL, LDAP_OPT_X_TLS_CERTFILE,
ldap_tls_cert_file);
++ if (ret != LDAP_OPT_SUCCESS) {
++ pr_log_pri(PR_LOG_ERR, MOD_LDAP_VERSION ": pr_ldap_connect(): Setting
LDAP_OPT_X_TLS_CERTFILE option failed: %s", ldap_err2string(ret));
++ pr_ldap_unbind();
++ return -1;
++ }
++ pr_log_debug(DEBUG3, MOD_LDAP_VERSION ": set LDAP_OPT_X_TLS_CERTFILE to
%s", ldap_tls_cert_file);
++ }
++
++ if (ldap_tls_cipher_suite) {
++ ret = ldap_set_option(NULL, LDAP_OPT_X_TLS_CIPHER_SUITE,
ldap_tls_cipher_suite);
++ if (ret != LDAP_OPT_SUCCESS) {
++ pr_log_pri(PR_LOG_ERR, MOD_LDAP_VERSION ": pr_ldap_connect(): Setting
LDAP_OPT_X_TLS_CIPHER_SUITE option failed: %s", ldap_err2string(ret));
++ pr_ldap_unbind();
++ return -1;
++ }
++ pr_log_debug(DEBUG3, MOD_LDAP_VERSION ": set
LDAP_OPT_X_TLS_CIPHER_SUITE to %s", ldap_tls_cipher_suite);
++ }
++
++ if (ldap_tls_dh_file) {
++ ret = ldap_set_option(NULL, LDAP_OPT_X_TLS_DHFILE, ldap_tls_dh_file);
++ if (ret != LDAP_OPT_SUCCESS) {
++ pr_log_pri(PR_LOG_ERR, MOD_LDAP_VERSION ": pr_ldap_connect(): Setting
LDAP_OPT_X_TLS_DHFILE option failed: %s", ldap_err2string(ret));
++ pr_ldap_unbind();
++ return -1;
++ }
++ pr_log_debug(DEBUG3, MOD_LDAP_VERSION ": set LDAP_OPT_X_TLS_DHFILE
version to %s", ldap_tls_dh_file);
++ }
++
++ if (ldap_tls_key_file) {
++ ret = ldap_set_option(NULL, LDAP_OPT_X_TLS_KEYFILE, ldap_tls_key_file);
++ if (ret != LDAP_OPT_SUCCESS) {
++ pr_log_pri(PR_LOG_ERR, MOD_LDAP_VERSION ": pr_ldap_connect(): Setting
LDAP_OPT_X_TLS_KEYFILE option failed: %s", ldap_err2string(ret));
++ pr_ldap_unbind();
++ return -1;
++ }
++ pr_log_debug(DEBUG3, MOD_LDAP_VERSION ": pr_ldap_connect(): set
LDAP_OPT_X_TLS_KEYFILE to %s", ldap_tls_key_file);
++ }
++
++ if (ldap_tls_crl_check != -1) {
++ ret = ldap_set_option(NULL, LDAP_OPT_X_TLS_CRLCHECK, (void
*)&ldap_tls_crl_check);
++ if (ret != LDAP_OPT_SUCCESS) {
++ pr_log_pri(PR_LOG_ERR, MOD_LDAP_VERSION ": pr_ldap_connect(): Setting
LDAP_OPT_X_TLS_CRLCHECK option failed: %s", ldap_err2string(ret));
++ pr_ldap_unbind();
++ return -1;
++ }
++ pr_log_debug(DEBUG3, MOD_LDAP_VERSION ": set LDAP_OPT_X_TLS_CRLCHECK to
%d", ldap_tls_crl_check);
++ }
++
++ if (ldap_tls_require_cert != -1) {
++ ret = ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, (void
*)&ldap_tls_require_cert);
++ if (ret != LDAP_OPT_SUCCESS) {
++ pr_log_pri(PR_LOG_ERR, MOD_LDAP_VERSION ": pr_ldap_connect(): Setting
LDAP_OPT_X_TLS_REQUIRE_CERT option failed: %s", ldap_err2string(ret));
++ pr_ldap_unbind();
++ return -1;
++ }
++ pr_log_debug(DEBUG3, MOD_LDAP_VERSION ": set
LDAP_OPT_X_TLS_REQUIRE_CERT to %d", ldap_tls_require_cert);
++ }
++
+ #ifdef HAS_LDAP_INITIALIZE
+ pr_log_debug(DEBUG3, MOD_LDAP_VERSION ": attempting connection to %s",
ldap_server_url ? ldap_server_url : "(null)");
+
+@@ -1876,6 +1965,130 @@
+ return PR_HANDLED(cmd);
+ }
+
++MODRET
++set_ldap_tls_ca_cert_dir(cmd_rec *cmd)
++{
++ CHECK_ARGS(cmd, 1);
++ CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
++
++ add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
++ return PR_HANDLED(cmd);
++}
++
++MODRET
++set_ldap_tls_ca_cert_file(cmd_rec *cmd)
++{
++ CHECK_ARGS(cmd, 1);
++ CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
++
++ add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
++ return PR_HANDLED(cmd);
++}
++
++MODRET
++set_ldap_tls_cert_file(cmd_rec *cmd)
++{
++ CHECK_ARGS(cmd, 1);
++ CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
++
++ add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
++ return PR_HANDLED(cmd);
++}
++
++MODRET
++set_ldap_tls_cipher_suite(cmd_rec *cmd)
++{
++ CHECK_ARGS(cmd, 1);
++ CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
++
++ add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
++ return PR_HANDLED(cmd);
++}
++
++MODRET
++set_ldap_tls_crl_check(cmd_rec *cmd)
++{
++ int value;
++ config_rec *c;
++
++ CHECK_ARGS(cmd, 1);
++ CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
++
++ if (strcasecmp(cmd->argv[1], "none") == 0) {
++ value = LDAP_OPT_X_TLS_CRL_NONE;
++ } else if (strcasecmp(cmd->argv[1], "peer") == 0) {
++ value = LDAP_OPT_X_TLS_CRL_PEER;
++ } else if (strcasecmp(cmd->argv[1], "all") == 0) {
++ value = LDAP_OPT_X_TLS_CRL_ALL;
++ } else {
++ CONF_ERROR(cmd, "LDAPTLSCrlCheck: expected a valid
LDAP_OPT_X_TLS_CRLCHECK option (none, peer, all).");
++ }
++
++ c = add_config_param("LDAPTLSCrlCheck", 1, NULL);
++ c->argv[0] = pcalloc(c->pool, sizeof(int));
++ *((int *) c->argv[0]) = value;
++ return PR_HANDLED(cmd);
++}
++
++MODRET
++set_ldap_tls_dh_file(cmd_rec *cmd)
++{
++ CHECK_ARGS(cmd, 1);
++ CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
++
++ add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
++ return PR_HANDLED(cmd);
++}
++
++MODRET
++set_ldap_tls_crl_file(cmd_rec *cmd)
++{
++ CHECK_ARGS(cmd, 1);
++ CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
++
++ add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
++ return PR_HANDLED(cmd);
++}
++
++MODRET
++set_ldap_tls_key_file(cmd_rec *cmd)
++{
++ CHECK_ARGS(cmd, 1);
++ CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
++
++ add_config_param_str(cmd->argv[0], 1, cmd->argv[1]);
++ return PR_HANDLED(cmd);
++}
++
++MODRET
++set_ldap_tls_require_cert(cmd_rec *cmd)
++{
++ int value;
++ config_rec *c;
++
++ CHECK_ARGS(cmd, 1);
++ CHECK_CONF(cmd, CONF_ROOT | CONF_VIRTUAL | CONF_GLOBAL);
++
++ if (strcasecmp(cmd->argv[1], "never") == 0) {
++ value = LDAP_OPT_X_TLS_NEVER;
++ } else if (strcasecmp(cmd->argv[1], "hard") == 0) {
++ value = LDAP_OPT_X_TLS_HARD;
++ } else if (strcasecmp(cmd->argv[1], "demand") == 0) {
++ value = LDAP_OPT_X_TLS_DEMAND;
++ } else if (strcasecmp(cmd->argv[1], "allow") == 0) {
++ value = LDAP_OPT_X_TLS_ALLOW;
++ } else if (strcasecmp(cmd->argv[1], "try") == 0) {
++ value = LDAP_OPT_X_TLS_TRY;
++ } else {
++ CONF_ERROR(cmd, "LDAPTLSRequireCert: expected a valid
LDAP_OPT_X_TLS_REQUIRE_CERT option (never, hard, demand, allow, try).");
++ }
++
++ c = add_config_param("LDAPTLSRequireCert", 1, NULL);
++ c->argv[0] = pcalloc(c->pool, sizeof(int));
++ *((int *) c->argv[0]) = value;
++ return PR_HANDLED(cmd);
++}
++
+ static int
+ ldap_getconf(void)
+ {
+@@ -2060,6 +2273,22 @@
+ }
+ }
+
++ ldap_tls_ca_cert_dir = (char *)get_param_ptr(main_server->conf,
"LDAPTLSCACertDir", FALSE);
++ ldap_tls_ca_cert_file = (char *)get_param_ptr(main_server->conf,
"LDAPTLSCACertFile", FALSE);
++ ldap_tls_cert_file = (char *)get_param_ptr(main_server->conf,
"LDAPTLSCertFile", FALSE);
++ ldap_tls_cipher_suite = (char *)get_param_ptr(main_server->conf,
"LDAPTLSCipherSuite", FALSE);
++ ldap_tls_crl_file = (char *)get_param_ptr(main_server->conf,
"LDAPTLSCrlFile", FALSE);
++ ldap_tls_dh_file = (char *)get_param_ptr(main_server->conf,
"LDAPTLSDHFile", FALSE);
++ ldap_tls_key_file = (char *)get_param_ptr(main_server->conf,
"LDAPTLSKeyFile", FALSE);
++ ptr = get_param_ptr(main_server->conf, "LDAPTLSCrlCheck", FALSE);
++ if (ptr) {
++ ldap_tls_crl_check = *((int *) ptr);
++ }
++ ptr = get_param_ptr(main_server->conf, "LDAPTLSRequireCert", FALSE);
++ if (ptr) {
++ ldap_tls_require_cert = *((int *) ptr);
++ }
++
+ return 0;
+ }
+
+@@ -2093,6 +2322,15 @@
+ { "LDAPForceGeneratedHomedir", set_ldap_forcegenhdir, NULL },
+ { "LDAPDefaultQuota", set_ldap_defaultquota, NULL },
+ { "LDAPGroups", set_ldap_grouplookups, NULL },
++ { "LDAPTLSCACertDir", set_ldap_tls_ca_cert_dir, NULL },
++ { "LDAPTLSCACertFile", set_ldap_tls_ca_cert_file, NULL },
++ { "LDAPTLSCertFile", set_ldap_tls_cert_file, NULL },
++ { "LDAPTLSCipherSuite", set_ldap_tls_cipher_suite, NULL },
++ { "LDAPTLSCrlCheck", set_ldap_tls_crl_check, NULL },
++ { "LDAPTLSCrlFile", set_ldap_tls_crl_file, NULL },
++ { "LDAPTLSDHFile", set_ldap_tls_dh_file, NULL },
++ { "LDAPTLSKeyFile", set_ldap_tls_key_file, NULL },
++ { "LDAPTLSRequireCert", set_ldap_tls_require_cert, NULL },
+ { NULL, NULL, NULL },
+ };
+
diff --git a/java/antlr/HISTORY b/java/antlr/HISTORY
index b347d88..7d882db 100644
--- a/java/antlr/HISTORY
+++ b/java/antlr/HISTORY
@@ -1,3 +1,7 @@
+2012-07-29 Sukneet Basuta <sukneet AT sourcemage.org>
+ * SUB_DEPENDS, PRE_SUB_DEPENDS, REPAIR^all^PRE_SUB_DEPENDS: added,
+ to force JAVA optional_depends
+
2011-07-30 Florian Franzmann <siflfran AT hawo.stw.uni-erlangen.de>
* DEPENDS: changed dependency on g++ to dependency on gcc with
sub-depends on CXX (scripted)
diff --git a/java/antlr/PRE_SUB_DEPENDS b/java/antlr/PRE_SUB_DEPENDS
new file mode 100755
index 0000000..38770c0
--- /dev/null
+++ b/java/antlr/PRE_SUB_DEPENDS
@@ -0,0 +1,6 @@
+case $THIS_SUB_DEPENDS in
+ JAVA) is_depends_enabled $SPELL $(get_spell_provider $SPELL JAVA);;
+ *) message "${PROBLEM_COLOR}bogus sub_depends: $SPELL
$THIS_SUB_DEPENDS${DEFAULT_COLOR}"
+ return 1;;
+esac
+
diff --git a/java/antlr/REPAIR^all^PRE_SUB_DEPENDS
b/java/antlr/REPAIR^all^PRE_SUB_DEPENDS
new file mode 100755
index 0000000..38770c0
--- /dev/null
+++ b/java/antlr/REPAIR^all^PRE_SUB_DEPENDS
@@ -0,0 +1,6 @@
+case $THIS_SUB_DEPENDS in
+ JAVA) is_depends_enabled $SPELL $(get_spell_provider $SPELL JAVA);;
+ *) message "${PROBLEM_COLOR}bogus sub_depends: $SPELL
$THIS_SUB_DEPENDS${DEFAULT_COLOR}"
+ return 1;;
+esac
+
diff --git a/java/antlr/SUB_DEPENDS b/java/antlr/SUB_DEPENDS
new file mode 100755
index 0000000..1dd11f7
--- /dev/null
+++ b/java/antlr/SUB_DEPENDS
@@ -0,0 +1,6 @@
+case $THIS_SUB_DEPENDS in
+ JAVA) message "JAVA support requested, forcing JAVA dependency" &&
+ depends JAVA '--enable-java' ;;
+ *) message "${PROBLEM_COLOR}bogus sub_depends: $SPELL
$THIS_SUB_DEPENDS${DEFAULT_COLOR}"
+ return 1;;
+esac
diff --git a/kde4-apps/FUNCTIONS b/kde4-apps/FUNCTIONS
index 527e375..dfff5bc 100755
--- a/kde4-apps/FUNCTIONS
+++ b/kde4-apps/FUNCTIONS
@@ -18,6 +18,8 @@ default_build() {
cd $SOURCE_DIRECTORY &&
mkdir -p build &&
cd build &&
+
+ prepare_cmake_flags &&
cmake -DCMAKE_INSTALL_PREFIX="$KDE4DIR" \
-DCMAKE_BUILD_TYPE=$KDE_DEBUG_OPTION \
-DSYSCONF_INSTALL_DIR=$KDE4ETC \
diff --git a/kde4-apps/KDE_DEPENDS b/kde4-apps/KDE_DEPENDS
index 4ea0397..04814f6 100755
--- a/kde4-apps/KDE_DEPENDS
+++ b/kde4-apps/KDE_DEPENDS
@@ -1,5 +1,5 @@
depends -sub CXX gcc &&
-depends cmake
+depends cmake &&

-#depends kdebase4-runtime &&
-#optional_depends kdebase-workspace4 '' '' 'kde desktop'
+depends kdebase4-runtime &&
+optional_depends kdebase-workspace4 '' '' 'kde desktop'
diff --git a/kde4-bindings/FUNCTIONS b/kde4-bindings/FUNCTIONS
index 5950ddd..e1957bf 100755
--- a/kde4-bindings/FUNCTIONS
+++ b/kde4-bindings/FUNCTIONS
@@ -11,6 +11,8 @@ default_build() {
PATH+=:$KDE4DIR
fi &&
CMAKE_PREFIX_PATH=$KDE4DIR &&
+
+ prepare_cmake_flags &&
cmake -DCMAKE_INSTALL_PREFIX=$KDE4DIR \
-DCMAKE_BUILD_TYPE=$KDE_DEBUG_OPTION \
-DSYSCONF_INSTALL_DIR=$KDE4ETC \
diff --git a/kde4-edu/FUNCTIONS b/kde4-edu/FUNCTIONS
index 7a2f092..4d080ec 100755
--- a/kde4-edu/FUNCTIONS
+++ b/kde4-edu/FUNCTIONS
@@ -11,6 +11,8 @@ default_build() {
PATH+=:$KDE4DIR
fi &&
CMAKE_PREFIX_PATH=$KDE4DIR &&
+
+ prepare_cmake_flags &&
cmake -DCMAKE_INSTALL_PREFIX=$KDE4DIR \
-DCMAKE_BUILD_TYPE=$KDE_DEBUG_OPTION \
-DSYSCONF_INSTALL_DIR=$KDE4ETC \
diff --git a/kde4-graphics/FUNCTIONS b/kde4-graphics/FUNCTIONS
index b96cc7b..93871d4 100755
--- a/kde4-graphics/FUNCTIONS
+++ b/kde4-graphics/FUNCTIONS
@@ -11,6 +11,8 @@ default_build() {
PATH+=:$KDE4DIR
fi &&
CMAKE_PREFIX_PATH=$KDE4DIR &&
+
+ prepare_cmake_flags &&
cmake -DCMAKE_INSTALL_PREFIX=$KDE4DIR \
-DCMAKE_BUILD_TYPE=$KDE_DEBUG_OPTION \
-DSYSCONF_INSTALL_DIR=$KDE4ETC \
diff --git a/kde4-look/FUNCTIONS b/kde4-look/FUNCTIONS
index fa97070..0b23423 100755
--- a/kde4-look/FUNCTIONS
+++ b/kde4-look/FUNCTIONS
@@ -17,6 +17,8 @@ default_build() {
cd $SOURCE_DIRECTORY &&
mkdir -p build &&
cd build &&
+
+ prepare_cmake_flags &&
cmake -DCMAKE_INSTALL_PREFIX="$KDE4DIR" \
-DCMAKE_BUILD_TYPE=$KDE_DEBUG_OPTION \
-DSYSCONF_INSTALL_DIR=$KDE4ETC \
diff --git a/kde4/FUNCTIONS b/kde4/FUNCTIONS
index 3d1f7a0..eec2829 100755
--- a/kde4/FUNCTIONS
+++ b/kde4/FUNCTIONS
@@ -11,6 +11,8 @@ default_build() {
PATH+=:$KDE4DIR
fi &&
CMAKE_PREFIX_PATH=$KDE4DIR &&
+
+ prepare_cmake_flags &&
cmake -DCMAKE_INSTALL_PREFIX=$KDE4DIR \
-DCMAKE_BUILD_TYPE=$KDE_DEBUG_OPTION \
-DSYSCONF_INSTALL_DIR=$KDE4ETC \
diff --git a/kde4/HISTORY b/kde4/HISTORY
index f5cab10..e9ea6ff 100644
--- a/kde4/HISTORY
+++ b/kde4/HISTORY
@@ -1,3 +1,9 @@
+2012-07-30 Sukneet Basuta <sukneet AT sourcemage.org>
+ * FUNCTIONS, ../kde4*/FUNCTIONS: added prepare_cmake_flags to
default_build, to allow
+ passing cmake flags.
+ Added to default_build rather than each individual BUILD since all
kde spells use cmake.
+ * KDE_DEPENDS: removed kdepimlib4 case and added its dependencies to
the SPELL
+
2010-05-20 Tommy Boatman <tboatman AT sourcemage.org>
* KDE_DEPENDS: kdebindings4 depends on attica

diff --git a/kde4/KDE_DEPENDS b/kde4/KDE_DEPENDS
index 604e0d2..69e0ea7 100755
--- a/kde4/KDE_DEPENDS
+++ b/kde4/KDE_DEPENDS
@@ -24,12 +24,6 @@ case $SPELL in
depends giflib
;;

- kdepimlibs4) depends kdelibs4 &&
- depends gpgme &&
- depends libgpg-error &&
- depends boost
- ;;
-
kdebase4-runtime)
depends kdelibs4 &&
depends phonon
diff --git a/kde4/kdepim4/DEPENDS b/kde4/kdepim4/DEPENDS
index 8c4c220..b1536e3 100755
--- a/kde4/kdepim4/DEPENDS
+++ b/kde4/kdepim4/DEPENDS
@@ -1,13 +1,16 @@
-source $SECTION_DIRECTORY/KDE_DEPENDS &&
-depends kdepimlibs4 &&
-depends -sub GRAPH boost &&
-depends kdepim4-runtime &&
-depends shared-desktop-ontologies &&
-depends soprano &&
-optional_depends qca2 '' '' 'crypto support' &&
-optional_depends gpgme '' '' 'encrypted signatures' &&
-optional_depends libassuan '' '' 'for kleopatra' &&
-optional_depends libmal '' '' 'Avantgo support' &&
-optional_depends gnokii '' '' 'Nokia support' &&
-optional_depends libxscrnsaver '' '' 'screensaver support for ktimetracker'
+source $SECTION_DIRECTORY/KDE_DEPENDS &&
+depends kdepimlibs4 &&
+depends -sub GRAPH boost &&
+depends kdepim4-runtime &&
+depends akonadi &&
+depends zlib &&
+depends strigi &&
+depends shared-desktop-ontologies &&
+depends soprano &&
+depends libxslt &&
+depends gpgme &&
+depends libassuan &&

+optional_depends grantlee '' '' 'for templating and theming for kJots
and KaddressBook' &&
+optional_depends libxscrnsaver '' '' 'for screensaver support for
ktimetracker' &&
+optional_depends dblatex '' '' 'to generate Kontact-Touch license
information'
diff --git a/kde4/kdepim4/DETAILS b/kde4/kdepim4/DETAILS
index 5a80d01..7ff6c4d 100755
--- a/kde4/kdepim4/DETAILS
+++ b/kde4/kdepim4/DETAILS
@@ -1,7 +1,7 @@
SPELL=kdepim4
SPELLX=${SPELL//4}
- VERSION=4.8.3
-
SOURCE_HASH=sha512:2ce8924a669c1520df97412b3358a520363e1107ca6b0de029ed59e09bb4410a16204e8a18ab6617800100758741abe15e549a0dab50f26507e59732c9d6ca4c
+ VERSION=4.8.4
+
SOURCE_HASH=sha512:b202befe64c731faf851e7fdd7c578511393f4604e117f180b29b77cf2716a264c1084a0348425609d38340ba1319c81fe1480bc82411e02adc5a167262c4759
SOURCE=$SPELLX-$VERSION.tar.xz
SOURCE_URL[0]=$KDE_URL/stable/$VERSION/src/$SOURCE
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELLX-$VERSION"
diff --git a/kde4/kdepim4/HISTORY b/kde4/kdepim4/HISTORY
index 39d5ba7..80c5417 100644
--- a/kde4/kdepim4/HISTORY
+++ b/kde4/kdepim4/HISTORY
@@ -1,3 +1,12 @@
+2012-07-30 Sukneet Basuta <sukneet AT sourcemage.org>
+ * DETAILS: updated spell to 4.8.4
+ * DEPENDS: added depends akonadi, zlib, strigi, libxslt.
+ Changed optional_depends gpgme, libassuan to depends.
+ Removed optional_depends qca2, libmal, gnokii.
+ Added optional_depends grantlee, dblatex
+ * PRE_BUILD: added, to apply boost patch
+ * kdepim-4.8.4-boost-1.48.patch: added, fixes compilation with boost
>= 1.48
+
2012-05-10 Julien "_kaze_" ROZO <julien AT rozo.org>
* DETAILS: updated version to 4.8.3, switched SOURCE from bz2 to xz

diff --git a/kde4/kdepim4/PRE_BUILD b/kde4/kdepim4/PRE_BUILD
new file mode 100755
index 0000000..8e94aff
--- /dev/null
+++ b/kde4/kdepim4/PRE_BUILD
@@ -0,0 +1,4 @@
+default_pre_build &&
+cd $SOURCE_DIRECTORY &&
+
+patch -p1 < $SPELL_DIRECTORY/kdepim-4.8.4-boost-1.48.patch
diff --git a/kde4/kdepim4/kdepim-4.8.4-boost-1.48.patch
b/kde4/kdepim4/kdepim-4.8.4-boost-1.48.patch
new file mode 100644
index 0000000..7060e81
--- /dev/null
+++ b/kde4/kdepim4/kdepim-4.8.4-boost-1.48.patch
@@ -0,0 +1,11 @@
+--- kdepim-4.9.0/kleopatra/CMakeLists.txt~ 2012-07-30 08:06:15.031181647
+0000
++++ kdepim-4.9.0/kleopatra/CMakeLists.txt 2012-07-30 08:07:13.594082584
+0000
+@@ -365,7 +365,7 @@
+ endif(KDEPIM_MOBILE_UI)
+
+ add_definitions ( -DKDE_DEFAULT_DEBUG_AREA=5151 )
+-
++add_definitions ( -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED )
+
+ kde4_add_app_icon(_kleopatra_mainwindow_SRCS "hi*-app-kleopatra.png")
+ kde4_add_executable(kleopatra_bin ${_kleopatra_SRCS}
${_kleopatra_mainwindow_SRCS} ${_kleopatra_uiserver_SRCS}
${_kleopatra_libkdepim_SRCS} )
diff --git a/kde4/kdepimlibs4/DEPENDS b/kde4/kdepimlibs4/DEPENDS
index b3ce3b8..8f1229a 100755
--- a/kde4/kdepimlibs4/DEPENDS
+++ b/kde4/kdepimlibs4/DEPENDS
@@ -1,5 +1,13 @@
source $SECTION_DIRECTORY/KDE_DEPENDS &&
+depends kdelibs4 &&
+depends -sub GRAPH boost &&
+depends gpgme &&
depends akonadi &&
depends libical &&
depends LIBSASL &&
-optional_depends openldap '' '' 'LDAP functionality'
+depends shared-mime-info &&
+depends shared-desktop-ontologies &&
+depends soprano &&
+depends libxslt &&
+
+optional_depends openldap '' '' 'for LDAP functionality'
diff --git a/kde4/kdepimlibs4/DETAILS b/kde4/kdepimlibs4/DETAILS
index 8b66fb7..4d17e85 100755
--- a/kde4/kdepimlibs4/DETAILS
+++ b/kde4/kdepimlibs4/DETAILS
@@ -1,7 +1,7 @@
SPELL=kdepimlibs4
SPELLX=${SPELL//4}
- VERSION=4.8.3
-
SOURCE_HASH=sha512:86b50bb34fe5c1a8c0836ea3aa08979d4d3c11af59b99d6915eeb9074a14b377bda8956a86a8b58c09c8acf263dbd096ff6b935dd713ae856eaddc6fa3f3304b
+ VERSION=4.8.4
+
SOURCE_HASH=sha512:f0883dceb4cd6079a9ef4083e318f4dd615124e5d0492444d7806ac5c2ec798d9eb26dc18dc496505f3ccd5c3018963048c8be4f8533d75a1f524aa908c81fc6
SOURCE=$SPELLX-$VERSION.tar.xz
SOURCE_URL[0]=$KDE_URL/stable/$VERSION/src/$SOURCE
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELLX-$VERSION"
diff --git a/kde4/kdepimlibs4/HISTORY b/kde4/kdepimlibs4/HISTORY
index 6fde23d..bc5b9a4 100644
--- a/kde4/kdepimlibs4/HISTORY
+++ b/kde4/kdepimlibs4/HISTORY
@@ -1,3 +1,8 @@
+2012-07-30 Sukneet Basuta <sukneet AT sourcemage.org>
+ * DETAILS: updated spell to 4.8.4
+ * DEPENDS: added depends boost, gpgme, shared-mime-info,
+ shared-desktop-ontologies, soprano, libxsl.
+
2012-05-07 Ladislav Hagara <hgr AT vabo.cz>
* DETAILS: 4.8.3, bz2 -> xz

diff --git a/kde4/kdesdk4/BUILD b/kde4/kdesdk4/BUILD
new file mode 100755
index 0000000..c5267e1
--- /dev/null
+++ b/kde4/kdesdk4/BUILD
@@ -0,0 +1,7 @@
+if [[ "$KDESDK_SUBVERSION" == "y" ]]; then
+ OPTS="-DWITH_SVN:BOOL=on $OPTS"
+else
+ OPTS="-DWITH_SVN:BOOL=off $OPTS"
+fi &&
+
+default_build
diff --git a/kde4/kdesdk4/CONFIGURE b/kde4/kdesdk4/CONFIGURE
index 29589c3..337f57e 100755
--- a/kde4/kdesdk4/CONFIGURE
+++ b/kde4/kdesdk4/CONFIGURE
@@ -4,5 +4,6 @@ if provider_ok APU &&
config_query KDESDK_SUBVERSION 'Build Subversion SCM support?' y
else
config_query KDESDK_SUBVERSION 'Build Subversion SCM support?' n
-fi
+fi &&

+config_query UMBRELLO "Build Umbrello UML Modeller" y
diff --git a/kde4/kdesdk4/DEPENDS b/kde4/kdesdk4/DEPENDS
index 963abd7..a583262 100755
--- a/kde4/kdesdk4/DEPENDS
+++ b/kde4/kdesdk4/DEPENDS
@@ -1,8 +1,26 @@
source $SECTION_DIRECTORY/KDE_DEPENDS &&
depends kdepimlibs4 &&
+depends strigi &&
if [ "$KDESDK_SUBVERSION" == "y" ]; then
depends APU &&
depends subversion
fi &&
-optional_depends db '' '' 'Berkley DB support'
-#optional_depends '' '' ''
+
+if [[ $UMBRELLO == "y" ]]; then
+ depends libxslt &&
+ depends libxml2 &&
+ depends boost
+fi &&
+
+optional_depends hunspell "-DWITH_HUNSPELL%BOOL=on" \
+ "-DWITH_HUNSPELL%BOOL=off" \
+ "to build Lokalize localization tool" &&
+optional_depends qca2 "-DWITH_QCA2%BOOL=on" \
+ "-DWITH_QCA2%BOOL=off" \
+ "for the checksum tool in Okteta hex
editor" &&
+optional_depends kdebase4 "-DWITH_LibKonq%BOOL=on" \
+ "-DWITH_LibKonq%BOOL=off" \
+ "to build the Dolphin version control
plugins" &&
+optional_depends -sub JAVA antlr "-DWITH_Antlr2%BOOL=on" \
+ "-DWITH_Antlr2%BOOL=off" \
+ "for support of po2xml and swappo tools"
diff --git a/kde4/kdesdk4/DETAILS b/kde4/kdesdk4/DETAILS
index dbb9ae6..e4d50f2 100755
--- a/kde4/kdesdk4/DETAILS
+++ b/kde4/kdesdk4/DETAILS
@@ -1,7 +1,7 @@
SPELL=kdesdk4
SPELLX=${SPELL//4}
- VERSION=4.8.3
-
SOURCE_HASH=sha512:b14af6c528c33da17d368dde18b74c9605740c608ee7fbe4e2e91aff78b689de17295b39e766fb58e5d64b414707f590b4f422f39e5badd716a802421cb52b35
+ VERSION=4.8.4
+
SOURCE_HASH=sha512:a5f52e1bd51fd283902f620e4d0e37030bc6a2e6046632471f7c73482ffc1a491f25356f998514726bd7d3eb13bf386478cce81fed8bc7e0f6b69e81445b9740
SOURCE=$SPELLX-$VERSION.tar.xz
SOURCE_URL[0]=$KDE_URL/stable/$VERSION/src/$SOURCE
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELLX-$VERSION"
diff --git a/kde4/kdesdk4/HISTORY b/kde4/kdesdk4/HISTORY
index 3f6b474..e33db5f 100644
--- a/kde4/kdesdk4/HISTORY
+++ b/kde4/kdesdk4/HISTORY
@@ -1,3 +1,18 @@
+2012-07-30 Sukneet Basuta <sukneet AT sourcemage.org>
+ * DEPENDS, BUILD: use % instead of @ to pass cmake flags,
+ as prepare_cmake_flags handles this
+
+2012-07-29 Sukneet Basuta <sukneet AT sourcemage.org>
+ * DETAILS: updated spell to 4.8.4
+ * CONFIGURE: added query for umbrello
+ * DEPENDS: added depends strigi.
+ added depends libxslt, libxml2, & boost if umbrello enabled.
+ added optional_depends hunspell, qca2, antlr, kdebase4. Note that
+ : is replaced with @ in the flags since sorcery uses : as
delimiters.
+ removed optional_depends db.
+ * BUILD: added, to add svn flags if SVN enabled/disabled.
+ replace @ with : in OPTS
+
2012-05-08 Ladislav Hagara <hgr AT vabo.cz>
* DETAILS: 4.8.3, bz2 -> xz

diff --git a/libs/tzdata/DETAILS b/libs/tzdata/DETAILS
index 1d0be38..bdb87d8 100755
--- a/libs/tzdata/DETAILS
+++ b/libs/tzdata/DETAILS
@@ -1,10 +1,10 @@
SPELL=tzdata
- VERSION=2012d
+ VERSION=2012e
SOURCE="${SPELL}${VERSION}.tar.gz"
SOURCE_URL[0]=http://www.iana.org/time-zones/repository/releases/${SOURCE}
SOURCE_URL[1]=ftp://ftp.iana.org/tz/releases/${SOURCE}
#SOURCE_URL[2]=ftp://munnari.oz.au/pub/oldtz/${SOURCE}
-
SOURCE_HASH=sha512:02f4ae5c3a685d688bedc0c173f4eed517cff8018e1fc94eeeafff355c90b40db3f9a52891b66960ce28de323aed2a4b196e933f20afbfbf3dcf787ab0e161f6
+
SOURCE_HASH=sha512:66ab7bcf7070a0a6d9ba2c5ef9d5c0f0992462fa43a09998a36c9a64049b10164fb6bf73d66ab5d2fbb90e07aa5e4e636221266a69b7590eccfcd6b1acffbd98
SOURCE_DIRECTORY="${BUILD_DIRECTORY}/${SPELL}-${VERSION}"
WEB_SITE="http://www.iana.org/time-zones";
LICENSE[0]="GPL"
diff --git a/libs/tzdata/HISTORY b/libs/tzdata/HISTORY
index f02ae7d..1d8c153 100644
--- a/libs/tzdata/HISTORY
+++ b/libs/tzdata/HISTORY
@@ -1,3 +1,6 @@
+2012-08-03 Sukneet Basuta <sukneet AT sourcemage.org>
+ * DETAILS: updated spell to 2012e
+
2012-07-19 Sukneet Basuta <sukneet AT sourcemage.org>
* DETAILS: updated spell to 2012d
changed SOURCE_URL[1]
diff --git a/net/dhcp/DETAILS b/net/dhcp/DETAILS
index 379b72a..ecb52e7 100755
--- a/net/dhcp/DETAILS
+++ b/net/dhcp/DETAILS
@@ -1,6 +1,6 @@
SPELL=dhcp
- VERSION=4.2.4
- SECURITY_PATCH=1
+ VERSION=4.2.4-P1
+ SECURITY_PATCH=2
SOURCE=$SPELL-$VERSION.tar.gz
SOURCE2=$SPELL-$VERSION.tar.gz.asc
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-$VERSION"
diff --git a/net/dhcp/HISTORY b/net/dhcp/HISTORY
index 72c5a23..733ced1 100644
--- a/net/dhcp/HISTORY
+++ b/net/dhcp/HISTORY
@@ -1,3 +1,7 @@
+2012-07-30 Vlad Glagolev <stealth AT sourcemage.org>
+ * DETAILS: updated spell to 4.2.4-P1; SECURITY_PATCH++ (CVE-2012-3571,
+ CVE-2012-3570, CVE-2012-3954)
+
2012-07-04 Vlad Glagolev <stealth AT sourcemage.org>
* DETAILS: updated spell to 4.2.4; SECURITY_PATCH++ (several CVEs
since
4.1.1); updated source urls; quoting paths
diff --git a/net/iptables/DETAILS b/net/iptables/DETAILS
index f3e43d4..6b90d5f 100755
--- a/net/iptables/DETAILS
+++ b/net/iptables/DETAILS
@@ -1,5 +1,5 @@
SPELL=iptables
- VERSION=1.4.14
+ VERSION=1.4.15
SOURCE=$SPELL-$VERSION.tar.bz2
SOURCE2=$SOURCE.sig
SOURCE_URL[0]=http://www.iptables.org/projects/$SPELL/files/$SOURCE
diff --git a/net/iptables/HISTORY b/net/iptables/HISTORY
index 582fa8e..539776d 100644
--- a/net/iptables/HISTORY
+++ b/net/iptables/HISTORY
@@ -1,3 +1,6 @@
+2012-08-01 Ladislav Hagara <hgr AT vabo.cz>
+ * DETAILS: 1.4.15
+
2012-05-29 Ladislav Hagara <hgr AT vabo.cz>
* DETAILS: 1.4.14

diff --git a/net/tinc/BUILD b/net/tinc/BUILD
new file mode 100755
index 0000000..5f63f8e
--- /dev/null
+++ b/net/tinc/BUILD
@@ -0,0 +1,3 @@
+OPTS="$TINC_OPTS $OPTS" &&
+
+default_build
diff --git a/net/tinc/CONFIGURE b/net/tinc/CONFIGURE
new file mode 100755
index 0000000..8209925
--- /dev/null
+++ b/net/tinc/CONFIGURE
@@ -0,0 +1,3 @@
+config_query_option TINC_OPTS "Enable support for jumbograms (packets up to
9000 bytes)?" y \
+ "--enable-jumbograms" \
+ "--disable-jumbograms"
diff --git a/net/tinc/DEPENDS b/net/tinc/DEPENDS
index 1f00205..3a0df5c 100755
--- a/net/tinc/DEPENDS
+++ b/net/tinc/DEPENDS
@@ -1,3 +1,11 @@
depends openssl &&
-depends zlib &&
-depends lzo
+
+optional_depends zlib \
+ "--enable-zlib" \
+ "--disable-zlib" \
+ "for zlib compression support" &&
+
+optional_depends lzo \
+ "--enable-lzo" \
+ "--disable-lzo" \
+ "for lzo compression support"
diff --git a/net/tinc/DETAILS b/net/tinc/DETAILS
index 7be9821..dea04dc 100755
--- a/net/tinc/DETAILS
+++ b/net/tinc/DETAILS
@@ -1,5 +1,5 @@
SPELL=tinc
- VERSION=1.0.11
+ VERSION=1.0.19
SOURCE="$SPELL-$VERSION.tar.gz"
SOURCE2=$SOURCE.sig
SOURCE_URL[0]=http://www.$SPELL-vpn.org/packages/$SOURCE
@@ -10,12 +10,14 @@ SOURCE_DIRECTORY="${BUILD_DIRECTORY}/$SPELL-$VERSION"
WEB_SITE=http://www.tinc-vpn.org/
LICENSE[0]=GPL
ENTERED=20070116
- SHORT="tinc is a Virtual Private Network (VPN) daemon"
+ SHORT="Virtual Private Network (VPN) daemon"
cat << EOF
tinc is a Virtual Private Network (VPN) daemon that uses tunnelling and
encryption to create a secure private network between hosts on the Internet.

-* Encryption, authentication and compression * Automatic full mesh routing *
-Easily expand your VPN * Ability to bridge ethernet segments * Runs on many
-operating systems and supports IPv6
+ * Encryption, authentication and compression
+ * Automatic full mesh routing
+ * Easily expand your VPN
+ * Ability to bridge ethernet segments
+ * Runs on many operating systems and supports IPv6
EOF
diff --git a/net/tinc/HISTORY b/net/tinc/HISTORY
index 7cc9fee..b588c70 100644
--- a/net/tinc/HISTORY
+++ b/net/tinc/HISTORY
@@ -1,3 +1,12 @@
+2012-07-31 Vlad Glagolev <stealth AT sourcemage.org>
+ * DETAILS: updated spell to 1.0.19; corrected descriptions
+ * DEPENDS: zlib and lzo are optional
+ * CONFIGURE: added, for jumbograms config option
+ * INSTALL: added, to install init script config
+ * BUILD: added, for TINC_OPTS
+ * PREPARE: added, to prevent building malfunctional spell
+ * init.d/tinc{,.conf}: added init system
+
2009-11-11 Bor Kraljič <pyrobor AT ver.si>
* C0D71F4A.gpg: added gpg keyring
* DETAILS: updated spell to 1.0.11
diff --git a/net/tinc/INSTALL b/net/tinc/INSTALL
new file mode 100755
index 0000000..774524a
--- /dev/null
+++ b/net/tinc/INSTALL
@@ -0,0 +1,6 @@
+default_install &&
+
+if [[ $INIT_INSTALLED ]]; then
+ install_config_file "$SPELL_DIRECTORY/init.d/tinc.conf" \
+ "$INSTALL_ROOT/etc/sysconfig/tinc"
+fi
diff --git a/net/tinc/PREPARE b/net/tinc/PREPARE
new file mode 100755
index 0000000..eb1f41d
--- /dev/null
+++ b/net/tinc/PREPARE
@@ -0,0 +1,5 @@
+. $GRIMOIRE/FUNCTIONS &&
+
+if [ -z "$(get_sorcery_kernel_config CONFIG_TUN)" ]; then
+ message "${PROBLEM_COLOR}Your kernel does not appear to have tun/tap
support enabled (CONFIG_TUN is not set). $SPELL will not function without
tun/tap support.${DEFAULT_COLOR}"
+fi
diff --git a/net/tinc/init.d/tinc b/net/tinc/init.d/tinc
new file mode 100755
index 0000000..e5f84ca
--- /dev/null
+++ b/net/tinc/init.d/tinc
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+. /etc/sysconfig/tinc
+
+PROGRAM=/usr/sbin/tincd
+ARGS="$TINCD_ARGS"
+RUNLEVEL=3
+NEEDS="+network"
+
+. /etc/init.d/smgl_init
+
+stop() {
+ echo "Stopping $NAME..."
+ $PROGRAM $ARGS --kill
+ evaluate_retval
+}
diff --git a/net/tinc/init.d/tinc.conf b/net/tinc/init.d/tinc.conf
new file mode 100644
index 0000000..e32c8bc
--- /dev/null
+++ b/net/tinc/init.d/tinc.conf
@@ -0,0 +1,3 @@
+# For the arguments and description see tincd(8)
+
+TINCD_ARGS=""
diff --git a/printer/cups-filters/DEPENDS b/printer/cups-filters/DEPENDS
index 62a38ad..2fdfbb4 100755
--- a/printer/cups-filters/DEPENDS
+++ b/printer/cups-filters/DEPENDS
@@ -8,6 +8,7 @@ depends freetype2 &&
depends fontconfig &&
depends ijs &&
depends shared-mime-info &&
+runtime_depends bc &&
optional_depends JPEG \
'--enable-jpeg' \
'--disable-jpeg' \
diff --git a/printer/cups-filters/HISTORY b/printer/cups-filters/HISTORY
index 487119d..bc27516 100644
--- a/printer/cups-filters/HISTORY
+++ b/printer/cups-filters/HISTORY
@@ -1,3 +1,6 @@
+2012-08-01 Treeve Jelbert <treeve AT sourcemage.org>
+ * DEPENDS: runtime_depends bc
+
2012-07-27 Treeve Jelbert <treeve AT sourcemage.org>
* DETAILS: version 1.0.20
spell created
diff --git a/printer/pycups/HISTORY b/printer/pycups/HISTORY
index 4b2c124..d5f8580 100644
--- a/printer/pycups/HISTORY
+++ b/printer/pycups/HISTORY
@@ -1,3 +1,7 @@
+2012-07-31 Sukneet Basuta <sukneet AT sourcemage.org>
+ * PRE_BUILD: apply patch to fix compatibility with cups 1.6
+ * pycups-1.9.61-cups-1.6.patch: from upstream git, fixes pycups for
cups 1.6
+
2012-06-25 Ladislav Hagara <hgr AT vabo.cz>
* DETAILS: 1.9.61

diff --git a/printer/pycups/PRE_BUILD b/printer/pycups/PRE_BUILD
index c2c203b..e59d434 100755
--- a/printer/pycups/PRE_BUILD
+++ b/printer/pycups/PRE_BUILD
@@ -1,3 +1,5 @@
default_pre_build &&
+cd $SOURCE_DIRECTORY &&

-sed -i 's:mv build/lib:ln -sf build/lib:' $SOURCE_DIRECTORY/Makefile
+sed -i 's:mv build/lib:ln -sf build/lib:' $SOURCE_DIRECTORY/Makefile &&
+patch -p1 < $SPELL_DIRECTORY/pycups-1.9.61-cups-1.6.patch
diff --git a/printer/pycups/pycups-1.9.61-cups-1.6.patch
b/printer/pycups/pycups-1.9.61-cups-1.6.patch
new file mode 100644
index 0000000..705a713
--- /dev/null
+++ b/printer/pycups/pycups-1.9.61-cups-1.6.patch
@@ -0,0 +1,1675 @@
+From fd985079fd7075cfc7148918bd48eeafa143cf6b Mon Sep 17 00:00:00 2001
+From: Jiri Popelka <jpopelka AT redhat.com>
+Date: Wed, 11 Jul 2012 12:00:41 +0200
+Subject: [PATCH] Use ippGet/ippSet (accessors) for IPP API.
+
+CUPS 1.6 makes various structures private and
+introduces these ippGet and ippSet functions
+for all of the fields in these structures.
+http://www.cups.org/str.php?L3928
+
+We define (same signatures) our own accessors
+when CUPS < 1.6.
+---
+ cupsconnection.c | 579
+++++++++++++++++++++++++++--------------------------
+ cupsipp.c | 46 +++---
+ cupsmodule.c | 136 +++++++++++++
+ cupsmodule.h | 28 +++
+ 4 files changed, 482 insertions(+), 307 deletions(-)
+
+diff --git a/cupsconnection.c b/cupsconnection.c
+index 93305f0..5c9d1a5 100644
+--- a/cupsconnection.c
++++ b/cupsconnection.c
+@@ -477,10 +477,10 @@ do_printer_request (Connection *self, PyObject *args,
PyObject *kwds,
+ return NULL;
+ }
+
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
+- cupsLastError ());
++ ippGetStatusCode (answer) :
++ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+ debugprintf("<- do_printer_request (error)\n");
+@@ -562,7 +562,11 @@ PyObject_from_attr_value (ipp_attribute_t *attr, int i)
+ {
+ PyObject *val = NULL;
+ char unknown[100];
+- switch (attr->value_tag) {
++ int lower, upper;
++ int xres, yres;
++ ipp_res_t units;
++
++ switch (ippGetValueTag(attr)) {
+ case IPP_TAG_NAME:
+ case IPP_TAG_TEXT:
+ case IPP_TAG_KEYWORD:
+@@ -570,19 +574,20 @@ PyObject_from_attr_value (ipp_attribute_t *attr, int i)
+ case IPP_TAG_CHARSET:
+ case IPP_TAG_MIMETYPE:
+ case IPP_TAG_LANGUAGE:
+- val = PyObj_from_UTF8 (attr->values[i].string.text);
++ val = PyObj_from_UTF8 (ippGetString (attr, i, NULL));
+ break;
+ case IPP_TAG_INTEGER:
+ case IPP_TAG_ENUM:
+- val = PyInt_FromLong (attr->values[i].integer);
++ val = PyInt_FromLong (ippGetInteger (attr, i));
+ break;
+ case IPP_TAG_BOOLEAN:
+- val = PyBool_FromLong (attr->values[i].integer);
++ val = PyBool_FromLong (ippGetInteger (attr, i));
+ break;
+ case IPP_TAG_RANGE:
++ lower = ippGetRange (attr, i, &upper);
+ val = Py_BuildValue ("(ii)",
+- attr->values[i].range.lower,
+- attr->values[i].range.upper);
++ lower,
++ upper);
+ break;
+ case IPP_TAG_NOVALUE:
+ Py_INCREF (Py_None);
+@@ -594,14 +599,15 @@ PyObject_from_attr_value (ipp_attribute_t *attr, int i)
+ val = PyString_FromString ("(IPP_TAG_DATE)");
+ break;
+ case IPP_TAG_RESOLUTION:
++ xres = ippGetResolution(attr, i, &yres, &units);
+ val = Py_BuildValue ("(iii)",
+- attr->values[i].resolution.xres,
+- attr->values[i].resolution.yres,
+- attr->values[i].resolution.units);
++ xres,
++ yres,
++ units);
+ break;
+ default:
+ snprintf (unknown, sizeof (unknown),
+- "(unknown IPP value tag 0x%x)", attr->value_tag);
++ "(unknown IPP value tag 0x%x)", ippGetValueTag(attr));
+ val = PyString_FromString (unknown);
+ break;
+ }
+@@ -615,7 +621,7 @@ PyList_from_attr_values (ipp_attribute_t *attr)
+ PyObject *list = PyList_New (0);
+ int i;
+ debugprintf ("-> PyList_from_attr_values()\n");
+- for (i = 0; i < attr->num_values; i++) {
++ for (i = 0; i < ippGetCount (attr); i++) {
+ PyObject *val = PyObject_from_attr_value (attr, i);
+ if (val) {
+ PyList_Append (list, val);
+@@ -657,8 +663,8 @@ Connection_getPrinters (Connection *self)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
+- if (answer && answer->request.status.status_code == IPP_NOT_FOUND) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_FOUND) {
+ // No printers.
+ debugprintf ("<- Connection_getPrinters() = {} (no printers)\n");
+ ippDelete (answer);
+@@ -666,7 +672,7 @@ Connection_getPrinters (Connection *self)
+ }
+
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -675,71 +681,71 @@ Connection_getPrinters (Connection *self)
+ }
+
+ result = PyDict_New ();
+- for (attr = answer->attrs; attr; attr = attr->next) {
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer)) {
+ PyObject *dict;
+ char *printer = NULL;
+
+- while (attr && attr->group_tag != IPP_TAG_PRINTER)
+- attr = attr->next;
++ while (attr && ippGetGroupTag (attr) != IPP_TAG_PRINTER)
++ attr = ippNextAttribute (answer);
+
+ if (!attr)
+ break;
+
+ dict = PyDict_New ();
+- for (; attr && attr->group_tag == IPP_TAG_PRINTER;
+- attr = attr->next) {
++ for (; attr && ippGetGroupTag (attr) == IPP_TAG_PRINTER;
++ attr = ippNextAttribute (answer)) {
+ PyObject *val = NULL;
+
+- debugprintf ("Attribute: %s\n", attr->name);
+- if (!strcmp (attr->name, "printer-name") &&
+- attr->value_tag == IPP_TAG_NAME)
+- printer = attr->values[0].string.text;
+- else if ((!strcmp (attr->name, "printer-type") ||
+- !strcmp (attr->name, "printer-state")) &&
+- attr->value_tag == IPP_TAG_ENUM) {
+- int ptype = attr->values[0].integer;
++ debugprintf ("Attribute: %s\n", ippGetName (attr));
++ if (!strcmp (ippGetName (attr), "printer-name") &&
++ ippGetValueTag (attr) == IPP_TAG_NAME)
++ printer = (char *) ippGetString (attr, 0, NULL);
++ else if ((!strcmp (ippGetName (attr), "printer-type") ||
++ !strcmp (ippGetName (attr), "printer-state")) &&
++ ippGetValueTag (attr) == IPP_TAG_ENUM) {
++ int ptype = ippGetInteger (attr, 0);
+ val = PyInt_FromLong (ptype);
+ }
+- else if ((!strcmp (attr->name,
++ else if ((!strcmp (ippGetName (attr),
+ "printer-make-and-model") ||
+- !strcmp (attr->name, "printer-info") ||
+- !strcmp (attr->name, "printer-location") ||
+- !strcmp (attr->name, "printer-state-message")) &&
+- attr->value_tag == IPP_TAG_TEXT) {
+- val = PyObj_from_UTF8 (attr->values[0].string.text);
++ !strcmp (ippGetName (attr), "printer-info") ||
++ !strcmp (ippGetName (attr), "printer-location") ||
++ !strcmp (ippGetName (attr), "printer-state-message")) &&
++ ippGetValueTag (attr) == IPP_TAG_TEXT) {
++ val = PyObj_from_UTF8 (ippGetString (attr, 0, NULL));
+ }
+- else if (!strcmp (attr->name,
++ else if (!strcmp (ippGetName (attr),
+ "printer-state-reasons") &&
+- attr->value_tag == IPP_TAG_KEYWORD) {
++ ippGetValueTag (attr) == IPP_TAG_KEYWORD) {
+ val = PyList_from_attr_values (attr);
+ }
+- else if (!strcmp (attr->name,
++ else if (!strcmp (ippGetName (attr),
+ "printer-is-accepting-jobs") &&
+- attr->value_tag == IPP_TAG_BOOLEAN) {
+- int b = attr->values[0].boolean;
++ ippGetValueTag (attr) == IPP_TAG_BOOLEAN) {
++ int b = ippGetBoolean (attr, 0);
+ val = PyInt_FromLong (b);
+ }
+- else if ((!strcmp (attr->name,
++ else if ((!strcmp (ippGetName (attr),
+ "printer-up-time") ||
+- !strcmp (attr->name,
++ !strcmp (ippGetName (attr),
+ "queued-job-count")) &&
+- attr->value_tag == IPP_TAG_INTEGER) {
+- int u = attr->values[0].integer;
++ ippGetValueTag (attr) == IPP_TAG_INTEGER) {
++ int u = ippGetInteger (attr, 0);
+ val = PyInt_FromLong (u);
+ }
+- else if ((!strcmp (attr->name, "device-uri") ||
+- !strcmp (attr->name, "printer-uri-supported")) &&
+- attr->value_tag == IPP_TAG_URI) {
+- val = PyObj_from_UTF8 (attr->values[0].string.text);
++ else if ((!strcmp (ippGetName (attr), "device-uri") ||
++ !strcmp (ippGetName (attr), "printer-uri-supported")) &&
++ ippGetValueTag (attr) == IPP_TAG_URI) {
++ val = PyObj_from_UTF8 (ippGetString (attr, 0, NULL));
+ }
+- else if (!strcmp (attr->name, "printer-is-shared") &&
+- attr->value_tag == IPP_TAG_BOOLEAN) {
+- val = PyBool_FromLong (attr->values[0].boolean);
++ else if (!strcmp (ippGetName (attr), "printer-is-shared") &&
++ ippGetValueTag (attr) == IPP_TAG_BOOLEAN) {
++ val = PyBool_FromLong (ippGetBoolean (attr, 0));
+ }
+
+ if (val) {
+- debugprintf ("Added %s to dict\n", attr->name);
+- PyDict_SetItemString (dict, attr->name, val);
++ debugprintf ("Added %s to dict\n", ippGetName (attr));
++ PyDict_SetItemString (dict, ippGetName (attr), val);
+ Py_DECREF (val);
+ }
+ }
+@@ -780,8 +786,8 @@ Connection_getClasses (Connection *self)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
+- if (answer && answer->request.status.status_code == IPP_NOT_FOUND) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_FOUND) {
+ // No classes.
+ debugprintf ("<- Connection_getClasses() = {} (no classes)\n");
+ ippDelete (answer);
+@@ -789,7 +795,7 @@ Connection_getClasses (Connection *self)
+ }
+
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -798,28 +804,28 @@ Connection_getClasses (Connection *self)
+ }
+
+ result = PyDict_New ();
+- for (attr = answer->attrs; attr; attr = attr->next) {
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer)) {
+ PyObject *members = NULL;
+ char *classname = NULL;
+ char *printer_uri = NULL;
+
+- while (attr && attr->group_tag != IPP_TAG_PRINTER)
+- attr = attr->next;
++ while (attr && ippGetGroupTag (attr) != IPP_TAG_PRINTER)
++ attr = ippNextAttribute (answer);
+
+ if (!attr)
+ break;
+
+- for (; attr && attr->group_tag == IPP_TAG_PRINTER;
+- attr = attr->next) {
+- debugprintf ("Attribute: %s\n", attr->name);
+- if (!strcmp (attr->name, "printer-name") &&
+- attr->value_tag == IPP_TAG_NAME)
+- classname = attr->values[0].string.text;
+- else if (!strcmp (attr->name, "printer-uri-supported") &&
+- attr->value_tag == IPP_TAG_URI)
+- printer_uri = attr->values[0].string.text;
+- else if (!strcmp (attr->name, "member-names") &&
+- attr->value_tag == IPP_TAG_NAME) {
++ for (; attr && ippGetGroupTag (attr) == IPP_TAG_PRINTER;
++ attr = ippNextAttribute (answer)) {
++ debugprintf ("Attribute: %s\n", ippGetName (attr));
++ if (!strcmp (ippGetName (attr), "printer-name") &&
++ ippGetValueTag (attr) == IPP_TAG_NAME)
++ classname = (char *) ippGetString (attr, 0, NULL);
++ else if (!strcmp (ippGetName (attr), "printer-uri-supported") &&
++ ippGetValueTag (attr) == IPP_TAG_URI)
++ printer_uri = (char *) ippGetString (attr, 0, NULL);
++ else if (!strcmp (ippGetName (attr), "member-names") &&
++ ippGetValueTag (attr) == IPP_TAG_NAME) {
+ Py_XDECREF (members);
+ members = PyList_from_attr_values (attr);
+ }
+@@ -1057,9 +1063,9 @@ do_getPPDs (Connection *self, PyObject *args, PyObject
*kwds, int all_lists)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -1068,24 +1074,24 @@ do_getPPDs (Connection *self, PyObject *args,
PyObject *kwds, int all_lists)
+ }
+
+ result = PyDict_New ();
+- for (attr = answer->attrs; attr; attr = attr->next) {
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer)) {
+ PyObject *dict;
+ char *ppdname = NULL;
+
+- while (attr && attr->group_tag != IPP_TAG_PRINTER)
+- attr = attr->next;
++ while (attr && ippGetGroupTag (attr) != IPP_TAG_PRINTER)
++ attr = ippNextAttribute (answer);
+
+ if (!attr)
+ break;
+
+ dict = PyDict_New ();
+- for (; attr && attr->group_tag == IPP_TAG_PRINTER;
+- attr = attr->next) {
++ for (; attr && ippGetGroupTag (attr) == IPP_TAG_PRINTER;
++ attr = ippNextAttribute (answer)) {
+ PyObject *val = NULL;
+- debugprintf ("Attribute: %s\n", attr->name);
+- if (!strcmp (attr->name, "ppd-name") &&
+- attr->value_tag == IPP_TAG_NAME)
+- ppdname = attr->values[0].string.text;
++ debugprintf ("Attribute: %s\n", ippGetName (attr));
++ if (!strcmp (ippGetName (attr), "ppd-name") &&
++ ippGetValueTag (attr) == IPP_TAG_NAME)
++ ppdname = (char *) ippGetString (attr, 0, NULL);
+ else {
+ if (all_lists)
+ val = PyList_from_attr_values (attr);
+@@ -1093,8 +1099,8 @@ do_getPPDs (Connection *self, PyObject *args, PyObject
*kwds, int all_lists)
+ val = PyObject_from_attr_value (attr, 0);
+
+ if (val) {
+- debugprintf ("Adding %s to ppd dict\n", attr->name);
+- PyDict_SetItemString (dict, attr->name, val);
++ debugprintf ("Adding %s to ppd dict\n", ippGetName (attr));
++ PyDict_SetItemString (dict, ippGetName (attr), val);
+ Py_DECREF (val);
+ }
+ }
+@@ -1201,10 +1207,10 @@ Connection_getDocument (Connection *self, PyObject
*args)
+ Connection_end_allow_threads (self);
+
+ close (fd);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ unlink (docfilename);
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -1214,11 +1220,11 @@ Connection_getDocument (Connection *self, PyObject
*args)
+
+ if ((attr = ippFindAttribute (answer, "document-format",
+ IPP_TAG_MIMETYPE)) != NULL)
+- format = attr->values[0].string.text;
++ format = ippGetString (attr, 0, NULL);
+
+ if ((attr = ippFindAttribute (answer, "document-name",
+ IPP_TAG_NAME)) != NULL)
+- name = attr->values[0].string.text;
++ name = ippGetString (attr, 0, NULL);
+
+ dict = PyDict_New ();
+
+@@ -1362,9 +1368,9 @@ Connection_getDevices (Connection *self, PyObject
*args, PyObject *kwds)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -1373,31 +1379,31 @@ Connection_getDevices (Connection *self, PyObject
*args, PyObject *kwds)
+ }
+
+ result = PyDict_New ();
+- for (attr = answer->attrs; attr; attr = attr->next) {
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer)) {
+ PyObject *dict;
+ char *device_uri = NULL;
+
+- while (attr && attr->group_tag != IPP_TAG_PRINTER)
+- attr = attr->next;
++ while (attr && ippGetGroupTag (attr) != IPP_TAG_PRINTER)
++ attr = ippNextAttribute (answer);
+
+ if (!attr)
+ break;
+
+ dict = PyDict_New ();
+- for (; attr && attr->group_tag == IPP_TAG_PRINTER;
+- attr = attr->next) {
++ for (; attr && ippGetGroupTag (attr) == IPP_TAG_PRINTER;
++ attr = ippNextAttribute (answer)) {
+ PyObject *val = NULL;
+
+- debugprintf ("Attribute: %s\n", attr->name);
+- if (!strcmp (attr->name, "device-uri") &&
+- attr->value_tag == IPP_TAG_URI)
+- device_uri = attr->values[0].string.text;
++ debugprintf ("Attribute: %s\n", ippGetName (attr));
++ if (!strcmp (ippGetName (attr), "device-uri") &&
++ ippGetValueTag (attr) == IPP_TAG_URI)
++ device_uri = (char *) ippGetString (attr, 0, NULL);
+ else
+ val = PyObject_from_attr_value (attr, 0);
+
+ if (val) {
+- debugprintf ("Adding %s to device dict\n", attr->name);
+- PyDict_SetItemString (dict, attr->name, val);
++ debugprintf ("Adding %s to device dict\n", ippGetName (attr));
++ PyDict_SetItemString (dict, ippGetName (attr), val);
+ Py_DECREF (val);
+ }
+ }
+@@ -1523,9 +1529,9 @@ Connection_getJobs (Connection *self, PyObject *args,
PyObject *kwds)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -1534,56 +1540,56 @@ Connection_getJobs (Connection *self, PyObject
*args, PyObject *kwds)
+ }
+
+ result = PyDict_New ();
+- for (attr = answer->attrs; attr; attr = attr->next) {
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer)) {
+ PyObject *dict;
+ int job_id = -1;
+
+- while (attr && attr->group_tag != IPP_TAG_JOB)
+- attr = attr->next;
++ while (attr && ippGetGroupTag (attr) != IPP_TAG_JOB)
++ attr = ippNextAttribute (answer);
+
+ if (!attr)
+ break;
+
+ dict = PyDict_New ();
+- for (; attr && attr->group_tag == IPP_TAG_JOB;
+- attr = attr->next) {
++ for (; attr && ippGetGroupTag (attr) == IPP_TAG_JOB;
++ attr = ippNextAttribute (answer)) {
+ PyObject *val = NULL;
+
+- debugprintf ("Attribute: %s\n", attr->name);
+- if (!strcmp (attr->name, "job-id") &&
+- attr->value_tag == IPP_TAG_INTEGER)
+- job_id = attr->values[0].integer;
+- else if (((!strcmp (attr->name, "job-k-octets") ||
+- !strcmp (attr->name, "job-priority") ||
+- !strcmp (attr->name, "time-at-creation") ||
+- !strcmp (attr->name, "time-at-processing") ||
+- !strcmp (attr->name, "time-at-completed") ||
+- !strcmp (attr->name, "job-media-sheets") ||
+- !strcmp (attr->name, "job-media-sheets-completed")) &&
+- attr->value_tag == IPP_TAG_INTEGER) ||
+- (!strcmp (attr->name, "job-state") &&
+- attr->value_tag == IPP_TAG_ENUM))
+- val = PyInt_FromLong (attr->values[0].integer);
+- else if ((!strcmp (attr->name, "job-name") &&
+- attr->value_tag == IPP_TAG_NAME) ||
+- (!strcmp (attr->name, "job-originating-user-name") &&
+- attr->value_tag == IPP_TAG_NAME) ||
+- (!strcmp (attr->name, "job-printer-uri") &&
+- attr->value_tag == IPP_TAG_URI))
+- val = PyObj_from_UTF8 (attr->values[0].string.text);
+- else if (!strcmp (attr->name, "job-preserved") &&
+- attr->value_tag == IPP_TAG_BOOLEAN)
+- val = PyBool_FromLong (attr->values[0].integer);
++ debugprintf ("Attribute: %s\n", ippGetName (attr));
++ if (!strcmp (ippGetName (attr), "job-id") &&
++ ippGetValueTag (attr) == IPP_TAG_INTEGER)
++ job_id = ippGetInteger (attr, 0);
++ else if (((!strcmp (ippGetName (attr), "job-k-octets") ||
++ !strcmp (ippGetName (attr), "job-priority") ||
++ !strcmp (ippGetName (attr), "time-at-creation") ||
++ !strcmp (ippGetName (attr), "time-at-processing") ||
++ !strcmp (ippGetName (attr), "time-at-completed") ||
++ !strcmp (ippGetName (attr), "job-media-sheets") ||
++ !strcmp (ippGetName (attr), "job-media-sheets-completed")) &&
++ ippGetValueTag (attr) == IPP_TAG_INTEGER) ||
++ (!strcmp (ippGetName (attr), "job-state") &&
++ ippGetValueTag (attr) == IPP_TAG_ENUM))
++ val = PyInt_FromLong (ippGetInteger (attr, 0));
++ else if ((!strcmp (ippGetName (attr), "job-name") &&
++ ippGetValueTag (attr) == IPP_TAG_NAME) ||
++ (!strcmp (ippGetName (attr), "job-originating-user-name") &&
++ ippGetValueTag (attr) == IPP_TAG_NAME) ||
++ (!strcmp (ippGetName (attr), "job-printer-uri") &&
++ ippGetValueTag (attr) == IPP_TAG_URI))
++ val = PyObj_from_UTF8 (ippGetString (attr, 0, NULL));
++ else if (!strcmp (ippGetName (attr), "job-preserved") &&
++ ippGetValueTag (attr) == IPP_TAG_BOOLEAN)
++ val = PyBool_FromLong (ippGetInteger (attr, 0));
+ else {
+- if (attr->num_values > 1)
++ if (ippGetCount (attr) > 1)
+ val = PyList_from_attr_values (attr);
+ else
+ val = PyObject_from_attr_value (attr, 0);
+ }
+
+ if (val) {
+- debugprintf ("Adding %s to job dict\n", attr->name);
+- PyDict_SetItemString (dict, attr->name, val);
++ debugprintf ("Adding %s to job dict\n", ippGetName (attr));
++ PyDict_SetItemString (dict, ippGetName (attr), val);
+ Py_DECREF (val);
+ }
+ }
+@@ -1643,9 +1649,9 @@ Connection_getJobAttributes (Connection *self,
PyObject *args, PyObject *kwds)
+ Connection_end_allow_threads (self);
+ if (requested_attrs)
+ free_requested_attrs (n_attrs, attrs);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -1654,12 +1660,12 @@ Connection_getJobAttributes (Connection *self,
PyObject *args, PyObject *kwds)
+ }
+
+ result = PyDict_New ();
+- for (attr = answer->attrs; attr; attr = attr->next) {
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer)) {
+ PyObject *obj;
+
+- debugprintf ("Attr: %s\n", attr->name);
+- if (attr->num_values > 1 ||
+- !strcmp (attr->name, "job-printer-state-reasons"))
++ debugprintf ("Attr: %s\n", ippGetName (attr));
++ if (ippGetCount (attr) > 1 ||
++ !strcmp (ippGetName (attr), "job-printer-state-reasons"))
+ obj = PyList_from_attr_values (attr);
+ else
+ obj = PyObject_from_attr_value (attr, 0);
+@@ -1668,7 +1674,7 @@ Connection_getJobAttributes (Connection *self,
PyObject *args, PyObject *kwds)
+ // Can't represent this.
+ continue;
+
+- PyDict_SetItemString (result, attr->name, obj);
++ PyDict_SetItemString (result, ippGetName (attr), obj);
+ Py_DECREF (obj);
+ }
+
+@@ -1701,9 +1707,9 @@ Connection_cancelJob (Connection *self, PyObject
*args, PyObject *kwds)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/jobs/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -1774,7 +1780,7 @@ Connection_cancelAllJobs (Connection *self, PyObject
*args, PyObject *kwds)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/admin/");
+ Connection_end_allow_threads (self);
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ ippDelete (answer);
+ if (uriobj)
+ break;
+@@ -1790,9 +1796,9 @@ Connection_cancelAllJobs (Connection *self, PyObject
*args, PyObject *kwds)
+ if (uriobj)
+ free (uri);
+
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -1864,9 +1870,9 @@ Connection_moveJob (Connection *self, PyObject *args,
PyObject *kwds)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/jobs");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -1931,9 +1937,9 @@ Connection_authenticateJob (Connection *self, PyObject
*args)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/jobs/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -1977,9 +1983,9 @@ Connection_setJobHoldUntil (Connection *self, PyObject
*args)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/jobs/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2017,9 +2023,9 @@ Connection_restartJob (Connection *self, PyObject
*args, PyObject *kwds)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/jobs/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2314,9 +2320,9 @@ Connection_addPrinter (Connection *self, PyObject
*args, PyObject *kwds)
+ return NULL;
+ }
+
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2364,9 +2370,9 @@ Connection_setPrinterDevice (Connection *self,
PyObject *args)
+ return NULL;
+ }
+
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2411,7 +2417,7 @@ Connection_setPrinterInfo (Connection *self, PyObject
*args)
+ return NULL;
+ }
+
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ // Perhaps it's a class, not a printer.
+ ippDelete (answer);
+ request = add_modify_class_request (name);
+@@ -2420,9 +2426,9 @@ Connection_setPrinterInfo (Connection *self, PyObject
*args)
+
+ free (name);
+ free (info);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2467,7 +2473,7 @@ Connection_setPrinterLocation (Connection *self,
PyObject *args)
+ return NULL;
+ }
+
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ // Perhaps it's a class, not a printer.
+ ippDelete (answer);
+ request = add_modify_class_request (name);
+@@ -2476,9 +2482,9 @@ Connection_setPrinterLocation (Connection *self,
PyObject *args)
+
+ free (name);
+ free (location);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2516,7 +2522,7 @@ Connection_setPrinterShared (Connection *self,
PyObject *args)
+ return NULL;
+ }
+
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ // Perhaps it's a class, not a printer.
+ ippDelete (answer);
+ request = add_modify_class_request (name);
+@@ -2524,9 +2530,9 @@ Connection_setPrinterShared (Connection *self,
PyObject *args)
+ }
+
+ free (name);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2571,8 +2577,8 @@ Connection_setPrinterJobSheets (Connection *self,
PyObject *args)
+ for (i = 0; i < 2; i++) {
+ a = ippAddStrings (request, IPP_TAG_PRINTER, IPP_TAG_NAME,
+ "job-sheets-default", 2, NULL, NULL);
+- a->values[0].string.text = strdup (start);
+- a->values[1].string.text = strdup (end);
++ ippSetString(request, &a, 0, strdup (start));
++ ippSetString(request, &a, 1, strdup (end));
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/admin/");
+ Connection_end_allow_threads (self);
+@@ -2582,7 +2588,7 @@ Connection_setPrinterJobSheets (Connection *self,
PyObject *args)
+ return NULL;
+ }
+
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ ippDelete (answer);
+ // Perhaps it's a class, not a printer.
+ request = add_modify_class_request (name);
+@@ -2592,9 +2598,9 @@ Connection_setPrinterJobSheets (Connection *self,
PyObject *args)
+ free (name);
+ free (start);
+ free (end);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2639,7 +2645,7 @@ Connection_setPrinterErrorPolicy (Connection *self,
PyObject *args)
+ return NULL;
+ }
+
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ ippDelete (answer);
+ // Perhaps it's a class, not a printer.
+ request = add_modify_class_request (name);
+@@ -2648,9 +2654,9 @@ Connection_setPrinterErrorPolicy (Connection *self,
PyObject *args)
+
+ free (name);
+ free (policy);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2695,7 +2701,7 @@ Connection_setPrinterOpPolicy (Connection *self,
PyObject *args)
+ return NULL;
+ }
+
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ ippDelete (answer);
+ // Perhaps it's a class, not a printer.
+ request = add_modify_class_request (name);
+@@ -2704,9 +2710,9 @@ Connection_setPrinterOpPolicy (Connection *self,
PyObject *args)
+
+ free (name);
+ free (policy);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2750,21 +2756,21 @@ do_requesting_user_names (Connection *self, PyObject
*args,
+ int k;
+ PyErr_SetString (PyExc_TypeError, "String required");
+ for (k = 0; k < j; k++) {
+- free (attr->values[k].string.text);
+- attr->values[k].string.text = NULL;
++ free ((void *)ippGetString (attr, k, NULL));
++ ippSetString(request, &attr, k, NULL);
+ }
+ ippDelete (request);
+ return NULL;
+ }
+- attr->values[j].string.text = strdup (PyString_AsString (username));
++ ippSetString(request, &attr, j, strdup (PyString_AsString
(username)));
+ }
+ } else {
+ attr = ippAddStrings (request, IPP_TAG_PRINTER, IPP_TAG_NAME,
+ requeststr, 1, NULL, NULL);
+ if (strstr (requeststr, "denied"))
+- attr->values[0].string.text = strdup ("none");
++ ippSetString(request, &attr, 0, strdup ("none"));
+ else
+- attr->values[0].string.text = strdup ("all");
++ ippSetString(request, &attr, 0, strdup ("all"));
+ }
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/admin/");
+@@ -2775,7 +2781,7 @@ do_requesting_user_names (Connection *self, PyObject
*args,
+ return NULL;
+ }
+
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ ippDelete (answer);
+ // Perhaps it's a class, not a printer.
+ request = add_modify_class_request (name);
+@@ -2783,9 +2789,9 @@ do_requesting_user_names (Connection *self, PyObject
*args,
+ }
+
+ free (name);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2872,7 +2878,7 @@ Connection_addPrinterOptionDefault (Connection *self,
PyObject *args)
+ opt, len, NULL, NULL);
+ for (j = 0; j < len; j++) {
+ PyObject *each = PySequence_GetItem (pyvalue, j);
+- attr->values[j].string.text = PyObject_to_string (each);
++ ippSetString(request, &attr, j, PyObject_to_string (each));
+ }
+ } else
+ ippAddString (request, IPP_TAG_PRINTER, IPP_TAG_NAME,
+@@ -2887,7 +2893,7 @@ Connection_addPrinterOptionDefault (Connection *self,
PyObject *args)
+ return NULL;
+ }
+
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ ippDelete (answer);
+ // Perhaps it's a class, not a printer.
+ request = add_modify_class_request (name);
+@@ -2896,9 +2902,9 @@ Connection_addPrinterOptionDefault (Connection *self,
PyObject *args)
+
+ free (name);
+ free (option);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -2950,7 +2956,7 @@ Connection_deletePrinterOptionDefault (Connection
*self, PyObject *args)
+ return NULL;
+ }
+
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ ippDelete (answer);
+ // Perhaps it's a class, not a printer.
+ request = add_modify_class_request (name);
+@@ -2959,9 +2965,9 @@ Connection_deletePrinterOptionDefault (Connection
*self, PyObject *args)
+
+ free (name);
+ free (option);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -3048,7 +3054,7 @@ Connection_getPrinterAttributes (Connection *self,
PyObject *args,
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ ippDelete (answer);
+ if (uriobj)
+ break;
+@@ -3067,9 +3073,9 @@ Connection_getPrinterAttributes (Connection *self,
PyObject *args,
+ if (requested_attrs)
+ free_requested_attrs (n_attrs, attrs);
+
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -3079,28 +3085,28 @@ Connection_getPrinterAttributes (Connection *self,
PyObject *args,
+ }
+
+ ret = PyDict_New ();
+- for (attr = answer->attrs; attr; attr = attr->next) {
+- while (attr && attr->group_tag != IPP_TAG_PRINTER)
+- attr = attr->next;
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer)) {
++ while (attr && ippGetGroupTag (attr) != IPP_TAG_PRINTER)
++ attr = ippNextAttribute (answer);
+
+ if (!attr)
+ break;
+
+- for (; attr && attr->group_tag == IPP_TAG_PRINTER;
+- attr = attr->next) {
+- size_t namelen = strlen (attr->name);
+- int is_list = attr->num_values > 1;
++ for (; attr && ippGetGroupTag (attr) == IPP_TAG_PRINTER;
++ attr = ippNextAttribute (answer)) {
++ size_t namelen = strlen (ippGetName (attr));
++ int is_list = ippGetCount (attr) > 1;
+
+- debugprintf ("Attribute: %s\n", attr->name);
++ debugprintf ("Attribute: %s\n", ippGetName (attr));
+ // job-sheets-default is special, since it is always two values.
+ // Make it a tuple.
+- if (!strcmp (attr->name, "job-sheets-default") &&
+- attr->value_tag == IPP_TAG_NAME) {
++ if (!strcmp (ippGetName (attr), "job-sheets-default") &&
++ ippGetValueTag (attr) == IPP_TAG_NAME) {
+ PyObject *startobj, *endobj, *tuple;
+ const char *start, *end;
+- start = attr->values[0].string.text;
+- if (attr->num_values >= 2)
+- end = attr->values[1].string.text;
++ start = ippGetString (attr, 0, NULL);
++ if (ippGetCount (attr) >= 2)
++ end = ippGetString (attr, 1, NULL);
+ else
+ end = "";
+
+@@ -3134,7 +3140,7 @@ Connection_getPrinterAttributes (Connection *self,
PyObject *args,
+ NULL
+ };
+
+- switch (attr->value_tag) {
++ switch (ippGetValueTag (attr)) {
+ case IPP_TAG_NAME:
+ case IPP_TAG_TEXT:
+ case IPP_TAG_KEYWORD:
+@@ -3145,12 +3151,12 @@ Connection_getPrinterAttributes (Connection *self,
PyObject *args,
+ case IPP_TAG_ENUM:
+ case IPP_TAG_INTEGER:
+ case IPP_TAG_RESOLUTION:
+- is_list = !strcmp (attr->name + namelen - 10, "-supported");
++ is_list = !strcmp (ippGetName (attr) + namelen - 10, "-supported");
+
+ if (!is_list) {
+ const char **opt;
+ for (opt = multivalue_options; !is_list && *opt; opt++)
+- is_list = !strcmp (attr->name, *opt);
++ is_list = !strcmp (ippGetName (attr), *opt);
+ }
+
+ default:
+@@ -3160,11 +3166,11 @@ Connection_getPrinterAttributes (Connection *self,
PyObject *args,
+
+ if (is_list) {
+ PyObject *list = PyList_from_attr_values (attr);
+- PyDict_SetItemString (ret, attr->name, list);
++ PyDict_SetItemString (ret, ippGetName (attr), list);
+ Py_DECREF (list);
+ } else {
+ PyObject *val = PyObject_from_attr_value (attr, i);
+- PyDict_SetItemString (ret, attr->name, val);
++ PyDict_SetItemString (ret, ippGetName (attr), val);
+ }
+ }
+
+@@ -3213,8 +3219,8 @@ Connection_addPrinterToClass (Connection *self,
PyObject *args)
+ printers = ippFindAttribute (answer, "member-names", IPP_TAG_NAME);
+ if (printers) {
+ int i;
+- for (i = 0; i < printers->num_values; i++) {
+- if (!strcasecmp (printers->values[i].string.text, printername)) {
++ for (i = 0; i < ippGetCount (printers); i++) {
++ if (!strcasecmp (ippGetString (printers, i, NULL), printername)) {
+ ippDelete (answer);
+ PyErr_SetString (PyExc_RuntimeError, "Printer already in class");
+ free (printername);
+@@ -3237,11 +3243,13 @@ Connection_addPrinterToClass (Connection *self,
PyObject *args)
+ ipp_attribute_t *attr;
+ int i;
+ attr = ippAddStrings (request, IPP_TAG_PRINTER, IPP_TAG_URI,
+- "member-uris", printers->num_values + 1,
++ "member-uris", ippGetCount (printers) + 1,
+ NULL, NULL);
+- for (i = 0; i < printers->num_values; i++)
+- attr->values[i].string.text = strdup
(printers->values[i].string.text);
+- attr->values[printers->num_values].string.text = strdup (printeruri);
++ for (i = 0; i < ippGetCount (printers); i++)
++ ippSetString(request, &attr, i,
++ strdup (ippGetString (printers, i, NULL)));
++ ippSetString(request, &attr, ippGetCount (printers), strdup
(printeruri));
++
+ }
+
+ ippDelete (answer);
+@@ -3261,9 +3269,9 @@ Connection_addPrinterToClass (Connection *self,
PyObject *args)
+ return NULL;
+ }
+
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -3322,19 +3330,19 @@ Connection_deletePrinterFromClass (Connection *self,
PyObject *args)
+ }
+
+ printers = ippFindAttribute (answer, "member-names", IPP_TAG_NAME);
+- for (i = 0; printers && i < printers->num_values; i++)
+- if (!strcasecmp (printers->values[i].string.text, printername))
++ for (i = 0; printers && i < ippGetCount (printers); i++)
++ if (!strcasecmp (ippGetString (printers, i, NULL), printername))
+ break;
+
+ free (printername);
+- if (!printers || i == printers->num_values) {
++ if (!printers || i == ippGetCount (printers)) {
+ ippDelete (answer);
+ PyErr_SetString (PyExc_RuntimeError, "Printer not in class");
+ return NULL;
+ }
+
+ printers = ippFindAttribute (answer, "member-uris", IPP_TAG_URI);
+- if (!printers || i >= printers->num_values) {
++ if (!printers || i >= ippGetCount (printers)) {
+ ippDelete (answer);
+ PyErr_SetString (PyExc_RuntimeError, "No member URIs returned");
+ return NULL;
+@@ -3345,21 +3353,21 @@ Connection_deletePrinterFromClass (Connection *self,
PyObject *args)
+ "printer-uri", NULL, classuri);
+
+ // Only printer in class? Delete the class.
+- if (printers->num_values == 1)
+- request->request.op.operation_id = CUPS_DELETE_CLASS;
++ if (ippGetCount (printers) == 1)
++ ippSetOperation (request, CUPS_DELETE_CLASS);
+ else {
+ // Trim the printer from the list.
+ ipp_attribute_t *newlist;
+ int j;
+ newlist = ippAddStrings (request, IPP_TAG_PRINTER, IPP_TAG_URI,
+- "member-uris", printers->num_values - 1,
++ "member-uris", ippGetCount (printers) - 1,
+ NULL, NULL);
+ for (j = 0; j < i; j++)
+- newlist->values[j].string.text =
+- strdup (printers->values[j].string.text);
+- for (j = i; j < newlist->num_values; j++)
+- newlist->values[j].string.text =
+- strdup (printers->values[j + 1].string.text);
++ ippSetString(request, &newlist, j,
++ strdup (ippGetString (printers, j, NULL)));
++ for (j = i; j < ippGetCount(newlist); j++)
++ ippSetString(request, &newlist, j,
++ strdup (ippGetString (printers, j+1, NULL)));
+ }
+
+ ippDelete (answer);
+@@ -3372,9 +3380,9 @@ Connection_deletePrinterFromClass (Connection *self,
PyObject *args)
+ return NULL;
+ }
+
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -3408,9 +3416,9 @@ Connection_deleteClass (Connection *self, PyObject
*args)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/admin/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -3698,7 +3706,7 @@ Connection_printTestPage (Connection *self, PyObject
*args, PyObject *kwds)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoFileRequest (self->http, request, resource, file);
+ Connection_end_allow_threads (self);
+- if (answer && answer->request.status.status_code == IPP_NOT_POSSIBLE) {
++ if (answer && ippGetStatusCode (answer) == IPP_NOT_POSSIBLE) {
+ ippDelete (answer);
+ // Perhaps it's a class, not a printer.
+ snprintf (uri, sizeof (uri), "ipp://localhost/classes/%s", printer);
+@@ -3715,9 +3723,9 @@ Connection_printTestPage (Connection *self, PyObject
*args, PyObject *kwds)
+ if (userobj)
+ free (user);
+
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
+ set_ipp_error (answer ?
+- answer->request.status.status_code :
++ ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -3726,7 +3734,7 @@ Connection_printTestPage (Connection *self, PyObject
*args, PyObject *kwds)
+
+ attr = ippFindAttribute (answer, "job-id", IPP_TAG_INTEGER);
+ if (attr)
+- jobid = attr->values[0].integer;
++ jobid = ippGetInteger (attr, 0);
+
+ ippDelete (answer);
+ return Py_BuildValue ("i", jobid);
+@@ -3922,8 +3930,8 @@ Connection_getSubscriptions (Connection *self,
PyObject *args, PyObject *kwds)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
+- set_ipp_error (answer ? answer->request.status.status_code :
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
++ set_ipp_error (answer ? ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -3932,14 +3940,14 @@ Connection_getSubscriptions (Connection *self,
PyObject *args, PyObject *kwds)
+ }
+
+ result = PyList_New (0);
+- for (attr = answer->attrs; attr; attr = attr->next)
+- if (attr->group_tag == IPP_TAG_SUBSCRIPTION)
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer))
++ if (ippGetGroupTag (attr) == IPP_TAG_SUBSCRIPTION)
+ break;
+
+ subscription = NULL;
+- for (; attr; attr = attr->next) {
++ for (; attr; attr = ippNextAttribute (answer)) {
+ PyObject *obj;
+- if (attr->group_tag == IPP_TAG_ZERO) {
++ if (ippGetGroupTag (attr) == IPP_TAG_ZERO) {
+ // End of subscription.
+ if (subscription) {
+ PyList_Append (result, subscription);
+@@ -3950,7 +3958,7 @@ Connection_getSubscriptions (Connection *self,
PyObject *args, PyObject *kwds)
+ continue;
+ }
+
+- if (attr->num_values > 1 || !strcmp (attr->name, "notify-events"))
++ if (ippGetCount (attr) > 1 || !strcmp (ippGetName (attr),
"notify-events"))
+ obj = PyList_from_attr_values (attr);
+ else
+ obj = PyObject_from_attr_value (attr, 0);
+@@ -3962,7 +3970,7 @@ Connection_getSubscriptions (Connection *self,
PyObject *args, PyObject *kwds)
+ if (!subscription)
+ subscription = PyDict_New ();
+
+- PyDict_SetItemString (subscription, attr->name, obj);
++ PyDict_SetItemString (subscription, ippGetName (attr), obj);
+ Py_DECREF (obj);
+ }
+
+@@ -4060,7 +4068,8 @@ Connection_createSubscription (Connection *self,
PyObject *args,
+ n, NULL, NULL);
+ for (i = 0; i < n; i++) {
+ PyObject *event = PyList_GetItem (events, i);
+- attr->values[i].string.text = strdup (PyString_AsString (event));
++ //attr->values[i].string.text = strdup (PyString_AsString (event));
++ ippSetString(request, &attr, i, strdup (PyString_AsString (event)));
+ }
+ }
+
+@@ -4079,8 +4088,8 @@ Connection_createSubscription (Connection *self,
PyObject *args,
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
+- set_ipp_error (answer ? answer->request.status.status_code :
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
++ set_ipp_error (answer ? ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -4089,14 +4098,14 @@ Connection_createSubscription (Connection *self,
PyObject *args,
+ }
+
+ i = -1;
+- for (attr = answer->attrs; attr; attr = attr->next) {
+- if (attr->group_tag == IPP_TAG_SUBSCRIPTION) {
+- if (attr->value_tag == IPP_TAG_INTEGER &&
+- !strcmp (attr->name, "notify-subscription-id"))
+- i = attr->values[0].integer;
+- else if (attr->value_tag == IPP_TAG_ENUM &&
+- !strcmp (attr->name, "notify-status-code"))
+- debugprintf ("notify-status-code = %d\n", attr->values[0].integer);
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer)) {
++ if (ippGetGroupTag (attr) == IPP_TAG_SUBSCRIPTION) {
++ if (ippGetValueTag (attr) == IPP_TAG_INTEGER &&
++ !strcmp (ippGetName (attr), "notify-subscription-id"))
++ i = ippGetInteger (attr, 0);
++ else if (ippGetValueTag (attr) == IPP_TAG_ENUM &&
++ !strcmp (ippGetName (attr), "notify-status-code"))
++ debugprintf ("notify-status-code = %d\n", ippGetInteger (attr, 0));
+ }
+ }
+
+@@ -4162,7 +4171,8 @@ Connection_getNotifications (Connection *self,
PyObject *args, PyObject *kwds)
+ "notify-subscription-ids", num_ids, NULL);
+ for (i = 0; i < num_ids; i++) {
+ PyObject *id = PyList_GetItem (subscription_ids, i);
+- attr->values[i].integer = PyInt_AsLong (id);
++ //attr->values[i].integer = PyInt_AsLong (id);
++ ippSetInteger (request, &attr, i, PyInt_AsLong (id));
+ }
+
+ if (sequence_numbers) {
+@@ -4170,15 +4180,16 @@ Connection_getNotifications (Connection *self,
PyObject *args, PyObject *kwds)
+ "notify-sequence-numbers", num_seqs, NULL);
+ for (i = 0; i < num_seqs; i++) {
+ PyObject *num = PyList_GetItem (sequence_numbers, i);
+- attr->values[i].integer = PyInt_AsLong (num);
++ //attr->values[i].integer = PyInt_AsLong (num);
++ ippSetInteger (request, &attr, i, PyInt_AsLong (num));
+ }
+ }
+
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
+- set_ipp_error (answer ? answer->request.status.status_code :
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
++ set_ipp_error (answer ? ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -4191,27 +4202,27 @@ Connection_getNotifications (Connection *self,
PyObject *args, PyObject *kwds)
+ // Result-wide attributes.
+ attr = ippFindAttribute (answer, "notify-get-interval", IPP_TAG_INTEGER);
+ if (attr) {
+- PyObject *val = PyInt_FromLong (attr->values[0].integer);
+- PyDict_SetItemString (result, attr->name, val);
++ PyObject *val = PyInt_FromLong (ippGetInteger (attr, 0));
++ PyDict_SetItemString (result, ippGetName (attr), val);
+ Py_DECREF (val);
+ }
+
+ attr = ippFindAttribute (answer, "printer-up-time", IPP_TAG_INTEGER);
+ if (attr) {
+- PyObject *val = PyInt_FromLong (attr->values[0].integer);
+- PyDict_SetItemString (result, attr->name, val);
++ PyObject *val = PyInt_FromLong (ippGetInteger (attr, 0));
++ PyDict_SetItemString (result, ippGetName (attr), val);
+ Py_DECREF (val);
+ }
+
+ events = PyList_New (0);
+- for (attr = answer->attrs; attr; attr = attr->next)
+- if (attr->group_tag == IPP_TAG_EVENT_NOTIFICATION)
++ for (attr = ippFirstAttribute (answer); attr; attr = ippNextAttribute
(answer))
++ if (ippGetGroupTag (attr) == IPP_TAG_EVENT_NOTIFICATION)
+ break;
+
+ event = NULL;
+- for (; attr; attr = attr->next) {
++ for (; attr; attr = ippNextAttribute (answer)) {
+ PyObject *obj;
+- if (attr->group_tag == IPP_TAG_ZERO) {
++ if (ippGetGroupTag (attr) == IPP_TAG_ZERO) {
+ // End of event notification.
+ if (event) {
+ PyList_Append (events, event);
+@@ -4222,10 +4233,10 @@ Connection_getNotifications (Connection *self,
PyObject *args, PyObject *kwds)
+ continue;
+ }
+
+- if (attr->num_values > 1 ||
+- !strcmp (attr->name, "notify-events") ||
+- !strcmp (attr->name, "printer-state-reasons") ||
+- !strcmp (attr->name, "job-printer-state-reasons"))
++ if (ippGetCount (attr) > 1 ||
++ !strcmp (ippGetName (attr), "notify-events") ||
++ !strcmp (ippGetName (attr), "printer-state-reasons") ||
++ !strcmp (ippGetName (attr), "job-printer-state-reasons"))
+ obj = PyList_from_attr_values (attr);
+ else
+ obj = PyObject_from_attr_value (attr, 0);
+@@ -4237,7 +4248,7 @@ Connection_getNotifications (Connection *self,
PyObject *args, PyObject *kwds)
+ if (!event)
+ event = PyDict_New ();
+
+- PyDict_SetItemString (event, attr->name, obj);
++ PyDict_SetItemString (event, ippGetName (attr), obj);
+ Py_DECREF (obj);
+ }
+
+@@ -4281,8 +4292,8 @@ Connection_renewSubscription (Connection *self,
PyObject *args, PyObject *kwds)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
+- set_ipp_error (answer ? answer->request.status.status_code :
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
++ set_ipp_error (answer ? ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+@@ -4316,8 +4327,8 @@ Connection_cancelSubscription (Connection *self,
PyObject *args)
+ Connection_begin_allow_threads (self);
+ answer = cupsDoRequest (self->http, request, "/");
+ Connection_end_allow_threads (self);
+- if (!answer || answer->request.status.status_code > IPP_OK_CONFLICT) {
+- set_ipp_error (answer ? answer->request.status.status_code :
++ if (!answer || ippGetStatusCode (answer) > IPP_OK_CONFLICT) {
++ set_ipp_error (answer ? ippGetStatusCode (answer) :
+ cupsLastError ());
+ if (answer)
+ ippDelete (answer);
+diff --git a/cupsipp.c b/cupsipp.c
+index 16bf8c8..ac34004 100644
+--- a/cupsipp.c
++++ b/cupsipp.c
+@@ -370,18 +370,18 @@ IPPRequest_getAttributes (IPPRequest *self, void
*closure)
+ {
+ PyObject *attrs = PyList_New (0);
+ ipp_attribute_t *attr;
+- for (attr = self->ipp->attrs; attr; attr = attr->next)
++ for (attr = ippFirstAttribute (self->ipp); attr; attr =
ippNextAttribute(self->ipp))
+ {
+ PyObject *largs = NULL;
+ PyObject *lkwlist = NULL;
+ PyObject *values = NULL;
+ IPPAttribute *attribute = NULL;
+
+- debugprintf ("%s: ", attr->name);
+- if (attr->value_tag == IPP_TAG_ZERO ||
+- attr->value_tag == IPP_TAG_NOVALUE ||
+- attr->value_tag == IPP_TAG_NOTSETTABLE ||
+- attr->value_tag == IPP_TAG_ADMINDEFINE) {
++ debugprintf ("%s: ", ippGetName (attr));
++ if (ippGetValueTag (attr) == IPP_TAG_ZERO ||
++ ippGetValueTag (attr) == IPP_TAG_NOVALUE ||
++ ippGetValueTag (attr) == IPP_TAG_NOTSETTABLE ||
++ ippGetValueTag (attr) == IPP_TAG_ADMINDEFINE) {
+ debugprintf ("no value\n");
+ } else {
+ PyObject *value = NULL;
+@@ -392,25 +392,25 @@ IPPRequest_getAttributes (IPPRequest *self, void
*closure)
+ if (!values)
+ goto fail_add;
+
+- for (i = 0; i < attr->num_values; i++) {
+- switch (attr->value_tag) {
++ for (i = 0; i < ippGetCount (attr); i++) {
++ switch (ippGetValueTag (attr)) {
+ case IPP_TAG_INTEGER:
+ case IPP_TAG_ENUM:
+ case IPP_TAG_RANGE:
+- value = PyInt_FromLong (attr->values[i].integer);
+- debugprintf ("i%d", attr->values[i].integer);
++ value = PyInt_FromLong (ippGetInteger (attr, i));
++ debugprintf ("i%d", ippGetInteger (attr, i));
+ break;
+
+ case IPP_TAG_BOOLEAN:
+- value = PyBool_FromLong (attr->values[i].boolean);
+- debugprintf ("b%d", attr->values[i].integer);
++ value = PyBool_FromLong (ippGetBoolean (attr, i));
++ debugprintf ("b%d", ippGetInteger (attr, i));
+ break;
+
+ case IPP_TAG_TEXT:
+- value = PyUnicode_Decode (attr->values[i].string.text,
+- strlen (attr->values[i].string.text),
++ value = PyUnicode_Decode (ippGetString (attr, i, NULL),
++ strlen (ippGetString (attr, i, NULL)),
+ "utf-8", NULL);
+- debugprintf ("u%s", attr->values[i].string.text);
++ debugprintf ("u%s", ippGetString (attr, i, NULL));
+ break;
+
+ case IPP_TAG_NAME:
+@@ -419,14 +419,14 @@ IPPRequest_getAttributes (IPPRequest *self, void
*closure)
+ case IPP_TAG_MIMETYPE:
+ case IPP_TAG_CHARSET:
+ case IPP_TAG_LANGUAGE:
+- value = PyString_FromString (attr->values[i].string.text);
+- debugprintf ("s%s", attr->values[i].string.text);
++ value = PyString_FromString (ippGetString (attr, i, NULL));
++ debugprintf ("s%s", ippGetString (attr, i, NULL));
+ break;
+
+ default:
+ value = NULL;
+ unknown_value_tag = 1;
+- debugprintf ("Unable to encode value tag %d\n", attr->value_tag);
++ debugprintf ("Unable to encode value tag %d\n", ippGetValueTag
(attr));
+ }
+
+ if (!value)
+@@ -458,15 +458,15 @@ IPPRequest_getAttributes (IPPRequest *self, void
*closure)
+
+ if (values) {
+ largs = Py_BuildValue ("(iisO)",
+- attr->group_tag,
+- attr->value_tag,
+- attr->name,
++ ippGetGroupTag (attr),
++ ippGetValueTag (attr),
++ ippGetName (attr),
+ values);
+ Py_DECREF (values);
+ values = NULL;
+ } else
+- largs = Py_BuildValue ("(iis)", attr->group_tag, attr->value_tag,
+- attr->name ? attr->name : "");
++ largs = Py_BuildValue ("(iis)", ippGetGroupTag (attr), ippGetValueTag
(attr),
++ ippGetName (attr) ? ippGetName (attr) : "");
+
+ if (!largs)
+ goto fail_add;
+diff --git a/cupsmodule.c b/cupsmodule.c
+index 005ee23..1aba77d 100644
+--- a/cupsmodule.c
++++ b/cupsmodule.c
+@@ -52,6 +52,10 @@ static pthread_once_t tls_key_once = PTHREAD_ONCE_INIT;
+ # define IPP_PKI_ERROR 0x1001
+ #endif /* CUPS < 1.5 */
+
++#if (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR > 5)
++# define CUPS_SERVER_REMOTE_PRINTERS "_remote_printers"
++#endif /* CUPS > 1.5 */
++
+ //////////////////////
+ // Worker functions //
+ //////////////////////
+@@ -203,6 +207,138 @@ do_password_callback (const char *prompt)
+ }
+ #endif /* !HAVE_CUPS_1_4 */
+
++#ifndef HAVE_CUPS_1_6
++int
++ippGetBoolean(ipp_attribute_t *attr,
++ int element)
++{
++ return (attr->values[element].boolean);
++}
++
++int
++ippGetCount(ipp_attribute_t *attr)
++{
++ return (attr->num_values);
++}
++
++ipp_tag_t
++ippGetGroupTag(ipp_attribute_t *attr)
++{
++ return (attr->group_tag);
++}
++
++int
++ippGetInteger(ipp_attribute_t *attr,
++ int element)
++{
++ return (attr->values[element].integer);
++}
++
++const char *
++ippGetName(ipp_attribute_t *attr)
++{
++ return (attr->name);
++}
++
++ipp_op_t
++ippGetOperation(ipp_t *ipp)
++{
++ return (ipp->request.op.operation_id);
++}
++
++int
++ippGetRange(ipp_attribute_t *attr,
++ int element,
++ int *uppervalue)
++{
++ if (uppervalue)
++ *uppervalue = attr->values[element].range.upper;
++
++ return (attr->values[element].range.lower);
++}
++
++int
++ippGetResolution(
++ ipp_attribute_t *attr,
++ int element,
++ int *yres,
++ ipp_res_t *units)
++{
++ if (yres)
++ *yres = attr->values[element].resolution.yres;
++
++ if (units)
++ *units = attr->values[element].resolution.units;
++
++ return (attr->values[element].resolution.xres);
++}
++
++ipp_status_t
++ippGetStatusCode(ipp_t *ipp)
++{
++ return (ipp->request.status.status_code);
++}
++
++const char *
++ippGetString(ipp_attribute_t *attr,
++ int element,
++ const char **language)
++{
++ return (attr->values[element].string.text);
++}
++
++ipp_tag_t
++ippGetValueTag(ipp_attribute_t *attr)
++{
++ return (attr->value_tag);
++}
++
++ipp_attribute_t *
++ippFirstAttribute(ipp_t *ipp)
++{
++ if (!ipp)
++ return (NULL);
++ return (ipp->current = ipp->attrs);
++}
++
++ipp_attribute_t *
++ippNextAttribute(ipp_t *ipp)
++{
++ if (!ipp || !ipp->current)
++ return (NULL);
++ return (ipp->current = ipp->current->next);
++}
++
++int
++ippSetInteger(ipp_t *ipp,
++ ipp_attribute_t **attr,
++ int element,
++ int intvalue)
++{
++ (*attr)->values[element].integer = intvalue;
++ return (1);
++}
++
++int
++ippSetOperation(ipp_t *ipp,
++ ipp_op_t op)
++{
++ ipp->request.op.operation_id = op;
++ return (1);
++}
++
++int
++ippSetString(ipp_t *ipp,
++ ipp_attribute_t **attr,
++ int element,
++ const char *strvalue)
++{
++ (*attr)->values[element].string.text = (char *) strvalue;
++ return (1);
++}
++
++#endif
++
+ //////////////////////////
+ // Module-level methods //
+ //////////////////////////
+diff --git a/cupsmodule.h b/cupsmodule.h
+index 593f429..c30d0e3 100644
+--- a/cupsmodule.h
++++ b/cupsmodule.h
+@@ -49,6 +49,10 @@ extern void debugprintf (const char *fmt, ...) FORMAT
((__printf__, 1, 2));
+ #define HAVE_CUPS_1_4 1
+ #endif
+
++#if (CUPS_VERSION_MAJOR > 1) || (CUPS_VERSION_MINOR > 5)
++#define HAVE_CUPS_1_6 1
++#endif
++
+ #ifndef HAVE_CUPS_1_2
+ #error pycups requires CUPS 1.2.x
+ #endif
+@@ -65,4 +69,28 @@ struct TLS
+
+ extern struct TLS *get_TLS (void);
+
++#ifndef HAVE_CUPS_1_6
++int ippGetBoolean(ipp_attribute_t *attr, int element);
++int ippGetCount(ipp_attribute_t *attr);
++ipp_tag_t ippGetGroupTag(ipp_attribute_t *attr);
++int ippGetInteger(ipp_attribute_t *attr, int element);
++const char * ippGetName(ipp_attribute_t *attr);
++ipp_op_t ippGetOperation(ipp_t *ipp);
++int ippGetRange(ipp_attribute_t *attr, int element, int *uppervalue);
++int ippGetResolution(ipp_attribute_t *attr, int element,
++ int *yres, ipp_res_t *units);
++ipp_status_t ippGetStatusCode(ipp_t *ipp);
++const char * ippGetString(ipp_attribute_t *attr, int element,
++ const char **language);
++ipp_tag_t ippGetValueTag(ipp_attribute_t *attr);
++ipp_attribute_t * ippFirstAttribute(ipp_t *ipp);
++ipp_attribute_t * ippNextAttribute(ipp_t *ipp);
++int ippSetInteger(ipp_t *ipp, ipp_attribute_t **attr,
++ int element, int intvalue);
++int ippSetOperation(ipp_t *ipp, ipp_op_t op);
++int ippSetString(ipp_t *ipp, ipp_attribute_t **attr,
++ int element, const char *strvalue);
++#endif
++
++
+ #endif /* HAVE_CUPSMODULE_H */
+--
+1.7.2.1
+
diff --git a/python-pypi/lxml/DETAILS b/python-pypi/lxml/DETAILS
index 8568c8b..efcba72 100755
--- a/python-pypi/lxml/DETAILS
+++ b/python-pypi/lxml/DETAILS
@@ -1,5 +1,5 @@
SPELL=lxml
- VERSION=2.3.4
+ VERSION=2.3.5
SOURCE=$SPELL-$VERSION.tar.gz
SOURCE2=$SOURCE.asc
SOURCE_URL[0]=http://pypi.python.org/packages/source/l/$SPELL/$SOURCE
diff --git a/python-pypi/lxml/HISTORY b/python-pypi/lxml/HISTORY
index d5aee5e..7d80fdc 100644
--- a/python-pypi/lxml/HISTORY
+++ b/python-pypi/lxml/HISTORY
@@ -1,3 +1,6 @@
+2012-07-31 Vlad Glagolev <stealth AT sourcemage.org>
+ * DETAILS: updated spell to 2.3.5
+
2012-04-04 Vlad Glagolev <stealth AT sourcemage.org>
* DETAILS: updated spell to 2.3.4

diff --git a/ruby-raa/rake/DETAILS b/ruby-raa/rake/DETAILS
index a572f74..bafd960 100755
--- a/ruby-raa/rake/DETAILS
+++ b/ruby-raa/rake/DETAILS
@@ -1,9 +1,10 @@
SPELL=rake
- VERSION=0.8.7
-
SOURCE_HASH=sha512:36b5e038db6e7f1b834651bd8d1411eb9db1ed05dc155f670fbd89ba8df9a380fcfe19498bbfac5876f5740e6b95ebd8e798fc9eb7be7d68a6f553e242ade598
+ VERSION=0.9.2.2
+
SOURCE_HASH=sha512:afa558f2ab8bf83a307258f92e7d3990ef2546a4a2cfa2c14b5e9ac346818f22eaf31e4a2649243acee5a94a3455c101277c08fd017051d49b95efc4806dfec7
SOURCE=$SPELL-$VERSION.tgz
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-$VERSION
- SOURCE_URL[0]=http://rubyforge.org/frs/download.php/56872/$SOURCE
+
SOURCE_URL[0]=http://ftp.debian.org/debian/pool/main/r/rake/rake_0.9.2.2.orig.tar.gz

+ #SOURCE_URL[0]=http://rubyforge.org/frs/download.php/56872/$SOURCE
WEB_SITE=http://rake.rubyforge.org/
ENTERED=20050524
LICENSE[0]=MIT
diff --git a/ruby-raa/rake/HISTORY b/ruby-raa/rake/HISTORY
index 2bc7c1a..b24426c 100644
--- a/ruby-raa/rake/HISTORY
+++ b/ruby-raa/rake/HISTORY
@@ -1,3 +1,8 @@
+2012-08-03 Sukneet Basuta <sukneet AT sourcemage.org>
+ * DETAILS: spell updated to 0.9.2.2
+ SOURCE_URL changed to debian since upstream does not have
+ a tarball.
+
2010-02-25 Remko van der Vossen <wich AT sourcemage.org>
* DEPENDS: updated ruby dependency to RUBY provider

diff --git a/science/mkgmap/DETAILS b/science/mkgmap/DETAILS
index ee130cc..3e22c20 100755
--- a/science/mkgmap/DETAILS
+++ b/science/mkgmap/DETAILS
@@ -1,8 +1,8 @@
SPELL=mkgmap
- VERSION=r2277
+ VERSION=r2311
SOURCE="${SPELL}-${VERSION}-src.tar.gz"
SOURCE_URL[0]=http://www.${SPELL}.org.uk/snapshots/${SOURCE}
-
SOURCE_HASH=sha512:a66c41cb9656d4eba4ac459715c32b381d604781ddcbee85a47f9deb608db8a76ab337726d0a6f99b115deb83da492e425e404ee474b4b2dbd9c4ecd55eed191
+
SOURCE_HASH=sha512:65a3c2876eaccb1e8e99ec76a0cbe71705894f0c8087e0b255914a0fa055a19dce259fcea084f3c4ff5a47b04feb48e869fe0bf8849f54f899d3d243f030b44e
SOURCE_DIRECTORY="${BUILD_DIRECTORY}/${SPELL}-${VERSION}"
WEB_SITE="http://www.mkgmap.org.uk/page/main";
LICENSE[0]=GPL
diff --git a/science/mkgmap/HISTORY b/science/mkgmap/HISTORY
index 006e1dd..cb4d6f6 100644
--- a/science/mkgmap/HISTORY
+++ b/science/mkgmap/HISTORY
@@ -1,3 +1,6 @@
+2012-08-01 Florian Franzmann <siflfran AT hawo.stw.uni-erlangen.de>
+ * DETAILS: version 2311
+
2012-05-09 Florian Franzmann <siflfran AT hawo.stw.uni-erlangen.de>
* BUILD, DEPENDS, DETAILS, INSTALL: spell created

diff --git a/video/handbrake/DETAILS b/video/handbrake/DETAILS
index 601ca83..1ebfd66 100755
--- a/video/handbrake/DETAILS
+++ b/video/handbrake/DETAILS
@@ -1,5 +1,5 @@
SPELL=handbrake
- VERSION=0.9.6
+ VERSION=0.9.8
SOURCE=HandBrake-$VERSION.tar.bz2
SOURCE_DIRECTORY=$BUILD_DIRECTORY/HandBrake-$VERSION
SOURCE_URL[0]=http://handbrake.fr/rotation.php?file=$SOURCE
diff --git a/video/handbrake/HISTORY b/video/handbrake/HISTORY
index edf35f8..0f18b31 100644
--- a/video/handbrake/HISTORY
+++ b/video/handbrake/HISTORY
@@ -1,3 +1,7 @@
+2012-08-03 Eric Sandall <sandalle AT sourcemage.org>
+ * DETAILS: Updated to 0.9.8
+ Matches upstream posted MD5
+
2012-05-05 Eric Sandall <sandalle AT sourcemage.org>
* DETAILS: Updated to 0.9.6
Matches upstream posted MD5
diff --git a/video/handbrake/HandBrake-0.9.6.tar.bz2.sig
b/video/handbrake/HandBrake-0.9.6.tar.bz2.sig
deleted file mode 100644
index f8b2a96..0000000
Binary files a/video/handbrake/HandBrake-0.9.6.tar.bz2.sig and /dev/null
differ
diff --git a/video/handbrake/HandBrake-0.9.8.tar.bz2.sig
b/video/handbrake/HandBrake-0.9.8.tar.bz2.sig
new file mode 100644
index 0000000..d297037
Binary files /dev/null and b/video/handbrake/HandBrake-0.9.8.tar.bz2.sig
differ
diff --git a/xfce/ristretto/DEPENDS b/xfce/ristretto/DEPENDS
index 664a82b..bd92d1f 100755
--- a/xfce/ristretto/DEPENDS
+++ b/xfce/ristretto/DEPENDS
@@ -4,4 +4,9 @@ depends libxfce4util &&
depends libxfcegui4 &&
depends libexif &&
depends thunar &&
-depends thunar-vfs
+depends thunar-vfs &&
+
+optional_depends gettext \
+ "--enable-nls" \
+ "--disable-nls" \
+ "for Native Language Support"
diff --git a/xfce/ristretto/DETAILS b/xfce/ristretto/DETAILS
index 5053109..6143df1 100755
--- a/xfce/ristretto/DETAILS
+++ b/xfce/ristretto/DETAILS
@@ -1,9 +1,9 @@
SPELL=ristretto
- VERSION=0.3.5
+ VERSION=0.6.2
BRANCH=`echo $VERSION | cut -d . -f 1,2`
SOURCE=$SPELL-$VERSION.tar.bz2
SOURCE_URL[0]=http://archive.xfce.org/src/apps/$SPELL/$BRANCH/$SOURCE
-
SOURCE_HASH=sha512:fb2515d6c4ca9f947f2f89fda9dc04fbcc34f9aedcc70309166e5b743a8705200d2b21f429d21ce7128a5055962eb1db2c034688c3992e24ddb08476b2f6efa4
+
SOURCE_HASH=sha512:d9e66fd302401660605bf3265edbbc071801fbd7af452e9a44c85c1cbf4ebae253acd35fe2b8166011acf0de71011cc0d1f6ff752ece8badcb080001528814ff
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-$VERSION"
WEB_SITE=http://goodies.xfce.org/projects/applications/ristretto/
LICENSE[0]=GPL
diff --git a/xfce/ristretto/HISTORY b/xfce/ristretto/HISTORY
index 830155f..b97c1f2 100644
--- a/xfce/ristretto/HISTORY
+++ b/xfce/ristretto/HISTORY
@@ -1,3 +1,7 @@
+2012-07-30 Vlad Glagolev <stealth AT sourcemage.org>
+ * DETAILS: updated spell to 0.6.2
+ * DEPENDS: added optional gettext dependency
+
2012-03-13 Vlad Glagolev <stealth AT sourcemage.org>
* DETAILS: updated spell to 0.3.5




  • [SM-Commit] GIT changes to devel-xorg-modular grimoire by Treeve Jelbert (a2214042277b4a009f6220cb290911d21ac7d203), Treeve Jelbert, 08/04/2012

Archive powered by MHonArc 2.6.24.

Top of Page