[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#682683: unblock: sope/1.3.16-1



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package sope

Debian changelog:

sope (1.3.16-1) unstable; urgency=low

  * New upstream release.
  * Drop patches applied upstream:
    - 0006-Fix-compilation-on-GNU-kFreeBSD
    - 0008-Fix-stale-cache-issue-when-upgrading.patch
    - 0009-GNUstep-1.24-fix.patch
  * Build with hardening enabled.

 -- Jeroen Dekkers <jeroen@dekkers.ch>  Fri, 29 Jun 2012 20:53:29 +0200


The upstream release is a bugfix only release. Most of the fixes are
already in 1.3.15-4 because they are debian fixes submitted upstream
or were backported from development version to the debian package. The
only actual changes in the Debian package are:

* Build with hardening enabled
* Addition of two methods to classes in NGLdap
* Change in NGObjWeb to not use a deprecated method

The attached sope-gitdiff.patch is the difference between my git
branches of 1.3.15-4 and 1.3.16-1 that have all debian patches
applied, while the attached sope-debdiff.patch gives the complete
debdiff.

unblock sope/1.3.16-1

-- System Information:
Debian Release: wheezy/sid
  APT prefers precise-updates
  APT policy: (990, 'precise-updates'), (990, 'precise-security'), (990, 'precise-backports'), (990, 'precise'), (500, 'quantal')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-26-generic (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff --git a/debian/changelog b/debian/changelog
index 4ddf8f3..8d2560a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+sope (1.3.16-1) unstable; urgency=low
+
+  * New upstream release.
+  * Drop patches applied upstream:
+    - 0006-Fix-compilation-on-GNU-kFreeBSD
+    - 0008-Fix-stale-cache-issue-when-upgrading.patch
+    - 0009-GNUstep-1.24-fix.patch
+  * Build with hardening enabled.
+
+ -- Jeroen Dekkers <jeroen@dekkers.ch>  Fri, 29 Jun 2012 20:53:29 +0200
+
 sope (1.3.15-4) unstable; urgency=low
 
   * 0007-Fix-FTBFS-on-arm.patch:
diff --git a/debian/control b/debian/control
index e08398c..6ecfd20 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: sope
 Section: libs
 Priority: optional
 Maintainer: Jeroen Dekkers <jeroen@dekkers.ch>
-Build-Depends: debhelper (>= 9), cdbs, gnustep-make, libgnustep-base-dev, gobjc, libxml2-dev, libldap2-dev, libgnutls-dev, zlib1g-dev, libpq-dev, libmysqlclient-dev, autotools-dev
+Build-Depends: debhelper (>= 9), cdbs, dpkg-dev (>= 1.16.1~), gnustep-make, libgnustep-base-dev, gobjc, libxml2-dev, libldap2-dev, libgnutls-dev, zlib1g-dev, libpq-dev, libmysqlclient-dev, autotools-dev
 Standards-Version: 3.9.3
 Homepage: http://www.sogo.nu/
 Vcs-Browser: https://github.com/dekkers/sope
diff --git a/debian/libsope1.lintian-overrides b/debian/libsope1.lintian-overrides
index 8675979..6f0b3bf 100644
--- a/debian/libsope1.lintian-overrides
+++ b/debian/libsope1.lintian-overrides
@@ -1 +1,8 @@
+# We bundle a lot of libraries in one binary package, because
+# splitting them up in 11 binary packages isn't very useful.
 package-name-doesnt-match-sonames
+
+# Checked the function calls and the following 2 warnings are false
+# positives.
+libsope1 binary: hardening-no-fortify-functions usr/lib/GNUstep/SaxDrivers-4.9/libxmlSAXDriver.sax/libxmlSAXDriver
+libsope1 binary: hardening-no-fortify-functions usr/lib/libEOControl.so.4.9.74
diff --git a/debian/rules b/debian/rules
index ce1c228..803a55a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -2,6 +2,11 @@
 # -*- makefile -*-
 export DH_VERBOSE=1
 
+export DEB_BUILD_MAINT_OPTIONS=hardening=+bindnow
+include /usr/share/dpkg/buildflags.mk
+# FIXME: dpkg-buildflags / cdbs should support OBJCFLAGS
+DEB_MAKE_BUILD_TARGET = all messages=yes OBJCFLAGS="$(CFLAGS)"
+
 include /usr/share/cdbs/1/rules/gnustep.mk
 include /usr/share/cdbs/1/class/gnumakefile.mk
 
diff --git a/sope-appserver/NGObjWeb/Associations/WOKeyPathAssociation.m b/sope-appserver/NGObjWeb/Associations/WOKeyPathAssociation.m
index 13a33ee..50661ff 100644
--- a/sope-appserver/NGObjWeb/Associations/WOKeyPathAssociation.m
+++ b/sope-appserver/NGObjWeb/Associations/WOKeyPathAssociation.m
@@ -939,8 +939,7 @@ static BOOL _setValue(WOKeyPathAssociation *self, id _value, id root) {
 		handleUnknownKey stuff ...
     */
     
-#if GNUSTEP_BASE_LIBRARY && ((GNUSTEP_BASE_MAJOR_VERSION >= 1) && \
-			     (GNUSTEP_BASE_MINOR_VERSION >= 11))
+#if GNUSTEP_BASE_LIBRARY
     // TODO: also do this for OSX 10.4? probably
     [object setValue:_value forKey:info->extra.key];
 #else
@@ -1097,9 +1096,9 @@ static BOOL _setValue(WOKeyPathAssociation *self, id _value, id root) {
     return;
   }
 
-  if (info->type == WOKeyType_kvc) { // takeValue:forKey:..
+  if (info->type == WOKeyType_kvc) { // setValue:forKey:
     NSCAssert(info->extra.key, @"no key object set ..");
-    [_wo takeValue:uintNumObj(_value) forKey:info->extra.key];
+    [_wo setValue:uintNumObj(_value) forKey:info->extra.key];
     return;
   }
   if (info->type == WOKeyType_binding) { // setValue:forBinding:
diff --git a/sope-appserver/NGObjWeb/DynamicElements/GNUmakefile.preamble b/sope-appserver/NGObjWeb/DynamicElements/GNUmakefile.preamble
index 7cbf560..415c8f6 100644
--- a/sope-appserver/NGObjWeb/DynamicElements/GNUmakefile.preamble
+++ b/sope-appserver/NGObjWeb/DynamicElements/GNUmakefile.preamble
@@ -5,12 +5,6 @@ ADDITIONAL_CPPFLAGS += -pipe
 # -DPROFILE_CLUSTERS=1
 
 
-# disable optimization for exception handlers
-SaxDefaultHandler.m_FILE_FILTER_OUT_FLAGS = -O%
-WOCompoundElement.m_FILE_FILTER_OUT_FLAGS = -O%
-WOImage.m_FILE_FILTER_OUT_FLAGS           = -O%
-
-
 ADDITIONAL_CPPFLAGS += -pipe -Wall -funsigned-char -O2
 ADDITIONAL_CPPFLAGS += -DCOMPILING_NGOBJWEB=1
 
diff --git a/sope-appserver/NGObjWeb/NGHttp/common.h b/sope-appserver/NGObjWeb/NGHttp/common.h
index ef3c694..c1d4c09 100644
--- a/sope-appserver/NGObjWeb/NGHttp/common.h
+++ b/sope-appserver/NGObjWeb/NGHttp/common.h
@@ -22,6 +22,7 @@
 #ifndef __NGHttp_common_H__
 #define __NGHttp_common_H__
 
+#include <inttypes.h>
 #include <string.h>
 
 #if !defined(__MINGW32__)
diff --git a/sope-ldap/NGLdap/NGLdapAttribute.h b/sope-ldap/NGLdap/NGLdapAttribute.h
index ae8c348..31bc764 100644
--- a/sope-ldap/NGLdap/NGLdapAttribute.h
+++ b/sope-ldap/NGLdap/NGLdapAttribute.h
@@ -1,5 +1,6 @@
 /*
   Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2012 Inverse inc.
 
   This file is part of SOPE.
 
@@ -61,6 +62,8 @@
 - (NSEnumerator *)stringValueEnumerator;
 - (NSString *)stringValueAtIndex:(unsigned)_idx;
 
+- (id) asArrayOrString;
+
 @end
 
 #endif /* __NGLdapAttribute_H__ */
diff --git a/sope-ldap/NGLdap/NGLdapAttribute.m b/sope-ldap/NGLdap/NGLdapAttribute.m
index 56e8f82..5b480ee 100644
--- a/sope-ldap/NGLdap/NGLdapAttribute.m
+++ b/sope-ldap/NGLdap/NGLdapAttribute.m
@@ -1,5 +1,6 @@
 /*
   Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2012 Inverse inc.
 
   This file is part of SOPE.
 
@@ -311,4 +312,18 @@
   return s;
 }
 
+- (id) asArrayOrString
+{
+  NSArray *arrayValue;
+  id value;
+
+  arrayValue = [self allStringValues];
+  if ([arrayValue count] == 1)
+    value = [arrayValue objectAtIndex: 0];
+  else
+    value = arrayValue;
+
+  return value;
+}
+
 @end /* NGLdapAttribute */
diff --git a/sope-ldap/NGLdap/NGLdapEntry.h b/sope-ldap/NGLdap/NGLdapEntry.h
index b3ee4ab..d4b9669 100644
--- a/sope-ldap/NGLdap/NGLdapEntry.h
+++ b/sope-ldap/NGLdap/NGLdapEntry.h
@@ -1,5 +1,6 @@
 /*
   Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2012 Inverse inc.
 
   This file is part of SOPE.
 
@@ -24,7 +25,7 @@
 
 #import <Foundation/NSObject.h>
 
-@class NSString, NSDictionary, NSArray;
+@class NSString, NSDictionary, NSMutableDictionary, NSArray;
 @class NGLdapAttribute;
 
 @interface NGLdapEntry : NSObject < NSCopying >
@@ -58,6 +59,8 @@
 
 - (NSString *)ldif;
 
+- (NSMutableDictionary *) asDictionary;
+
 @end
 
 #endif /* __NGLdapEntry_H__ */
diff --git a/sope-ldap/NGLdap/NGLdapEntry.m b/sope-ldap/NGLdap/NGLdapEntry.m
index 0e8dbf5..da952b2 100644
--- a/sope-ldap/NGLdap/NGLdapEntry.m
+++ b/sope-ldap/NGLdap/NGLdapEntry.m
@@ -1,5 +1,6 @@
 /*
   Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2012 Inverse inc.
 
   This file is part of SOPE.
 
@@ -220,4 +221,29 @@
   return s;
 }
 
+- (NSMutableDictionary *) asDictionary
+{
+  NSMutableDictionary *ldapRecord;
+  NSDictionary *ldapAttributes;
+  NSArray *keys;
+  NSString *key;
+  NSUInteger count, max;
+  id value;
+  
+  ldapAttributes = [self attributes];
+  keys = [ldapAttributes allKeys];
+  max = [keys count];
+
+  ldapRecord = [NSMutableDictionary dictionaryWithCapacity: max];
+  for (count = 0; count < max; count++)
+    {
+      key = [keys objectAtIndex: count];
+      value = [[ldapAttributes objectForKey: key] asArrayOrString];
+      if (value)
+        [ldapRecord setObject: value forKey: [key lowercaseString]];
+    }
+
+  return ldapRecord;
+}
+
 @end /* NGLdapEntry */
diff --git a/sope-xml/DOM/GNUmakefile.preamble b/sope-xml/DOM/GNUmakefile.preamble
index 1d59173..74e4343 100644
--- a/sope-xml/DOM/GNUmakefile.preamble
+++ b/sope-xml/DOM/GNUmakefile.preamble
@@ -16,13 +16,6 @@ DOM_HEADER_FILES = $(libDOM_HEADER_FILES)
 DOM_OBJC_FILES   = $(libDOM_OBJC_FILES)
 
 
-# disable optimization for exception handlers
-DOMPYXOutputter.m_FILE_FILTER_OUT_FLAGS        = -O%
-DOMXMLOutputter.m_FILE_FILTER_OUT_FLAGS        = -O%
-DOMQueryPathExpression.m_FILE_FILTER_OUT_FLAGS = -O%
-DOMSaxHandler.m_FILE_FILTER_OUT_FLAGS          = -O%
-NSObject+QPEval.m_FILE_FILTER_OUT_FLAGS        = -O%
-
 ADDITIONAL_CPPFLAGS += \
 	-O2 \
         -Wall -DCOMPILE_FOR_GSTEP_MAKE=1        \
diff --git a/sope-xml/SaxObjC/GNUmakefile.preamble b/sope-xml/SaxObjC/GNUmakefile.preamble
index bff95d1..ff23aba 100644
--- a/sope-xml/SaxObjC/GNUmakefile.preamble
+++ b/sope-xml/SaxObjC/GNUmakefile.preamble
@@ -16,11 +16,6 @@ libSaxObjC_HEADER_FILES_INSTALL_DIR = /SaxObjC
 SaxObjC_HEADER_FILES = $(libSaxObjC_HEADER_FILES)
 SaxObjC_OBJC_FILES   = $(libSaxObjC_OBJC_FILES)
 
-# disable optimization for exception handlers
-SaxDefaultHandler.m_FILE_FILTER_OUT_FLAGS = -O%
-SaxHandlerBase.m_FILE_FILTER_OUT_FLAGS    = -O%
-SaxObjectDecoder.m_FILE_FILTER_OUT_FLAGS  = -O%
-
 ADDITIONAL_CPPFLAGS += \
 	-O2 \
         -Wall -DCOMPILE_FOR_GSTEP_MAKE=1        \
diff --git a/sope-xml/XmlRpc/GNUmakefile.preamble b/sope-xml/XmlRpc/GNUmakefile.preamble
index 3b15d5c..ba06dae 100644
--- a/sope-xml/XmlRpc/GNUmakefile.preamble
+++ b/sope-xml/XmlRpc/GNUmakefile.preamble
@@ -11,9 +11,6 @@ XmlRpc_INTERFACE_VERSION=$(MAJOR_VERSION).$(MINOR_VERSION)
 XmlRpc_VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBMINOR_VERSION)
 
 
-# disable optimization for exception handlers
-NSObject+XmlRpc.m_FILE_FILTER_OUT_FLAGS = -O%
-
 ADDITIONAL_CPPFLAGS += \
 	-O2 \
         -Wall -DCOMPILE_FOR_GSTEP_MAKE=1        \
diff -Nru sope-1.3.15/_MTN/revision sope-1.3.16/_MTN/revision
--- sope-1.3.15/_MTN/revision	2012-05-11 22:23:08.000000000 +0200
+++ sope-1.3.16/_MTN/revision	2012-06-01 07:12:48.000000000 +0200
@@ -2,4 +2,4 @@
 
 new_manifest [0000000000000000000000000000000000000001]
 
-old_revision [251de628e771ed3930ca566995fad547dbce20df]
+old_revision [bac2c81bb9b48922cfe4173bcbb8c041ec4631ef]
diff -Nru sope-1.3.15/debian/changelog sope-1.3.16/debian/changelog
--- sope-1.3.15/debian/changelog	2012-07-03 01:12:28.000000000 +0200
+++ sope-1.3.16/debian/changelog	2012-06-29 21:00:44.000000000 +0200
@@ -1,3 +1,14 @@
+sope (1.3.16-1) unstable; urgency=low
+
+  * New upstream release.
+  * Drop patches applied upstream:
+    - 0006-Fix-compilation-on-GNU-kFreeBSD
+    - 0008-Fix-stale-cache-issue-when-upgrading.patch
+    - 0009-GNUstep-1.24-fix.patch
+  * Build with hardening enabled.
+
+ -- Jeroen Dekkers <jeroen@dekkers.ch>  Fri, 29 Jun 2012 20:53:29 +0200
+
 sope (1.3.15-4) unstable; urgency=low
 
   * 0007-Fix-FTBFS-on-arm.patch:
diff -Nru sope-1.3.15/debian/control sope-1.3.16/debian/control
--- sope-1.3.15/debian/control	2012-07-03 01:12:28.000000000 +0200
+++ sope-1.3.16/debian/control	2012-06-29 21:00:44.000000000 +0200
@@ -2,7 +2,7 @@
 Section: libs
 Priority: optional
 Maintainer: Jeroen Dekkers <jeroen@dekkers.ch>
-Build-Depends: debhelper (>= 9), cdbs, gnustep-make, libgnustep-base-dev, gobjc, libxml2-dev, libldap2-dev, libgnutls-dev, zlib1g-dev, libpq-dev, libmysqlclient-dev, autotools-dev
+Build-Depends: debhelper (>= 9), cdbs, dpkg-dev (>= 1.16.1~), gnustep-make, libgnustep-base-dev, gobjc, libxml2-dev, libldap2-dev, libgnutls-dev, zlib1g-dev, libpq-dev, libmysqlclient-dev, autotools-dev
 Standards-Version: 3.9.3
 Homepage: http://www.sogo.nu/
 Vcs-Browser: https://github.com/dekkers/sope
diff -Nru sope-1.3.15/debian/libsope1.lintian-overrides sope-1.3.16/debian/libsope1.lintian-overrides
--- sope-1.3.15/debian/libsope1.lintian-overrides	2012-07-03 01:12:28.000000000 +0200
+++ sope-1.3.16/debian/libsope1.lintian-overrides	2012-06-29 21:00:44.000000000 +0200
@@ -1 +1,8 @@
+# We bundle a lot of libraries in one binary package, because
+# splitting them up in 11 binary packages isn't very useful.
 package-name-doesnt-match-sonames
+
+# Checked the function calls and the following 2 warnings are false
+# positives.
+libsope1 binary: hardening-no-fortify-functions usr/lib/GNUstep/SaxDrivers-4.9/libxmlSAXDriver.sax/libxmlSAXDriver
+libsope1 binary: hardening-no-fortify-functions usr/lib/libEOControl.so.4.9.74
diff -Nru sope-1.3.15/debian/patches/0006-Fix-FTBFS-on-arm.patch sope-1.3.16/debian/patches/0006-Fix-FTBFS-on-arm.patch
--- sope-1.3.15/debian/patches/0006-Fix-FTBFS-on-arm.patch	1970-01-01 01:00:00.000000000 +0100
+++ sope-1.3.16/debian/patches/0006-Fix-FTBFS-on-arm.patch	2012-06-29 15:40:26.000000000 +0200
@@ -0,0 +1,39 @@
+From: Jeroen Dekkers <jeroen@dekkers.ch>
+Date: Mon, 28 May 2012 16:10:46 +0200
+Subject: Fix FTBFS on arm
+
+Forwarded: http://www.sogo.nu/bugs/view.php?id=1820
+Author: Jeroen Dekkers <jeroen@dekkers.ch>
+---
+ .../GDLAccess/FoundationExt/PrintfFormatScanner.m  |   18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m b/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m
+index de90910..20c8a9b 100644
+--- a/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m
++++ b/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m
+@@ -32,12 +32,18 @@
+     va_list va;
+ 
+ #ifdef __va_copy
+-    // args being NULL breaks heavily on amd64
+-    if (args) {
+-        __va_copy(va, args);
+-    } else {
+-	return format;
+-    }
++    // args being NULL breaks heavily on amd64. It shouldn't be
++    // possible to be NULL at all, but we're called with an array as
++    // argument instead of a va_list in EOSQLQualifier and are thus
++    // calling __va_copy on an array, which is something that really
++    // shouldn't be done. Checking whether args is NULL breaks on arm
++    // however, because a va_list isn't a pointer, so we don't do the
++    // check on arm.
++#ifndef __arm__
++    if (!args)
++      return format;
++#endif
++    __va_copy(va, args);
+ #else
+     va = args;
+ #endif
diff -Nru sope-1.3.15/debian/patches/0006-Fix-compilation-on-GNU-kFreeBSD.patch sope-1.3.16/debian/patches/0006-Fix-compilation-on-GNU-kFreeBSD.patch
--- sope-1.3.15/debian/patches/0006-Fix-compilation-on-GNU-kFreeBSD.patch	2012-07-03 01:12:28.000000000 +0200
+++ sope-1.3.16/debian/patches/0006-Fix-compilation-on-GNU-kFreeBSD.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-From: Jeroen Dekkers <jeroen@dekkers.ch>
-Date: Wed, 23 May 2012 16:09:44 +0200
-Subject: Fix compilation on GNU/kFreeBSD
-
-Origin: vendor
-Forwarded: http://www.sogo.nu/bugs/view.php?id=1817
-Author: Jeroen Dekkers <jeroen@dekkers.ch>
----
- sope-core/NGStreams/NGInternetSocketAddress.m |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sope-core/NGStreams/NGInternetSocketAddress.m b/sope-core/NGStreams/NGInternetSocketAddress.m
-index 552366d..221f900 100644
---- a/sope-core/NGStreams/NGInternetSocketAddress.m
-+++ b/sope-core/NGStreams/NGInternetSocketAddress.m
-@@ -48,7 +48,7 @@
- #include "NGInternetSocketDomain.h"
- #include "common.h"
- 
--#if defined(HAVE_GETHOSTBYNAME_R) && !defined(linux) && !defined(__FreeBSD__)
-+#if defined(HAVE_GETHOSTBYNAME_R) && !defined(linux) && !defined(__FreeBSD__) && !defined(__GLIBC__)
- #define USE_GETHOSTBYNAME_R 1
- #endif
- 
diff -Nru sope-1.3.15/debian/patches/0007-Fix-FTBFS-on-arm.patch sope-1.3.16/debian/patches/0007-Fix-FTBFS-on-arm.patch
--- sope-1.3.15/debian/patches/0007-Fix-FTBFS-on-arm.patch	2012-07-03 01:12:28.000000000 +0200
+++ sope-1.3.16/debian/patches/0007-Fix-FTBFS-on-arm.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,39 +0,0 @@
-From: Jeroen Dekkers <jeroen@dekkers.ch>
-Date: Mon, 28 May 2012 16:10:46 +0200
-Subject: Fix FTBFS on arm
-
-Forwarded: http://www.sogo.nu/bugs/view.php?id=1820
-Author: Jeroen Dekkers <jeroen@dekkers.ch>
----
- .../GDLAccess/FoundationExt/PrintfFormatScanner.m  |   18 ++++++++++++------
- 1 file changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m b/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m
-index 7d4a248..20c8a9b 100644
---- a/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m
-+++ b/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m
-@@ -32,12 +32,18 @@
-     va_list va;
- 
- #ifdef __va_copy
--    // args being NULL breaks heavily on amd64
--    if (args != NULL) {
--        __va_copy(va, args);
--    } else {
--	return format;
--    }
-+    // args being NULL breaks heavily on amd64. It shouldn't be
-+    // possible to be NULL at all, but we're called with an array as
-+    // argument instead of a va_list in EOSQLQualifier and are thus
-+    // calling __va_copy on an array, which is something that really
-+    // shouldn't be done. Checking whether args is NULL breaks on arm
-+    // however, because a va_list isn't a pointer, so we don't do the
-+    // check on arm.
-+#ifndef __arm__
-+    if (!args)
-+      return format;
-+#endif
-+    __va_copy(va, args);
- #else
-     va = args;
- #endif
diff -Nru sope-1.3.15/debian/patches/0007-Remove-disabling-of-optimization.patch sope-1.3.16/debian/patches/0007-Remove-disabling-of-optimization.patch
--- sope-1.3.15/debian/patches/0007-Remove-disabling-of-optimization.patch	1970-01-01 01:00:00.000000000 +0100
+++ sope-1.3.16/debian/patches/0007-Remove-disabling-of-optimization.patch	2012-06-29 21:00:44.000000000 +0200
@@ -0,0 +1,77 @@
+From: Jeroen Dekkers <jeroen@dekkers.ch>
+Date: Fri, 29 Jun 2012 17:50:29 +0200
+Subject: Remove disabling of optimization
+
+Origin: vendor
+---
+ sope-appserver/NGObjWeb/DynamicElements/GNUmakefile.preamble |    6 ------
+ sope-xml/DOM/GNUmakefile.preamble                            |    7 -------
+ sope-xml/SaxObjC/GNUmakefile.preamble                        |    5 -----
+ sope-xml/XmlRpc/GNUmakefile.preamble                         |    3 ---
+ 4 files changed, 21 deletions(-)
+
+diff --git a/sope-appserver/NGObjWeb/DynamicElements/GNUmakefile.preamble b/sope-appserver/NGObjWeb/DynamicElements/GNUmakefile.preamble
+index 7cbf560..415c8f6 100644
+--- a/sope-appserver/NGObjWeb/DynamicElements/GNUmakefile.preamble
++++ b/sope-appserver/NGObjWeb/DynamicElements/GNUmakefile.preamble
+@@ -5,12 +5,6 @@ ADDITIONAL_CPPFLAGS += -pipe
+ # -DPROFILE_CLUSTERS=1
+ 
+ 
+-# disable optimization for exception handlers
+-SaxDefaultHandler.m_FILE_FILTER_OUT_FLAGS = -O%
+-WOCompoundElement.m_FILE_FILTER_OUT_FLAGS = -O%
+-WOImage.m_FILE_FILTER_OUT_FLAGS           = -O%
+-
+-
+ ADDITIONAL_CPPFLAGS += -pipe -Wall -funsigned-char -O2
+ ADDITIONAL_CPPFLAGS += -DCOMPILING_NGOBJWEB=1
+ 
+diff --git a/sope-xml/DOM/GNUmakefile.preamble b/sope-xml/DOM/GNUmakefile.preamble
+index 1d59173..74e4343 100644
+--- a/sope-xml/DOM/GNUmakefile.preamble
++++ b/sope-xml/DOM/GNUmakefile.preamble
+@@ -16,13 +16,6 @@ DOM_HEADER_FILES = $(libDOM_HEADER_FILES)
+ DOM_OBJC_FILES   = $(libDOM_OBJC_FILES)
+ 
+ 
+-# disable optimization for exception handlers
+-DOMPYXOutputter.m_FILE_FILTER_OUT_FLAGS        = -O%
+-DOMXMLOutputter.m_FILE_FILTER_OUT_FLAGS        = -O%
+-DOMQueryPathExpression.m_FILE_FILTER_OUT_FLAGS = -O%
+-DOMSaxHandler.m_FILE_FILTER_OUT_FLAGS          = -O%
+-NSObject+QPEval.m_FILE_FILTER_OUT_FLAGS        = -O%
+-
+ ADDITIONAL_CPPFLAGS += \
+ 	-O2 \
+         -Wall -DCOMPILE_FOR_GSTEP_MAKE=1        \
+diff --git a/sope-xml/SaxObjC/GNUmakefile.preamble b/sope-xml/SaxObjC/GNUmakefile.preamble
+index bff95d1..ff23aba 100644
+--- a/sope-xml/SaxObjC/GNUmakefile.preamble
++++ b/sope-xml/SaxObjC/GNUmakefile.preamble
+@@ -16,11 +16,6 @@ libSaxObjC_HEADER_FILES_INSTALL_DIR = /SaxObjC
+ SaxObjC_HEADER_FILES = $(libSaxObjC_HEADER_FILES)
+ SaxObjC_OBJC_FILES   = $(libSaxObjC_OBJC_FILES)
+ 
+-# disable optimization for exception handlers
+-SaxDefaultHandler.m_FILE_FILTER_OUT_FLAGS = -O%
+-SaxHandlerBase.m_FILE_FILTER_OUT_FLAGS    = -O%
+-SaxObjectDecoder.m_FILE_FILTER_OUT_FLAGS  = -O%
+-
+ ADDITIONAL_CPPFLAGS += \
+ 	-O2 \
+         -Wall -DCOMPILE_FOR_GSTEP_MAKE=1        \
+diff --git a/sope-xml/XmlRpc/GNUmakefile.preamble b/sope-xml/XmlRpc/GNUmakefile.preamble
+index 3b15d5c..ba06dae 100644
+--- a/sope-xml/XmlRpc/GNUmakefile.preamble
++++ b/sope-xml/XmlRpc/GNUmakefile.preamble
+@@ -11,9 +11,6 @@ XmlRpc_INTERFACE_VERSION=$(MAJOR_VERSION).$(MINOR_VERSION)
+ XmlRpc_VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBMINOR_VERSION)
+ 
+ 
+-# disable optimization for exception handlers
+-NSObject+XmlRpc.m_FILE_FILTER_OUT_FLAGS = -O%
+-
+ ADDITIONAL_CPPFLAGS += \
+ 	-O2 \
+         -Wall -DCOMPILE_FOR_GSTEP_MAKE=1        \
diff -Nru sope-1.3.15/debian/patches/0008-Fix-stale-cache-issue-when-upgrading.patch sope-1.3.16/debian/patches/0008-Fix-stale-cache-issue-when-upgrading.patch
--- sope-1.3.15/debian/patches/0008-Fix-stale-cache-issue-when-upgrading.patch	2012-07-03 01:12:28.000000000 +0200
+++ sope-1.3.16/debian/patches/0008-Fix-stale-cache-issue-when-upgrading.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,74 +0,0 @@
-From: Wolfgang Sourdeau <wsourdeau@inverse.ca>
-Date: Thu, 24 May 2012 14:26:45 +0000
-Subject: Fix stale cache issue when upgrading
-
-Origin: upstream, http://mtn.inverse.ca/revision/info/b2721d7f18528c981a921065d3272cca1a9070e8
----
- sope-appserver/WEExtensions/ChangeLog           |    8 ++++++++
- sope-appserver/WEExtensions/WEResourceManager.m |   15 ++++++++++-----
- 2 files changed, 18 insertions(+), 5 deletions(-)
-
-diff --git a/sope-appserver/WEExtensions/ChangeLog b/sope-appserver/WEExtensions/ChangeLog
-index 771dc98..ff32f17 100644
---- a/sope-appserver/WEExtensions/ChangeLog
-+++ b/sope-appserver/WEExtensions/ChangeLog
-@@ -1,3 +1,11 @@
-+2012-05-24  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
-+
-+	* WEResourceManager.m
-+	(_urlForResourceNamed:inFramework:language:applicationName:):
-+	append "lm=" + the unix timestamp of the file last modification
-+	date to force a reload of the file each time it is modified, no
-+	matter what expiry date the browsers are using in their cache.
-+
- 2010-01-29  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
- 
- 	* WEResourceManager.m
-diff --git a/sope-appserver/WEExtensions/WEResourceManager.m b/sope-appserver/WEExtensions/WEResourceManager.m
-index a7ed87f..03aa8b5 100644
---- a/sope-appserver/WEExtensions/WEResourceManager.m
-+++ b/sope-appserver/WEExtensions/WEResourceManager.m
-@@ -575,8 +575,7 @@ checkCache(NSDictionary *_cache, WEResourceKey *_key,
-       }
-       [ms appendString:_name];
-       
--      url = [ms copy];
--      [ms release]; ms = nil;
-+      url = ms;
-       if (debugOn) [self debugWithFormat:@"FOUND: '%@'", url];
-       goto done;
-     }
-@@ -589,6 +588,7 @@ checkCache(NSDictionary *_cache, WEResourceKey *_key,
-   while ((path = [e nextObject])) {
-     NSMutableString *ms;
-     NSString *fpath, *basepath;
-+    NSDate *lastModified;
-     
-     /* check language */
-     if (_lang) {
-@@ -608,7 +608,11 @@ checkCache(NSDictionary *_cache, WEResourceKey *_key,
-     
-     if (![fm fileExistsAtPath:fpath])
-       continue;
--      
-+
-+    lastModified = [[fm fileAttributesAtPath: fpath
-+                                traverseLink: YES]
-+                     fileModificationDate];
-+
-     ms = [[NSMutableString alloc] initWithCapacity:256];
-       
-     if (prefix) [ms appendString:prefix];
-@@ -622,9 +626,10 @@ checkCache(NSDictionary *_cache, WEResourceKey *_key,
-       [ms appendString:@".lproj/"];
-     }
-     [ms appendString:_name];
-+    [ms appendFormat: @"?lm=%u",
-+        (NSUInteger) [lastModified timeIntervalSince1970]];
-       
--    url = [ms copy];
--    [ms release]; ms = nil;
-+    url = ms;
-     if (debugOn) [self debugWithFormat:@"FOUND: '%@'", url];
-     goto done;
-   }
diff -Nru sope-1.3.15/debian/patches/0009-GNUstep-1.24-fix.patch sope-1.3.16/debian/patches/0009-GNUstep-1.24-fix.patch
--- sope-1.3.15/debian/patches/0009-GNUstep-1.24-fix.patch	2012-07-03 01:12:28.000000000 +0200
+++ sope-1.3.16/debian/patches/0009-GNUstep-1.24-fix.patch	1970-01-01 01:00:00.000000000 +0100
@@ -1,730 +0,0 @@
-From: Ludovic Marcotte <lmarcotte@inverse.ca>
-Date: Tue, 29 May 2012 18:56:25 +0000
-Subject: GNUstep 1.24 fix
-
-Origin: upstream, http://mtn.inverse.ca/revision/diff/1e79eab4c546452715e5171f1c326b7d36f1c195/with/99dc7d9dce88b8a323b1e7aab60de99ed2bfda60
----
- .../NGObjWeb/NGHttp/NGHttpHeaderFields.m           |   18 +++++++--------
- sope-appserver/WOExtensions/WOTabPanel.m           |   10 ++++----
- sope-core/NGExtensions/NGCalendarDateRange.m       |   12 +++++-----
- .../NGExtensions/NGCalendarDateRange.h             |    2 +-
- sope-gdl1/PostgreSQL/PGResultSet.m                 |    5 ----
- sope-gdl1/PostgreSQL/PostgreSQL72Channel.m         |   16 +++++++++----
- sope-xml/DOM/DOMNodeWithChildren.m                 |   10 ++++----
- sope-xml/STXSaxDriver/ExtraSTX/StructuredText.h    |    4 ++--
- sope-xml/STXSaxDriver/ExtraSTX/StructuredText.m    |   18 +++++++--------
- sope-xml/SaxObjC/SaxAttributeList.m                |   14 ++++++------
- sope-xml/SaxObjC/SaxAttributes.m                   |   14 ++++++------
- sope-xml/XmlRpc/NSObject+XmlRpc.h                  |    2 +-
- sope-xml/XmlRpc/NSObject+XmlRpc.m                  |   20 ++++++++--------
- sope-xml/XmlRpc/XmlRpcDecoder.m                    |    4 ++--
- sope-xml/XmlRpc/XmlRpcSaxHandler.m                 |   24 ++++++++++----------
- 15 files changed, 88 insertions(+), 85 deletions(-)
-
-diff --git a/sope-appserver/NGObjWeb/NGHttp/NGHttpHeaderFields.m b/sope-appserver/NGObjWeb/NGHttp/NGHttpHeaderFields.m
-index e3e1bd0..6629adb 100644
---- a/sope-appserver/NGObjWeb/NGHttp/NGHttpHeaderFields.m
-+++ b/sope-appserver/NGObjWeb/NGHttp/NGHttpHeaderFields.m
-@@ -145,7 +145,7 @@
- 
- - (NSString *)stringValue {
-   NSMutableString *str = [[NSMutableString allocWithZone:[self zone]] init];
--  int  cnt, count = [self->charsets count];
-+  NSUInteger  cnt, count = [self->charsets count];
- 
-   for (cnt = 0; cnt < count; cnt++) {
-     if (cnt != 0) [str appendString:@","];
-@@ -201,7 +201,7 @@
- 
- - (NSString *)stringValue {
-   NSMutableString *str;
--  int  cnt, count;
-+  NSUInteger      cnt, count;
- 
-   str = [[NSMutableString allocWithZone:[self zone]] init];
-   count = [self->types count];
-@@ -260,7 +260,7 @@
- 
- - (NSString *)stringValue {
-   NSMutableString *str = [[NSMutableString allocWithZone:[self zone]] init];
--  int  cnt, count = [self->languages count];
-+  NSUInteger      cnt, count = [self->languages count];
- 
-   for (cnt = 0; cnt < count; cnt++) {
-     if (cnt != 0) [str appendString:@", "];
-@@ -283,8 +283,8 @@ static void _parseUserAgent(NGHttpUserAgent *self) {
- 
-   if ([self->value hasPrefix:@"Mozilla"]) {
-     // Mozilla Browser or compatible
--    NSRange r;
--    int idx, av, iv;
-+    NSRange    r;
-+    NSUInteger idx, av, iv;
- 
-     r = [self->value rangeOfString:@"/"];
-     idx = r.location;
-@@ -299,7 +299,7 @@ static void _parseUserAgent(NGHttpUserAgent *self) {
- 
-       self->browser = @"Mozilla";
- 
--      sscanf([tmp cString], "%i.%i", &av, &iv);
-+      sscanf([tmp cString], "%"PRIuPTR".%"PRIuPTR"", &av, &iv);
-       self->majorVersion = av;
-       self->minorVersion = iv;
- 
-@@ -310,7 +310,7 @@ static void _parseUserAgent(NGHttpUserAgent *self) {
-           tmp = [self->value substringFromIndex:(idx + 5)];
-           self->browser = @"MSIE";
- 
--          sscanf([tmp cString], "%i.%i", &av, &iv);
-+          sscanf([tmp cString], "%"PRIuPTR".%"PRIuPTR"", &av, &iv);
-           self->majorVersion = av;
-           self->minorVersion = iv;
-         }
-@@ -553,8 +553,8 @@ static void _parseUserAgent(NGHttpUserAgent *self) {
-     NSData *data = [_credentials dataByDecodingBase64];
- 
-     if (data) {
--      char *str   = (char *)[data bytes];
--      int  len    = [data length];
-+      char *str = (char *)[data bytes];
-+      NSUInteger len = [data length];
-       char *start = str;
- 
-       while ((*str != '\0') && (*str != ':') && (len > 0)) {
-diff --git a/sope-appserver/WOExtensions/WOTabPanel.m b/sope-appserver/WOExtensions/WOTabPanel.m
-index 504312a..9f798a1 100644
---- a/sope-appserver/WOExtensions/WOTabPanel.m
-+++ b/sope-appserver/WOExtensions/WOTabPanel.m
-@@ -82,7 +82,7 @@
-   {
-     WOComponent *sComponent;
-     NSArray     *ttabs;
--    unsigned    i;
-+    NSUInteger  i;
-     
-     sComponent = [_ctx component];
-     ttabs      = [self->tabs valueInComponent:sComponent];
-@@ -118,17 +118,17 @@
-   if ([section isEqualToString:@"tab"]) {
-     WOComponent *sComponent;
-     NSArray *ttabs;
--    int idx;
-+    NSUInteger idx;
-     
-     [_ctx consumeElementID]; // consume 'tab'
-     
-     sComponent = [_ctx component];
-     ttabs = [self->tabs valueInComponent:sComponent];
- 
--    idx = [[_ctx currentElementID] intValue];
-+    idx = [[_ctx currentElementID] unsignedIntegerValue];
-     [_ctx consumeElementID]; // consume index
- 
--    if (idx >= (int)[ttabs count]) {
-+    if (idx >= [ttabs count]) {
-       /* index out of range */
-       idx = 0;
-     }
-@@ -156,7 +156,7 @@
-   WOComponent *sComponent;
-   NSArray     *ttabs;
-   BOOL        isInForm;
--  unsigned    i, selIdx;
-+  NSUInteger  i, selIdx;
-   NSString    *selColor, *unselColor, *s;
-   
-   if ([_ctx isRenderingDisabled]) {
-diff --git a/sope-core/NGExtensions/NGCalendarDateRange.m b/sope-core/NGExtensions/NGCalendarDateRange.m
-index 9bc4291..af4f8dd 100644
---- a/sope-core/NGExtensions/NGCalendarDateRange.m
-+++ b/sope-core/NGExtensions/NGCalendarDateRange.m
-@@ -217,7 +217,7 @@
-   andEndDateKey:(NSString *)e
- {
-   NSMutableArray *ma;
--  unsigned i, count;
-+  NSUInteger     i, count;
-   
-   count = [self count];
-   ma    = [NSMutableArray arrayWithCapacity:count];
-@@ -243,7 +243,7 @@
- }
- 
- - (BOOL)dateRangeArrayContainsDate:(NSCalendarDate *)_date {
--  unsigned i, count;
-+  NSUInteger i, count;
-   
-   if (_date == nil) 
-     return NO;
-@@ -256,8 +256,8 @@
-   }
-   return NO;
- }
--- (unsigned)indexOfFirstIntersectingDateRange:(NGCalendarDateRange *)_range {
--  unsigned i, count;
-+- (NSUInteger)indexOfFirstIntersectingDateRange:(NGCalendarDateRange *)_range {
-+  NSUInteger i, count;
-   
-   if (_range == nil)
-     return NO;
-@@ -276,7 +276,7 @@
-   // TODO: this is a candidate for unit testing ...
-   // TODO: pretty "slow" algorithm, improve
-   NSMutableArray *ma;
--  unsigned i, count;
-+  NSUInteger     i, count;
-   
-   count = [self count];
-   if (count < 2)
-@@ -289,7 +289,7 @@
-     NGCalendarDateRange *rangeToAdd;
-     NGCalendarDateRange *availRange;
-     NGCalendarDateRange *newRange;
--    unsigned idx;
-+    NSUInteger idx;
-     
-     rangeToAdd = [self objectAtIndex:i];
-     idx = [ma indexOfFirstIntersectingDateRange:rangeToAdd];
-diff --git a/sope-core/NGExtensions/NGExtensions/NGCalendarDateRange.h b/sope-core/NGExtensions/NGExtensions/NGCalendarDateRange.h
-index c86488b..9a53ed3 100644
---- a/sope-core/NGExtensions/NGExtensions/NGCalendarDateRange.h
-+++ b/sope-core/NGExtensions/NGExtensions/NGCalendarDateRange.h
-@@ -67,7 +67,7 @@
- - (NSArray *)arrayByCreatingDateRangesFromObjectsWithStartDateKey:(NSString *)s
-   andEndDateKey:(NSString *)e;
- 
--- (unsigned)indexOfFirstIntersectingDateRange:(NGCalendarDateRange *)_range;
-+- (NSUInteger)indexOfFirstIntersectingDateRange:(NGCalendarDateRange *)_range;
- - (BOOL)dateRangeArrayContainsDate:(NSCalendarDate *)_date;
- 
- - (NSArray *)arrayByCompactingContainedDateRanges;
-diff --git a/sope-gdl1/PostgreSQL/PGResultSet.m b/sope-gdl1/PostgreSQL/PGResultSet.m
-index ce8db02..71e718b 100644
---- a/sope-gdl1/PostgreSQL/PGResultSet.m
-+++ b/sope-gdl1/PostgreSQL/PGResultSet.m
-@@ -98,12 +98,7 @@
- }
- 
- - (int)indexOfFieldNamed:(NSString *)_name {
--#if LIB_FOUNDATION_LIBRARY
--  // TBD: might be wrong even in this case?
--  return PQfnumber(self->results, [_name cString]);
--#else
-   return PQfnumber(self->results, [_name UTF8String]);
--#endif
- }
- 
- - (int)fieldSizeAtIndex:(unsigned int)_idx {
-diff --git a/sope-gdl1/PostgreSQL/PostgreSQL72Channel.m b/sope-gdl1/PostgreSQL/PostgreSQL72Channel.m
-index 52c20c0..f081ee5 100644
---- a/sope-gdl1/PostgreSQL/PostgreSQL72Channel.m
-+++ b/sope-gdl1/PostgreSQL/PostgreSQL72Channel.m
-@@ -394,21 +394,29 @@ static int openConnectionCount = 0;
-   
-   for (cnt = 0; cnt < attrCount; cnt++) {
-     EOAttribute *attribute;
-+#ifndef GDL_USE_PQFNUMBER_INDEX
-+    NSUInteger  res;
-+#endif
-     
-     attribute = [_attributes objectAtIndex:cnt];
- #if GDL_USE_PQFNUMBER_INDEX
-     self->fieldIndices[cnt] = 
-       [self->resultSet indexOfFieldNamed:[attribute columnName]];
-+    if (self->fieldIndices[cnt] == -1) {
-+      [PostgreSQL72Exception raiseWithFormat:
-+                               @"attribute %@ not covered by query",
-+                             attribute];
-+    }
- #else
--    self->fieldIndices[cnt] = 
--      [fieldNames indexOfObject:[attribute columnName]];
--#endif
-+    res = [fieldNames indexOfObject:[attribute columnName]];
-     
--    if (self->fieldIndices[cnt] == NSNotFound) {
-+    if (res == NSNotFound) {
-       [PostgreSQL72Exception raiseWithFormat:
-                                @"attribute %@ not covered by query",
-                              attribute];
-     }
-+    self->fieldIndices[cnt] = (int)res;
-+#endif
-     [fieldNames replaceObjectAtIndex:self->fieldIndices[cnt] withObject:null];
-   }
-   [fieldNames release]; fieldNames = nil;
-diff --git a/sope-xml/DOM/DOMNodeWithChildren.m b/sope-xml/DOM/DOMNodeWithChildren.m
-index f4c2803..72af9a5 100644
---- a/sope-xml/DOM/DOMNodeWithChildren.m
-+++ b/sope-xml/DOM/DOMNodeWithChildren.m
-@@ -59,7 +59,7 @@
-     : nil;
- }
- - (id<NSObject,DOMNode>)lastChild {
--  unsigned count;
-+  NSUInteger count;
- 
-   return (count = [self->childNodes count]) > 0 
-     ? [self->childNodes objectAtIndex:(count - 1)]
-@@ -69,7 +69,7 @@
- /* modification */
- 
- - (id<NSObject,DOMNode>)removeChild:(id<NSObject,DOMNode>)_node {
--  unsigned idx;
-+  NSUInteger idx;
- 
-   if (self->childNodes == nil)
-     /* this node has no childnodes ! */
-@@ -93,7 +93,7 @@
-   
-   if ([_node nodeType] == DOM_DOCUMENT_FRAGMENT_NODE) {
-     id             fragNodes;
--    unsigned       i, count;
-+    NSUInteger     i, count;
-     NSMutableArray *cache;
-     
-     fragNodes = [_node childNodes];
-@@ -133,7 +133,7 @@
- /* sibling navigation */
- 
- - (id)_domNodeBeforeNode:(id)_node {
--  unsigned idx;
-+  NSUInteger idx;
-   
-   if ((idx = [self->childNodes indexOfObject:_node]) == NSNotFound)
-     /* given node isn't a child of this node */
-@@ -145,7 +145,7 @@
-   return [self->childNodes objectAtIndex:(idx - 1)];
- }
- - (id)_domNodeAfterNode:(id)_node {
--  unsigned idx, count;
-+  NSUInteger idx, count;
- 
-   if ((count = [self->childNodes count]) == 0)
-     /* this node has no children at all .. */
-diff --git a/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.h b/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.h
-index 35a24af..25073c9 100644
---- a/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.h
-+++ b/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.h
-@@ -62,7 +62,7 @@
- 
- - (void)parse;
- 
--- (int)lineType:(StructuredLine *)_line;
-+- (NSUInteger)lineType:(StructuredLine *)_line;
- 
- - (void)separateIntoBlocks;
- - (void)adjustLineLevels;
-@@ -78,7 +78,7 @@
- - (StructuredTextLiteralBlock *)buildLiteralBlock;
- - (StructuredTextList *)buildList;
- 
--- (int)listItemTypology:(StructuredLine *)_line;
-+- (NSUInteger)listItemTypology:(StructuredLine *)_line;
- 
- @end
- 
-diff --git a/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.m b/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.m
-index 25742a5..7ff8209 100644
---- a/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.m
-+++ b/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.m
-@@ -105,7 +105,7 @@
-   NSString	  *text, *currentLine, *trimmedLine;
-   NSMutableString *buf;
-   NSCharacterSet  *set;
--  int i, count;
-+  NSUInteger      i, count;
-   
-   set   = [NSCharacterSet characterSetWithCharactersInString:@"\r"];
-   buf   = [NSMutableString stringWithCapacity:256];
-@@ -278,7 +278,7 @@
-   [objectStack release];
- }
- 
--- (int)lineType:(StructuredLine *)aLine {
-+- (NSUInteger)lineType:(StructuredLine *)aLine {
-   if ([self checkForListItem:aLine])
-     return StructuredTextParserLine_List;
-   
-@@ -357,7 +357,7 @@
-   
-   if ([[text stringByTrimmingCharactersInSet:
- 	       [NSCharacterSet whitespaceCharacterSet]] hasSuffix:@"::"]) {
--    int length;
-+    NSUInteger length;
- 
-     length = [text length];
-     text   = [text substringToIndex:length - 2];
-@@ -384,7 +384,7 @@
-   StructuredLine	 *line, *prevLine = nil;
-   StructuredTextListItem *item = nil;
-   StructuredStack	 *paragraphs;
--  int type;
-+  NSUInteger		 type;
-   
-   result     = nil;
-   paragraphs = [self paragraphs];
-@@ -428,7 +428,7 @@
-       break;
-     case StructuredTextList_DEFINITION: {
-       NSArray *components;
--      int i, count;
-+      NSUInteger i, count;
- 
-       components = [text componentsSeparatedByString:@" -- "];
-       count = [components count];
-@@ -477,10 +477,10 @@
-   return [result autorelease];
- }
- 
--- (int)listItemTypology:(StructuredLine *)aLine {
--  NSString *text;
--  int      type = NSNotFound;
--  int      i, h, length;
-+- (NSUInteger)listItemTypology:(StructuredLine *)aLine {
-+  NSString   *text;
-+  NSUInteger type = NSNotFound;
-+  NSUInteger i, h, length;
-   NSRange  range;
- 
-   text = [aLine text];
-diff --git a/sope-xml/SaxObjC/SaxAttributeList.m b/sope-xml/SaxObjC/SaxAttributeList.m
-index 0b8f75e..7fcb7e1 100644
---- a/sope-xml/SaxObjC/SaxAttributeList.m
-+++ b/sope-xml/SaxObjC/SaxAttributeList.m
-@@ -33,7 +33,7 @@
- }
- - (id)initWithAttributeList:(id<SaxAttributeList>)_attrList {
-   if ((self = [self init])) {
--    unsigned i;
-+    NSUInteger i;
- 
-     for (i = 0; i < [_attrList count]; i++) {
-       [self->names  addObject:[_attrList nameAtIndex:i]];
-@@ -46,7 +46,7 @@
- 
- - (id)initWithAttributes:(id<SaxAttributes>)_attrList {
-   if ((self = [self init])) {
--    int i, c;
-+    NSUInteger i, c;
- 
-     for (i = 0, c = [_attrList count]; i < c; i++) {
-       [self->names  addObject:[_attrList rawNameAtIndex:i]];
-@@ -67,7 +67,7 @@
- /* modify operations */
- 
- - (void)setAttributeList:(id<SaxAttributeList>)_attrList {
--  unsigned i;
-+  NSUInteger i;
- 
-   [self clear];
-   
-@@ -95,7 +95,7 @@
- }
- 
- - (void)removeAttribute:(NSString *)_name {
--  int idx;
-+  NSUInteger idx;
- 
-   if ((idx = [self->names indexOfObject:_name]) == NSNotFound)
-     return;
-@@ -118,7 +118,7 @@
- }
- 
- - (NSString *)typeForName:(NSString *)_name {
--  int i;
-+  NSUInteger i;
- 
-   if ((i = [self->names indexOfObject:_name]) == NSNotFound)
-     return nil;
-@@ -126,7 +126,7 @@
-   return [self typeAtIndex:i];
- }
- - (NSString *)valueForName:(NSString *)_name {
--  int i;
-+  NSUInteger i;
- 
-   if ((i = [self->names indexOfObject:_name]) == NSNotFound)
-     return nil;
-@@ -157,7 +157,7 @@
- - (NSString *)description {
-   NSMutableString *s;
-   NSString        *is;
--  int i, c;
-+  NSUInteger i, c;
-   
-   s = [[NSMutableString alloc] init];
-   [s appendFormat:@"<%08X[%@]:", self, NSStringFromClass([self class])];
-diff --git a/sope-xml/SaxObjC/SaxAttributes.m b/sope-xml/SaxObjC/SaxAttributes.m
-index d07a0fa..5166beb 100644
---- a/sope-xml/SaxObjC/SaxAttributes.m
-+++ b/sope-xml/SaxObjC/SaxAttributes.m
-@@ -36,7 +36,7 @@
- }
- - (id)initWithAttributes:(id<SaxAttributes>)_attrs {
-   if ((self = [self init])) {
--    int i, c;
-+    NSUInteger i, c;
-     
-     for (i = 0, c = [_attrs count]; i < c; i++) {
-       [self addAttribute:[_attrs nameAtIndex:i]
-@@ -51,7 +51,7 @@
- 
- - (id)initWithAttributeList:(id<SaxAttributeList>)_attrList {
-   if ((self = [self init])) {
--    unsigned i;
-+    NSUInteger i;
-     
-     for (i = 0; i < [_attrList count]; i++) {
-       [self addAttribute:[_attrList nameAtIndex:i] uri:@""
-@@ -115,7 +115,7 @@
- }
- - (NSUInteger)indexOfName:(NSString *)_localPart uri:(NSString *)_uri
- {
--  unsigned int i, c;
-+  NSUInteger i, c;
-   
-   for (i = 0, c = [self count]; i < c; i++) {
-     NSString *name;
-@@ -160,7 +160,7 @@
- /* lookup data by name */
- 
- - (NSString *)typeForRawName:(NSString *)_rawName {
--  unsigned int i;
-+  NSUInteger i;
- 
-   if ((i = [self indexOfRawName:_rawName]) == NSNotFound)
-     return nil;
-@@ -168,7 +168,7 @@
-   return [self typeAtIndex:i];
- }
- - (NSString *)typeForName:(NSString *)_localName uri:(NSString *)_uri {
--  unsigned int i;
-+  NSUInteger i;
-   
-   if ((i = [self indexOfName:_localName uri:_uri]) == NSNotFound)
-     return nil;
-@@ -177,7 +177,7 @@
- }
- 
- - (NSString *)valueForRawName:(NSString *)_rawName {
--  unsigned int i;
-+  NSUInteger i;
- 
-   if ((i = [self indexOfRawName:_rawName]) == NSNotFound)
-     return nil;
-@@ -210,7 +210,7 @@
- - (NSString *)description {
-   NSMutableString *s;
-   NSString        *is;
--  int i, c;
-+  NSUInteger i, c;
-   
-   s = [[NSMutableString alloc] init];
-   [s appendFormat:@"<%08X[%@]:", self, NSStringFromClass([self class])];
-diff --git a/sope-xml/XmlRpc/NSObject+XmlRpc.h b/sope-xml/XmlRpc/NSObject+XmlRpc.h
-index 2b5eda1..93192ee 100644
---- a/sope-xml/XmlRpc/NSObject+XmlRpc.h
-+++ b/sope-xml/XmlRpc/NSObject+XmlRpc.h
-@@ -29,7 +29,7 @@
- @interface NSObject(XmlRpcValues)
- 
- + (id)objectWithXmlRpcType:(NSString *)_type
--  characters:(unichar *)_chars length:(int)_len;
-+  characters:(unichar *)_chars length:(NSUInteger)_len;
- 
- @end
- 
-diff --git a/sope-xml/XmlRpc/NSObject+XmlRpc.m b/sope-xml/XmlRpc/NSObject+XmlRpc.m
-index 211f980..5d83b04 100644
---- a/sope-xml/XmlRpc/NSObject+XmlRpc.m
-+++ b/sope-xml/XmlRpc/NSObject+XmlRpc.m
-@@ -31,25 +31,25 @@
- @interface NSString(XmlRpcParsing)
- - (id)initWithXmlRpcType:(NSString *)_type
-   characters:(unichar *)_chars
--  length:(int)_len;
-+  length:(NSUInteger)_len;
- @end
- 
- @interface NSDate(XmlRpcParsing)
- - (id)initWithXmlRpcType:(NSString *)_type
-   characters:(unichar *)_chars
--  length:(int)_len;
-+  length:(NSUInteger)_len;
- @end
- 
- @interface NSNumber(XmlRpcParsing)
- - (id)initWithXmlRpcType:(NSString *)_type
-   characters:(unichar *)_chars
--  length:(int)_len;
-+  length:(NSUInteger)_len;
- @end
- 
- @interface NSData(XmlRpcParsing)
- - (id)initWithXmlRpcType:(NSString *)_type
-   characters:(unichar *)_chars
--  length:(int)_len;
-+  length:(NSUInteger)_len;
- @end
- 
- @interface NSData(UsedNGExtensions)
-@@ -132,7 +132,7 @@
- }
- 
- + (id)objectWithXmlRpcType:(NSString *)_type
--  characters:(unichar *)_chars length:(int)_len
-+  characters:(unichar *)_chars length:(NSUInteger)_len
- {
-   static NSDictionary *typeToClass = nil;
-   Class ObjClass = Nil;
-@@ -171,7 +171,7 @@
- }
- 
- - (id)initWithXmlRpcType:(NSString *)_type
--  characters:(unichar *)_chars length:(int)_len
-+  characters:(unichar *)_chars length:(NSUInteger)_len
- {
-   if ([self respondsToSelector:@selector(initWithString:)]) {
-     NSString *s;
-@@ -194,7 +194,7 @@
- /* NSData represents the xml-rpc base type 'base64' */
- 
- - (id)initWithXmlRpcType:(NSString *)_type
--  characters:(unichar *)_chars length:(int)_len
-+  characters:(unichar *)_chars length:(NSUInteger)_len
- {
-   NSString *v;
- 
-@@ -215,7 +215,7 @@
- 
- /* NSDate represents the xml-rpc type dateTime.iso8601: */
- - (id)initWithXmlRpcType:(NSString *)_type
--  characters:(unichar *)_chars length:(int)_len
-+  characters:(unichar *)_chars length:(NSUInteger)_len
- {
-   /* eg 19980717T14:08:55 */
-   if (_len < 17) {
-@@ -283,7 +283,7 @@
- /* NSNumber represents the xml-rpc base types: 'int', 'double', 'boolean': */
- 
- - (id)initWithXmlRpcType:(NSString *)_type
--  characters:(unichar *)_chars length:(int)_len
-+  characters:(unichar *)_chars length:(NSUInteger)_len
- {
-   if ([_type isEqualToString:@"boolean"]) {
-     BOOL v;
-@@ -318,7 +318,7 @@
- @implementation NSString(XmlRpcParsing)
- 
- - (id)initWithXmlRpcType:(NSString *)_type
--  characters:(unichar *)_chars length:(int)_len
-+  characters:(unichar *)_chars length:(NSUInteger)_len
- {
-   /* this is *never* called, since NSString+alloc returns a NSTemporaryString*/
-   return [self initWithCharacters:_chars length:_len];
-diff --git a/sope-xml/XmlRpc/XmlRpcDecoder.m b/sope-xml/XmlRpc/XmlRpcDecoder.m
-index eb19825..580152e 100644
---- a/sope-xml/XmlRpc/XmlRpcDecoder.m
-+++ b/sope-xml/XmlRpc/XmlRpcDecoder.m
-@@ -589,8 +589,8 @@ static BOOL  doDebug         = NO;
-   int result;
-   
-   if ((newValue = [self beginDecodingKey:_key]) == nil)
--    /* any useful alternatives ? */
--    return NSNotFound;
-+    /* NSKeyedArchiver returns 0, we too */
-+    return 0;
-   
-   result = [self decodeInt];
-   [self finishedDecodingKey];
-diff --git a/sope-xml/XmlRpc/XmlRpcSaxHandler.m b/sope-xml/XmlRpc/XmlRpcSaxHandler.m
-index 1245b9b..25083e9 100644
---- a/sope-xml/XmlRpc/XmlRpcSaxHandler.m
-+++ b/sope-xml/XmlRpc/XmlRpcSaxHandler.m
-@@ -158,7 +158,7 @@ static BOOL  doDebug         = NO;
- - (void)end_name {
-   self->nextCharactersProcessor = NULL;
- }
--- (void)_name:(unichar *)_chars length:(int)_len {
-+- (void)_name:(unichar *)_chars length:(NSUInteger)_len {
-   NSString *name;
-   name = [NSString stringWithCharacters:_chars length:_len];
-   [self->memberNameStack addObject:name];
-@@ -184,7 +184,7 @@ static BOOL  doDebug         = NO;
-   self->valueNestingLevel--;
- }
- 
--- (void)_dateValue:(unichar *)_chars length:(int)_len {
-+- (void)_dateValue:(unichar *)_chars length:(NSUInteger)_len {
-   if (self->dateTime)
-     return;
-   
-@@ -193,7 +193,7 @@ static BOOL  doDebug         = NO;
-                               retain];
- }
- 
--- (void)_baseValue:(unichar *)_chars length:(int)_len {
-+- (void)_baseValue:(unichar *)_chars length:(NSUInteger)_len {
-   id value;
- 
-   if (self->valueNestingLevel == 0) {
-@@ -239,8 +239,8 @@ static BOOL  doDebug         = NO;
-   self->nextCharactersProcessor = @selector(_baseValue:length:);
- }
- - (void)start_dateTime:(id<SaxAttributes>)_attrs {
--  NSString *tz;
--  int      idx;
-+  NSString   *tz;
-+  NSUInteger idx;
-   
-   [self->timeZone release]; self->timeZone = nil;
-   [self->dateTime release]; self->dateTime = nil;
-@@ -467,7 +467,7 @@ static BOOL  doDebug         = NO;
- - (void)end_methodName {
-   self->nextCharactersProcessor = NULL;
- }
--- (void)_methodName:(unichar *)_chars length:(int)_len {
-+- (void)_methodName:(unichar *)_chars length:(NSUInteger)_len {
-   [self->methodName release];
-   self->methodName = [[NSString alloc] initWithCharacters:_chars length:_len];
- }
-@@ -529,8 +529,8 @@ static BOOL  doDebug         = NO;
-   attributes:(id<SaxAttributes>)_attrs
- {
-   NSString *tmp = nil;
--  SEL      sel;
--  int      idx;
-+  SEL        sel;
-+  NSUInteger idx;
-   
-   [self->tagStack addObject:_rawName];
- 
-@@ -559,14 +559,14 @@ static BOOL  doDebug         = NO;
-   namespace:(NSString *)_ns
-   rawName:(NSString *)_rawName
- {
--  unsigned stackDepth, lastIdx;
-+  NSUInteger stackDepth, lastIdx;
-   NSString *tmp;
-   SEL sel;
- 
-   if (self->nextCharactersProcessor != NULL) {
--    void (*m)(id, SEL, unichar *, int);
-+    void (*m)(id, SEL, unichar *, NSUInteger);
-     unichar *chars;
--    unsigned len;
-+    NSUInteger len;
- 
-     len   = [self->characters length];
-     chars = malloc(sizeof(unichar)*len);
-@@ -606,7 +606,7 @@ static BOOL  doDebug         = NO;
-   }
- }
- 
--- (void)characters:(unichar *)_chars length:(int)_len {
-+- (void)characters:(unichar *)_chars length:(NSUInteger)_len {
-   if (_len > 0) {
-     [self->characters appendString:
-          [NSString stringWithCharacters:_chars length:_len]];
diff -Nru sope-1.3.15/debian/patches/series sope-1.3.16/debian/patches/series
--- sope-1.3.15/debian/patches/series	2012-07-03 01:12:28.000000000 +0200
+++ sope-1.3.16/debian/patches/series	2012-06-29 21:00:44.000000000 +0200
@@ -3,7 +3,5 @@
 0003-close-all-fds-on-daemon-start.patch
 0004-link-everything-correctly.patch
 0005-Do-not-build-xmlrpc-and-stxsaxdriver.patch
-0006-Fix-compilation-on-GNU-kFreeBSD.patch
-0007-Fix-FTBFS-on-arm.patch
-0008-Fix-stale-cache-issue-when-upgrading.patch
-0009-GNUstep-1.24-fix.patch
+0006-Fix-FTBFS-on-arm.patch
+0007-Remove-disabling-of-optimization.patch
diff -Nru sope-1.3.15/debian/rules sope-1.3.16/debian/rules
--- sope-1.3.15/debian/rules	2012-07-03 01:12:28.000000000 +0200
+++ sope-1.3.16/debian/rules	2012-06-29 21:00:44.000000000 +0200
@@ -2,6 +2,11 @@
 # -*- makefile -*-
 export DH_VERBOSE=1
 
+export DEB_BUILD_MAINT_OPTIONS=hardening=+bindnow
+include /usr/share/dpkg/buildflags.mk
+# FIXME: dpkg-buildflags / cdbs should support OBJCFLAGS
+DEB_MAKE_BUILD_TARGET = all messages=yes OBJCFLAGS="$(CFLAGS)"
+
 include /usr/share/cdbs/1/rules/gnustep.mk
 include /usr/share/cdbs/1/class/gnumakefile.mk
 
diff -Nru sope-1.3.15/sope-appserver/NGObjWeb/Associations/WOKeyPathAssociation.m sope-1.3.16/sope-appserver/NGObjWeb/Associations/WOKeyPathAssociation.m
--- sope-1.3.15/sope-appserver/NGObjWeb/Associations/WOKeyPathAssociation.m	2012-05-11 22:23:08.000000000 +0200
+++ sope-1.3.16/sope-appserver/NGObjWeb/Associations/WOKeyPathAssociation.m	2012-06-01 07:12:49.000000000 +0200
@@ -939,8 +939,7 @@
 		handleUnknownKey stuff ...
     */
     
-#if GNUSTEP_BASE_LIBRARY && ((GNUSTEP_BASE_MAJOR_VERSION >= 1) && \
-			     (GNUSTEP_BASE_MINOR_VERSION >= 11))
+#if GNUSTEP_BASE_LIBRARY
     // TODO: also do this for OSX 10.4? probably
     [object setValue:_value forKey:info->extra.key];
 #else
@@ -1097,9 +1096,9 @@
     return;
   }
 
-  if (info->type == WOKeyType_kvc) { // takeValue:forKey:..
+  if (info->type == WOKeyType_kvc) { // setValue:forKey:
     NSCAssert(info->extra.key, @"no key object set ..");
-    [_wo takeValue:uintNumObj(_value) forKey:info->extra.key];
+    [_wo setValue:uintNumObj(_value) forKey:info->extra.key];
     return;
   }
   if (info->type == WOKeyType_binding) { // setValue:forBinding:
diff -Nru sope-1.3.15/sope-appserver/NGObjWeb/NGHttp/NGHttpHeaderFields.m sope-1.3.16/sope-appserver/NGObjWeb/NGHttp/NGHttpHeaderFields.m
--- sope-1.3.15/sope-appserver/NGObjWeb/NGHttp/NGHttpHeaderFields.m	2012-05-11 22:23:08.000000000 +0200
+++ sope-1.3.16/sope-appserver/NGObjWeb/NGHttp/NGHttpHeaderFields.m	2012-06-01 07:12:49.000000000 +0200
@@ -145,7 +145,7 @@
 
 - (NSString *)stringValue {
   NSMutableString *str = [[NSMutableString allocWithZone:[self zone]] init];
-  int  cnt, count = [self->charsets count];
+  NSUInteger  cnt, count = [self->charsets count];
 
   for (cnt = 0; cnt < count; cnt++) {
     if (cnt != 0) [str appendString:@","];
@@ -201,7 +201,7 @@
 
 - (NSString *)stringValue {
   NSMutableString *str;
-  int  cnt, count;
+  NSUInteger      cnt, count;
 
   str = [[NSMutableString allocWithZone:[self zone]] init];
   count = [self->types count];
@@ -260,7 +260,7 @@
 
 - (NSString *)stringValue {
   NSMutableString *str = [[NSMutableString allocWithZone:[self zone]] init];
-  int  cnt, count = [self->languages count];
+  NSUInteger      cnt, count = [self->languages count];
 
   for (cnt = 0; cnt < count; cnt++) {
     if (cnt != 0) [str appendString:@", "];
@@ -283,8 +283,8 @@
 
   if ([self->value hasPrefix:@"Mozilla"]) {
     // Mozilla Browser or compatible
-    NSRange r;
-    int idx, av, iv;
+    NSRange    r;
+    NSUInteger idx, av, iv;
 
     r = [self->value rangeOfString:@"/"];
     idx = r.location;
@@ -299,7 +299,7 @@
 
       self->browser = @"Mozilla";
 
-      sscanf([tmp cString], "%i.%i", &av, &iv);
+      sscanf([tmp cString], "%"PRIuPTR".%"PRIuPTR"", &av, &iv);
       self->majorVersion = av;
       self->minorVersion = iv;
 
@@ -310,7 +310,7 @@
           tmp = [self->value substringFromIndex:(idx + 5)];
           self->browser = @"MSIE";
 
-          sscanf([tmp cString], "%i.%i", &av, &iv);
+          sscanf([tmp cString], "%"PRIuPTR".%"PRIuPTR"", &av, &iv);
           self->majorVersion = av;
           self->minorVersion = iv;
         }
@@ -553,8 +553,8 @@
     NSData *data = [_credentials dataByDecodingBase64];
 
     if (data) {
-      char *str   = (char *)[data bytes];
-      int  len    = [data length];
+      char *str = (char *)[data bytes];
+      NSUInteger len = [data length];
       char *start = str;
 
       while ((*str != '\0') && (*str != ':') && (len > 0)) {
diff -Nru sope-1.3.15/sope-appserver/NGObjWeb/NGHttp/common.h sope-1.3.16/sope-appserver/NGObjWeb/NGHttp/common.h
--- sope-1.3.15/sope-appserver/NGObjWeb/NGHttp/common.h	2012-05-11 22:23:08.000000000 +0200
+++ sope-1.3.16/sope-appserver/NGObjWeb/NGHttp/common.h	2012-06-01 07:12:49.000000000 +0200
@@ -22,6 +22,7 @@
 #ifndef __NGHttp_common_H__
 #define __NGHttp_common_H__
 
+#include <inttypes.h>
 #include <string.h>
 
 #if !defined(__MINGW32__)
diff -Nru sope-1.3.15/sope-appserver/WEExtensions/ChangeLog sope-1.3.16/sope-appserver/WEExtensions/ChangeLog
--- sope-1.3.15/sope-appserver/WEExtensions/ChangeLog	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-appserver/WEExtensions/ChangeLog	2012-06-01 07:12:50.000000000 +0200
@@ -1,3 +1,11 @@
+2012-05-24  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+	* WEResourceManager.m
+	(_urlForResourceNamed:inFramework:language:applicationName:):
+	append "lm=" + the unix timestamp of the file last modification
+	date to force a reload of the file each time it is modified, no
+	matter what expiry date the browsers are using in their cache.
+
 2010-01-29  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
 
 	* WEResourceManager.m
diff -Nru sope-1.3.15/sope-appserver/WEExtensions/WEResourceManager.m sope-1.3.16/sope-appserver/WEExtensions/WEResourceManager.m
--- sope-1.3.15/sope-appserver/WEExtensions/WEResourceManager.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-appserver/WEExtensions/WEResourceManager.m	2012-06-01 07:12:50.000000000 +0200
@@ -575,8 +575,7 @@
       }
       [ms appendString:_name];
       
-      url = [ms copy];
-      [ms release]; ms = nil;
+      url = ms;
       if (debugOn) [self debugWithFormat:@"FOUND: '%@'", url];
       goto done;
     }
@@ -589,6 +588,7 @@
   while ((path = [e nextObject])) {
     NSMutableString *ms;
     NSString *fpath, *basepath;
+    NSDate *lastModified;
     
     /* check language */
     if (_lang) {
@@ -608,7 +608,11 @@
     
     if (![fm fileExistsAtPath:fpath])
       continue;
-      
+
+    lastModified = [[fm fileAttributesAtPath: fpath
+                                traverseLink: YES]
+                     fileModificationDate];
+
     ms = [[NSMutableString alloc] initWithCapacity:256];
       
     if (prefix) [ms appendString:prefix];
@@ -622,9 +626,10 @@
       [ms appendString:@".lproj/"];
     }
     [ms appendString:_name];
+    [ms appendFormat: @"?lm=%u",
+        (NSUInteger) [lastModified timeIntervalSince1970]];
       
-    url = [ms copy];
-    [ms release]; ms = nil;
+    url = ms;
     if (debugOn) [self debugWithFormat:@"FOUND: '%@'", url];
     goto done;
   }
diff -Nru sope-1.3.15/sope-appserver/WOExtensions/WOTabPanel.m sope-1.3.16/sope-appserver/WOExtensions/WOTabPanel.m
--- sope-1.3.15/sope-appserver/WOExtensions/WOTabPanel.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-appserver/WOExtensions/WOTabPanel.m	2012-06-01 07:12:50.000000000 +0200
@@ -82,7 +82,7 @@
   {
     WOComponent *sComponent;
     NSArray     *ttabs;
-    unsigned    i;
+    NSUInteger  i;
     
     sComponent = [_ctx component];
     ttabs      = [self->tabs valueInComponent:sComponent];
@@ -118,17 +118,17 @@
   if ([section isEqualToString:@"tab"]) {
     WOComponent *sComponent;
     NSArray *ttabs;
-    int idx;
+    NSUInteger idx;
     
     [_ctx consumeElementID]; // consume 'tab'
     
     sComponent = [_ctx component];
     ttabs = [self->tabs valueInComponent:sComponent];
 
-    idx = [[_ctx currentElementID] intValue];
+    idx = [[_ctx currentElementID] unsignedIntegerValue];
     [_ctx consumeElementID]; // consume index
 
-    if (idx >= (int)[ttabs count]) {
+    if (idx >= [ttabs count]) {
       /* index out of range */
       idx = 0;
     }
@@ -156,7 +156,7 @@
   WOComponent *sComponent;
   NSArray     *ttabs;
   BOOL        isInForm;
-  unsigned    i, selIdx;
+  NSUInteger  i, selIdx;
   NSString    *selColor, *unselColor, *s;
   
   if ([_ctx isRenderingDisabled]) {
diff -Nru sope-1.3.15/sope-core/NGExtensions/NGCalendarDateRange.m sope-1.3.16/sope-core/NGExtensions/NGCalendarDateRange.m
--- sope-1.3.15/sope-core/NGExtensions/NGCalendarDateRange.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-core/NGExtensions/NGCalendarDateRange.m	2012-06-01 07:12:50.000000000 +0200
@@ -217,7 +217,7 @@
   andEndDateKey:(NSString *)e
 {
   NSMutableArray *ma;
-  unsigned i, count;
+  NSUInteger     i, count;
   
   count = [self count];
   ma    = [NSMutableArray arrayWithCapacity:count];
@@ -243,7 +243,7 @@
 }
 
 - (BOOL)dateRangeArrayContainsDate:(NSCalendarDate *)_date {
-  unsigned i, count;
+  NSUInteger i, count;
   
   if (_date == nil) 
     return NO;
@@ -256,8 +256,8 @@
   }
   return NO;
 }
-- (unsigned)indexOfFirstIntersectingDateRange:(NGCalendarDateRange *)_range {
-  unsigned i, count;
+- (NSUInteger)indexOfFirstIntersectingDateRange:(NGCalendarDateRange *)_range {
+  NSUInteger i, count;
   
   if (_range == nil)
     return NO;
@@ -276,7 +276,7 @@
   // TODO: this is a candidate for unit testing ...
   // TODO: pretty "slow" algorithm, improve
   NSMutableArray *ma;
-  unsigned i, count;
+  NSUInteger     i, count;
   
   count = [self count];
   if (count < 2)
@@ -289,7 +289,7 @@
     NGCalendarDateRange *rangeToAdd;
     NGCalendarDateRange *availRange;
     NGCalendarDateRange *newRange;
-    unsigned idx;
+    NSUInteger idx;
     
     rangeToAdd = [self objectAtIndex:i];
     idx = [ma indexOfFirstIntersectingDateRange:rangeToAdd];
diff -Nru sope-1.3.15/sope-core/NGExtensions/NGExtensions/NGCalendarDateRange.h sope-1.3.16/sope-core/NGExtensions/NGExtensions/NGCalendarDateRange.h
--- sope-1.3.15/sope-core/NGExtensions/NGExtensions/NGCalendarDateRange.h	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-core/NGExtensions/NGExtensions/NGCalendarDateRange.h	2012-06-01 07:12:50.000000000 +0200
@@ -67,7 +67,7 @@
 - (NSArray *)arrayByCreatingDateRangesFromObjectsWithStartDateKey:(NSString *)s
   andEndDateKey:(NSString *)e;
 
-- (unsigned)indexOfFirstIntersectingDateRange:(NGCalendarDateRange *)_range;
+- (NSUInteger)indexOfFirstIntersectingDateRange:(NGCalendarDateRange *)_range;
 - (BOOL)dateRangeArrayContainsDate:(NSCalendarDate *)_date;
 
 - (NSArray *)arrayByCompactingContainedDateRanges;
diff -Nru sope-1.3.15/sope-core/NGStreams/NGInternetSocketAddress.m sope-1.3.16/sope-core/NGStreams/NGInternetSocketAddress.m
--- sope-1.3.15/sope-core/NGStreams/NGInternetSocketAddress.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-core/NGStreams/NGInternetSocketAddress.m	2012-06-01 07:12:51.000000000 +0200
@@ -48,7 +48,7 @@
 #include "NGInternetSocketDomain.h"
 #include "common.h"
 
-#if defined(HAVE_GETHOSTBYNAME_R) && !defined(linux) && !defined(__FreeBSD__)
+#if defined(HAVE_GETHOSTBYNAME_R) && !defined(linux) && !defined(__FreeBSD__) && !defined(__GLIBC__)
 #define USE_GETHOSTBYNAME_R 1
 #endif
 
diff -Nru sope-1.3.15/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m sope-1.3.16/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m
--- sope-1.3.15/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-gdl1/GDLAccess/FoundationExt/PrintfFormatScanner.m	2012-06-01 07:12:51.000000000 +0200
@@ -33,7 +33,7 @@
 
 #ifdef __va_copy
     // args being NULL breaks heavily on amd64
-    if (args != NULL) {
+    if (args) {
         __va_copy(va, args);
     } else {
 	return format;
diff -Nru sope-1.3.15/sope-gdl1/PostgreSQL/PGResultSet.m sope-1.3.16/sope-gdl1/PostgreSQL/PGResultSet.m
--- sope-1.3.15/sope-gdl1/PostgreSQL/PGResultSet.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-gdl1/PostgreSQL/PGResultSet.m	2012-06-01 07:12:51.000000000 +0200
@@ -98,12 +98,7 @@
 }
 
 - (int)indexOfFieldNamed:(NSString *)_name {
-#if LIB_FOUNDATION_LIBRARY
-  // TBD: might be wrong even in this case?
-  return PQfnumber(self->results, [_name cString]);
-#else
   return PQfnumber(self->results, [_name UTF8String]);
-#endif
 }
 
 - (int)fieldSizeAtIndex:(unsigned int)_idx {
diff -Nru sope-1.3.15/sope-gdl1/PostgreSQL/PostgreSQL72Channel.m sope-1.3.16/sope-gdl1/PostgreSQL/PostgreSQL72Channel.m
--- sope-1.3.15/sope-gdl1/PostgreSQL/PostgreSQL72Channel.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-gdl1/PostgreSQL/PostgreSQL72Channel.m	2012-06-01 07:12:51.000000000 +0200
@@ -394,21 +394,29 @@
   
   for (cnt = 0; cnt < attrCount; cnt++) {
     EOAttribute *attribute;
+#ifndef GDL_USE_PQFNUMBER_INDEX
+    NSUInteger  res;
+#endif
     
     attribute = [_attributes objectAtIndex:cnt];
 #if GDL_USE_PQFNUMBER_INDEX
     self->fieldIndices[cnt] = 
       [self->resultSet indexOfFieldNamed:[attribute columnName]];
+    if (self->fieldIndices[cnt] == -1) {
+      [PostgreSQL72Exception raiseWithFormat:
+                               @"attribute %@ not covered by query",
+                             attribute];
+    }
 #else
-    self->fieldIndices[cnt] = 
-      [fieldNames indexOfObject:[attribute columnName]];
-#endif
+    res = [fieldNames indexOfObject:[attribute columnName]];
     
-    if (self->fieldIndices[cnt] == NSNotFound) {
+    if (res == NSNotFound) {
       [PostgreSQL72Exception raiseWithFormat:
                                @"attribute %@ not covered by query",
                              attribute];
     }
+    self->fieldIndices[cnt] = (int)res;
+#endif
     [fieldNames replaceObjectAtIndex:self->fieldIndices[cnt] withObject:null];
   }
   [fieldNames release]; fieldNames = nil;
diff -Nru sope-1.3.15/sope-ldap/NGLdap/NGLdapAttribute.h sope-1.3.16/sope-ldap/NGLdap/NGLdapAttribute.h
--- sope-1.3.15/sope-ldap/NGLdap/NGLdapAttribute.h	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-ldap/NGLdap/NGLdapAttribute.h	2012-06-01 07:12:51.000000000 +0200
@@ -1,5 +1,6 @@
 /*
   Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2012 Inverse inc.
 
   This file is part of SOPE.
 
@@ -61,6 +62,8 @@
 - (NSEnumerator *)stringValueEnumerator;
 - (NSString *)stringValueAtIndex:(unsigned)_idx;
 
+- (id) asArrayOrString;
+
 @end
 
 #endif /* __NGLdapAttribute_H__ */
diff -Nru sope-1.3.15/sope-ldap/NGLdap/NGLdapAttribute.m sope-1.3.16/sope-ldap/NGLdap/NGLdapAttribute.m
--- sope-1.3.15/sope-ldap/NGLdap/NGLdapAttribute.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-ldap/NGLdap/NGLdapAttribute.m	2012-06-01 07:12:51.000000000 +0200
@@ -1,5 +1,6 @@
 /*
   Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2012 Inverse inc.
 
   This file is part of SOPE.
 
@@ -311,4 +312,18 @@
   return s;
 }
 
+- (id) asArrayOrString
+{
+  NSArray *arrayValue;
+  id value;
+
+  arrayValue = [self allStringValues];
+  if ([arrayValue count] == 1)
+    value = [arrayValue objectAtIndex: 0];
+  else
+    value = arrayValue;
+
+  return value;
+}
+
 @end /* NGLdapAttribute */
diff -Nru sope-1.3.15/sope-ldap/NGLdap/NGLdapEntry.h sope-1.3.16/sope-ldap/NGLdap/NGLdapEntry.h
--- sope-1.3.15/sope-ldap/NGLdap/NGLdapEntry.h	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-ldap/NGLdap/NGLdapEntry.h	2012-06-01 07:12:51.000000000 +0200
@@ -1,5 +1,6 @@
 /*
   Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2012 Inverse inc.
 
   This file is part of SOPE.
 
@@ -24,7 +25,7 @@
 
 #import <Foundation/NSObject.h>
 
-@class NSString, NSDictionary, NSArray;
+@class NSString, NSDictionary, NSMutableDictionary, NSArray;
 @class NGLdapAttribute;
 
 @interface NGLdapEntry : NSObject < NSCopying >
@@ -58,6 +59,8 @@
 
 - (NSString *)ldif;
 
+- (NSMutableDictionary *) asDictionary;
+
 @end
 
 #endif /* __NGLdapEntry_H__ */
diff -Nru sope-1.3.15/sope-ldap/NGLdap/NGLdapEntry.m sope-1.3.16/sope-ldap/NGLdap/NGLdapEntry.m
--- sope-1.3.15/sope-ldap/NGLdap/NGLdapEntry.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-ldap/NGLdap/NGLdapEntry.m	2012-06-01 07:12:51.000000000 +0200
@@ -1,5 +1,6 @@
 /*
   Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2012 Inverse inc.
 
   This file is part of SOPE.
 
@@ -220,4 +221,29 @@
   return s;
 }
 
+- (NSMutableDictionary *) asDictionary
+{
+  NSMutableDictionary *ldapRecord;
+  NSDictionary *ldapAttributes;
+  NSArray *keys;
+  NSString *key;
+  NSUInteger count, max;
+  id value;
+  
+  ldapAttributes = [self attributes];
+  keys = [ldapAttributes allKeys];
+  max = [keys count];
+
+  ldapRecord = [NSMutableDictionary dictionaryWithCapacity: max];
+  for (count = 0; count < max; count++)
+    {
+      key = [keys objectAtIndex: count];
+      value = [[ldapAttributes objectForKey: key] asArrayOrString];
+      if (value)
+        [ldapRecord setObject: value forKey: [key lowercaseString]];
+    }
+
+  return ldapRecord;
+}
+
 @end /* NGLdapEntry */
diff -Nru sope-1.3.15/sope-xml/DOM/DOMNodeWithChildren.m sope-1.3.16/sope-xml/DOM/DOMNodeWithChildren.m
--- sope-1.3.15/sope-xml/DOM/DOMNodeWithChildren.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-xml/DOM/DOMNodeWithChildren.m	2012-06-01 07:12:51.000000000 +0200
@@ -59,7 +59,7 @@
     : nil;
 }
 - (id<NSObject,DOMNode>)lastChild {
-  unsigned count;
+  NSUInteger count;
 
   return (count = [self->childNodes count]) > 0 
     ? [self->childNodes objectAtIndex:(count - 1)]
@@ -69,7 +69,7 @@
 /* modification */
 
 - (id<NSObject,DOMNode>)removeChild:(id<NSObject,DOMNode>)_node {
-  unsigned idx;
+  NSUInteger idx;
 
   if (self->childNodes == nil)
     /* this node has no childnodes ! */
@@ -93,7 +93,7 @@
   
   if ([_node nodeType] == DOM_DOCUMENT_FRAGMENT_NODE) {
     id             fragNodes;
-    unsigned       i, count;
+    NSUInteger     i, count;
     NSMutableArray *cache;
     
     fragNodes = [_node childNodes];
@@ -133,7 +133,7 @@
 /* sibling navigation */
 
 - (id)_domNodeBeforeNode:(id)_node {
-  unsigned idx;
+  NSUInteger idx;
   
   if ((idx = [self->childNodes indexOfObject:_node]) == NSNotFound)
     /* given node isn't a child of this node */
@@ -145,7 +145,7 @@
   return [self->childNodes objectAtIndex:(idx - 1)];
 }
 - (id)_domNodeAfterNode:(id)_node {
-  unsigned idx, count;
+  NSUInteger idx, count;
 
   if ((count = [self->childNodes count]) == 0)
     /* this node has no children at all .. */
diff -Nru sope-1.3.15/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.h sope-1.3.16/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.h
--- sope-1.3.15/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.h	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.h	2012-06-01 07:12:51.000000000 +0200
@@ -62,7 +62,7 @@
 
 - (void)parse;
 
-- (int)lineType:(StructuredLine *)_line;
+- (NSUInteger)lineType:(StructuredLine *)_line;
 
 - (void)separateIntoBlocks;
 - (void)adjustLineLevels;
@@ -78,7 +78,7 @@
 - (StructuredTextLiteralBlock *)buildLiteralBlock;
 - (StructuredTextList *)buildList;
 
-- (int)listItemTypology:(StructuredLine *)_line;
+- (NSUInteger)listItemTypology:(StructuredLine *)_line;
 
 @end
 
diff -Nru sope-1.3.15/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.m sope-1.3.16/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.m
--- sope-1.3.15/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-xml/STXSaxDriver/ExtraSTX/StructuredText.m	2012-06-01 07:12:51.000000000 +0200
@@ -105,7 +105,7 @@
   NSString	  *text, *currentLine, *trimmedLine;
   NSMutableString *buf;
   NSCharacterSet  *set;
-  int i, count;
+  NSUInteger      i, count;
   
   set   = [NSCharacterSet characterSetWithCharactersInString:@"\r"];
   buf   = [NSMutableString stringWithCapacity:256];
@@ -278,7 +278,7 @@
   [objectStack release];
 }
 
-- (int)lineType:(StructuredLine *)aLine {
+- (NSUInteger)lineType:(StructuredLine *)aLine {
   if ([self checkForListItem:aLine])
     return StructuredTextParserLine_List;
   
@@ -357,7 +357,7 @@
   
   if ([[text stringByTrimmingCharactersInSet:
 	       [NSCharacterSet whitespaceCharacterSet]] hasSuffix:@"::"]) {
-    int length;
+    NSUInteger length;
 
     length = [text length];
     text   = [text substringToIndex:length - 2];
@@ -384,7 +384,7 @@
   StructuredLine	 *line, *prevLine = nil;
   StructuredTextListItem *item = nil;
   StructuredStack	 *paragraphs;
-  int type;
+  NSUInteger		 type;
   
   result     = nil;
   paragraphs = [self paragraphs];
@@ -428,7 +428,7 @@
       break;
     case StructuredTextList_DEFINITION: {
       NSArray *components;
-      int i, count;
+      NSUInteger i, count;
 
       components = [text componentsSeparatedByString:@" -- "];
       count = [components count];
@@ -477,10 +477,10 @@
   return [result autorelease];
 }
 
-- (int)listItemTypology:(StructuredLine *)aLine {
-  NSString *text;
-  int      type = NSNotFound;
-  int      i, h, length;
+- (NSUInteger)listItemTypology:(StructuredLine *)aLine {
+  NSString   *text;
+  NSUInteger type = NSNotFound;
+  NSUInteger i, h, length;
   NSRange  range;
 
   text = [aLine text];
diff -Nru sope-1.3.15/sope-xml/SaxObjC/SaxAttributeList.m sope-1.3.16/sope-xml/SaxObjC/SaxAttributeList.m
--- sope-1.3.15/sope-xml/SaxObjC/SaxAttributeList.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-xml/SaxObjC/SaxAttributeList.m	2012-06-01 07:12:51.000000000 +0200
@@ -33,7 +33,7 @@
 }
 - (id)initWithAttributeList:(id<SaxAttributeList>)_attrList {
   if ((self = [self init])) {
-    unsigned i;
+    NSUInteger i;
 
     for (i = 0; i < [_attrList count]; i++) {
       [self->names  addObject:[_attrList nameAtIndex:i]];
@@ -46,7 +46,7 @@
 
 - (id)initWithAttributes:(id<SaxAttributes>)_attrList {
   if ((self = [self init])) {
-    int i, c;
+    NSUInteger i, c;
 
     for (i = 0, c = [_attrList count]; i < c; i++) {
       [self->names  addObject:[_attrList rawNameAtIndex:i]];
@@ -67,7 +67,7 @@
 /* modify operations */
 
 - (void)setAttributeList:(id<SaxAttributeList>)_attrList {
-  unsigned i;
+  NSUInteger i;
 
   [self clear];
   
@@ -95,7 +95,7 @@
 }
 
 - (void)removeAttribute:(NSString *)_name {
-  int idx;
+  NSUInteger idx;
 
   if ((idx = [self->names indexOfObject:_name]) == NSNotFound)
     return;
@@ -118,7 +118,7 @@
 }
 
 - (NSString *)typeForName:(NSString *)_name {
-  int i;
+  NSUInteger i;
 
   if ((i = [self->names indexOfObject:_name]) == NSNotFound)
     return nil;
@@ -126,7 +126,7 @@
   return [self typeAtIndex:i];
 }
 - (NSString *)valueForName:(NSString *)_name {
-  int i;
+  NSUInteger i;
 
   if ((i = [self->names indexOfObject:_name]) == NSNotFound)
     return nil;
@@ -157,7 +157,7 @@
 - (NSString *)description {
   NSMutableString *s;
   NSString        *is;
-  int i, c;
+  NSUInteger i, c;
   
   s = [[NSMutableString alloc] init];
   [s appendFormat:@"<%08X[%@]:", self, NSStringFromClass([self class])];
diff -Nru sope-1.3.15/sope-xml/SaxObjC/SaxAttributes.m sope-1.3.16/sope-xml/SaxObjC/SaxAttributes.m
--- sope-1.3.15/sope-xml/SaxObjC/SaxAttributes.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-xml/SaxObjC/SaxAttributes.m	2012-06-01 07:12:51.000000000 +0200
@@ -36,7 +36,7 @@
 }
 - (id)initWithAttributes:(id<SaxAttributes>)_attrs {
   if ((self = [self init])) {
-    int i, c;
+    NSUInteger i, c;
     
     for (i = 0, c = [_attrs count]; i < c; i++) {
       [self addAttribute:[_attrs nameAtIndex:i]
@@ -51,7 +51,7 @@
 
 - (id)initWithAttributeList:(id<SaxAttributeList>)_attrList {
   if ((self = [self init])) {
-    unsigned i;
+    NSUInteger i;
     
     for (i = 0; i < [_attrList count]; i++) {
       [self addAttribute:[_attrList nameAtIndex:i] uri:@""
@@ -115,7 +115,7 @@
 }
 - (NSUInteger)indexOfName:(NSString *)_localPart uri:(NSString *)_uri
 {
-  unsigned int i, c;
+  NSUInteger i, c;
   
   for (i = 0, c = [self count]; i < c; i++) {
     NSString *name;
@@ -160,7 +160,7 @@
 /* lookup data by name */
 
 - (NSString *)typeForRawName:(NSString *)_rawName {
-  unsigned int i;
+  NSUInteger i;
 
   if ((i = [self indexOfRawName:_rawName]) == NSNotFound)
     return nil;
@@ -168,7 +168,7 @@
   return [self typeAtIndex:i];
 }
 - (NSString *)typeForName:(NSString *)_localName uri:(NSString *)_uri {
-  unsigned int i;
+  NSUInteger i;
   
   if ((i = [self indexOfName:_localName uri:_uri]) == NSNotFound)
     return nil;
@@ -177,7 +177,7 @@
 }
 
 - (NSString *)valueForRawName:(NSString *)_rawName {
-  unsigned int i;
+  NSUInteger i;
 
   if ((i = [self indexOfRawName:_rawName]) == NSNotFound)
     return nil;
@@ -210,7 +210,7 @@
 - (NSString *)description {
   NSMutableString *s;
   NSString        *is;
-  int i, c;
+  NSUInteger i, c;
   
   s = [[NSMutableString alloc] init];
   [s appendFormat:@"<%08X[%@]:", self, NSStringFromClass([self class])];
diff -Nru sope-1.3.15/sope-xml/XmlRpc/NSObject+XmlRpc.h sope-1.3.16/sope-xml/XmlRpc/NSObject+XmlRpc.h
--- sope-1.3.15/sope-xml/XmlRpc/NSObject+XmlRpc.h	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-xml/XmlRpc/NSObject+XmlRpc.h	2012-06-01 07:12:51.000000000 +0200
@@ -29,7 +29,7 @@
 @interface NSObject(XmlRpcValues)
 
 + (id)objectWithXmlRpcType:(NSString *)_type
-  characters:(unichar *)_chars length:(int)_len;
+  characters:(unichar *)_chars length:(NSUInteger)_len;
 
 @end
 
diff -Nru sope-1.3.15/sope-xml/XmlRpc/NSObject+XmlRpc.m sope-1.3.16/sope-xml/XmlRpc/NSObject+XmlRpc.m
--- sope-1.3.15/sope-xml/XmlRpc/NSObject+XmlRpc.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-xml/XmlRpc/NSObject+XmlRpc.m	2012-06-01 07:12:51.000000000 +0200
@@ -31,25 +31,25 @@
 @interface NSString(XmlRpcParsing)
 - (id)initWithXmlRpcType:(NSString *)_type
   characters:(unichar *)_chars
-  length:(int)_len;
+  length:(NSUInteger)_len;
 @end
 
 @interface NSDate(XmlRpcParsing)
 - (id)initWithXmlRpcType:(NSString *)_type
   characters:(unichar *)_chars
-  length:(int)_len;
+  length:(NSUInteger)_len;
 @end
 
 @interface NSNumber(XmlRpcParsing)
 - (id)initWithXmlRpcType:(NSString *)_type
   characters:(unichar *)_chars
-  length:(int)_len;
+  length:(NSUInteger)_len;
 @end
 
 @interface NSData(XmlRpcParsing)
 - (id)initWithXmlRpcType:(NSString *)_type
   characters:(unichar *)_chars
-  length:(int)_len;
+  length:(NSUInteger)_len;
 @end
 
 @interface NSData(UsedNGExtensions)
@@ -132,7 +132,7 @@
 }
 
 + (id)objectWithXmlRpcType:(NSString *)_type
-  characters:(unichar *)_chars length:(int)_len
+  characters:(unichar *)_chars length:(NSUInteger)_len
 {
   static NSDictionary *typeToClass = nil;
   Class ObjClass = Nil;
@@ -171,7 +171,7 @@
 }
 
 - (id)initWithXmlRpcType:(NSString *)_type
-  characters:(unichar *)_chars length:(int)_len
+  characters:(unichar *)_chars length:(NSUInteger)_len
 {
   if ([self respondsToSelector:@selector(initWithString:)]) {
     NSString *s;
@@ -194,7 +194,7 @@
 /* NSData represents the xml-rpc base type 'base64' */
 
 - (id)initWithXmlRpcType:(NSString *)_type
-  characters:(unichar *)_chars length:(int)_len
+  characters:(unichar *)_chars length:(NSUInteger)_len
 {
   NSString *v;
 
@@ -215,7 +215,7 @@
 
 /* NSDate represents the xml-rpc type dateTime.iso8601: */
 - (id)initWithXmlRpcType:(NSString *)_type
-  characters:(unichar *)_chars length:(int)_len
+  characters:(unichar *)_chars length:(NSUInteger)_len
 {
   /* eg 19980717T14:08:55 */
   if (_len < 17) {
@@ -283,7 +283,7 @@
 /* NSNumber represents the xml-rpc base types: 'int', 'double', 'boolean': */
 
 - (id)initWithXmlRpcType:(NSString *)_type
-  characters:(unichar *)_chars length:(int)_len
+  characters:(unichar *)_chars length:(NSUInteger)_len
 {
   if ([_type isEqualToString:@"boolean"]) {
     BOOL v;
@@ -318,7 +318,7 @@
 @implementation NSString(XmlRpcParsing)
 
 - (id)initWithXmlRpcType:(NSString *)_type
-  characters:(unichar *)_chars length:(int)_len
+  characters:(unichar *)_chars length:(NSUInteger)_len
 {
   /* this is *never* called, since NSString+alloc returns a NSTemporaryString*/
   return [self initWithCharacters:_chars length:_len];
diff -Nru sope-1.3.15/sope-xml/XmlRpc/XmlRpcDecoder.m sope-1.3.16/sope-xml/XmlRpc/XmlRpcDecoder.m
--- sope-1.3.15/sope-xml/XmlRpc/XmlRpcDecoder.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-xml/XmlRpc/XmlRpcDecoder.m	2012-06-01 07:12:51.000000000 +0200
@@ -589,8 +589,8 @@
   int result;
   
   if ((newValue = [self beginDecodingKey:_key]) == nil)
-    /* any useful alternatives ? */
-    return NSNotFound;
+    /* NSKeyedArchiver returns 0, we too */
+    return 0;
   
   result = [self decodeInt];
   [self finishedDecodingKey];
diff -Nru sope-1.3.15/sope-xml/XmlRpc/XmlRpcSaxHandler.m sope-1.3.16/sope-xml/XmlRpc/XmlRpcSaxHandler.m
--- sope-1.3.15/sope-xml/XmlRpc/XmlRpcSaxHandler.m	2012-05-11 22:23:09.000000000 +0200
+++ sope-1.3.16/sope-xml/XmlRpc/XmlRpcSaxHandler.m	2012-06-01 07:12:51.000000000 +0200
@@ -158,7 +158,7 @@
 - (void)end_name {
   self->nextCharactersProcessor = NULL;
 }
-- (void)_name:(unichar *)_chars length:(int)_len {
+- (void)_name:(unichar *)_chars length:(NSUInteger)_len {
   NSString *name;
   name = [NSString stringWithCharacters:_chars length:_len];
   [self->memberNameStack addObject:name];
@@ -184,7 +184,7 @@
   self->valueNestingLevel--;
 }
 
-- (void)_dateValue:(unichar *)_chars length:(int)_len {
+- (void)_dateValue:(unichar *)_chars length:(NSUInteger)_len {
   if (self->dateTime)
     return;
   
@@ -193,7 +193,7 @@
                               retain];
 }
 
-- (void)_baseValue:(unichar *)_chars length:(int)_len {
+- (void)_baseValue:(unichar *)_chars length:(NSUInteger)_len {
   id value;
 
   if (self->valueNestingLevel == 0) {
@@ -239,8 +239,8 @@
   self->nextCharactersProcessor = @selector(_baseValue:length:);
 }
 - (void)start_dateTime:(id<SaxAttributes>)_attrs {
-  NSString *tz;
-  int      idx;
+  NSString   *tz;
+  NSUInteger idx;
   
   [self->timeZone release]; self->timeZone = nil;
   [self->dateTime release]; self->dateTime = nil;
@@ -467,7 +467,7 @@
 - (void)end_methodName {
   self->nextCharactersProcessor = NULL;
 }
-- (void)_methodName:(unichar *)_chars length:(int)_len {
+- (void)_methodName:(unichar *)_chars length:(NSUInteger)_len {
   [self->methodName release];
   self->methodName = [[NSString alloc] initWithCharacters:_chars length:_len];
 }
@@ -529,8 +529,8 @@
   attributes:(id<SaxAttributes>)_attrs
 {
   NSString *tmp = nil;
-  SEL      sel;
-  int      idx;
+  SEL        sel;
+  NSUInteger idx;
   
   [self->tagStack addObject:_rawName];
 
@@ -559,14 +559,14 @@
   namespace:(NSString *)_ns
   rawName:(NSString *)_rawName
 {
-  unsigned stackDepth, lastIdx;
+  NSUInteger stackDepth, lastIdx;
   NSString *tmp;
   SEL sel;
 
   if (self->nextCharactersProcessor != NULL) {
-    void (*m)(id, SEL, unichar *, int);
+    void (*m)(id, SEL, unichar *, NSUInteger);
     unichar *chars;
-    unsigned len;
+    NSUInteger len;
 
     len   = [self->characters length];
     chars = malloc(sizeof(unichar)*len);
@@ -606,7 +606,7 @@
   }
 }
 
-- (void)characters:(unichar *)_chars length:(int)_len {
+- (void)characters:(unichar *)_chars length:(NSUInteger)_len {
   if (_len > 0) {
     [self->characters appendString:
          [NSString stringWithCharacters:_chars length:_len]];

Reply to: