[ice/f15/master] upstream 3.4.1 fix gcc46 build issue some spec cleaning and patches revamping (dropped: java, openss

Haïkel Guémar hguemar at fedoraproject.org
Tue Feb 15 11:51:52 UTC 2011


commit f5527512920dd62d3e63412bad0e4948274078c8
Author: Haikel Guemar <hguemar at fedoraproject.org>
Date:   Tue Feb 15 12:18:45 2011 +0100

    upstream 3.4.1
    fix gcc46 build issue
    some spec cleaning and patches revamping (dropped: java, openssl)
    updated man pages from Francisco Moya Debian's package

 .gitignore                     |    2 +
 Ice-3.3.1-jgoodies.patch       |   12 -
 Ice-3.3.1-openssl.patch        |   18 -
 Ice-3.4.0-java-build.patch     |   52 -
 Ice-rpmbuild-change-user.patch |   36 -
 glacier2router.conf            |  104 ++
 glacier2router.init            |  110 ++
 ice-3.4.1-gcc46.patch          | 2371 ++++++++++++++++++++++++++++++++++++++++
 ice-3.4.1-jgoodies.patch       |   12 +
 ice.ini                        |    1 +
 ice.pth                        |    4 +
 ice.spec                       |  104 +-
 icegridnode.conf               |   48 +
 icegridnode.init               |  111 ++
 icegridregistry.conf           |   70 ++
 icegridregistry.init           |  111 ++
 sources                        |    5 +-
 17 files changed, 2998 insertions(+), 173 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 3094692..f4ea40a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
 Ice-3.4.0.tar.gz
 Ice-rpmbuild-3.4.0.tar.gz
 Ice-3.3.0-man-pages.tbz
+/Ice-3.4.1.tar.gz
+/ice-3.4.1-man-pages.tar.gz
diff --git a/glacier2router.conf b/glacier2router.conf
new file mode 100644
index 0000000..90a3cfb
--- /dev/null
+++ b/glacier2router.conf
@@ -0,0 +1,104 @@
+#
+# Sample configuration file for the Glacier2 router daemon
+#
+
+#
+# Set the instance name
+#
+Glacier2.InstanceName=DemoGlacier2Router
+
+#
+# The client-visible endpoint of Glacier2. This should be an endpoint
+# visible from the public Internet, and it should be secure.
+# IANA-registered TCP ports for the Glacier2 router:
+# - 4063 (insecure)
+# - 4064 (secure, using SSL)
+#
+# Using tcp is not recommended for production!
+#
+Glacier2.Client.Endpoints=tcp -p 4063 -h localhost
+#Glacier2.Client.Endpoints=ssl -p 4064 -h localhost
+
+#
+# The server-visible endpoint of Glacier2. This endpoint is only
+# required if callbacks are needed (leave empty otherwise). This
+# should be an endpoint on an internal network (like 192.168.x.x), or
+# on the loopback, so that the server is not directly accessible from
+# the Internet.
+#
+Glacier2.Server.Endpoints=tcp -h localhost
+
+#  
+# This permissions verifier allows any user-id / password combination;
+# this is not recommended for production!
+# 
+Glacier2.PermissionsVerifier=DemoGlacier2Router/NullPermissionsVerifier
+
+#
+# The timeout for inactive sessions. If any client session is inactive
+# for longer than this value, the session expires and is removed. The
+# unit is seconds.
+#
+Glacier2.SessionTimeout=30
+
+#
+# Glacier2 always disables active connection management so there is no
+# need to configure this manually. Connection retry does not need to
+# be disabled, as it's safe for Glacier2 to retry outgoing connections
+# to servers. Retry for incoming connections from clients must be
+# disabled in the clients.
+#
+
+#
+# Various settings to trace requests, overrides, etc.
+#
+Ice.UseSyslog=1
+Glacier2.Client.Trace.Request=1
+Glacier2.Server.Trace.Request=1
+Glacier2.Client.Trace.Override=1
+Glacier2.Server.Trace.Override=1
+Glacier2.Client.Trace.Reject=1
+Glacier2.Trace.Session=1
+Glacier2.Trace.RoutingTable=1
+
+#
+# Warn about connection exceptions
+#
+Ice.Warn.Connections=1
+
+#
+# Network Tracing
+#
+# 0 = no network tracing
+# 1 = trace connection establishment and closure
+# 2 = like 1, but more detailed
+# 3 = like 2, but also trace data transfer
+#
+#Ice.Trace.Network=1
+
+#
+# Protocol Tracing
+#
+# 0 = no protocol tracing
+# 1 = trace protocol messages
+#
+#Ice.Trace.Protocol=1
+
+#
+# Security Tracing
+#
+# 0 = no security tracing
+# 1 = trace messages
+#
+#IceSSL.Trace.Security=1
+
+#
+# SSL Configuration
+#
+#Ice.Plugin.IceSSL=IceSSL:createIceSSL
+
+#IceSSL.DefaultDir=<path to certs dir>
+
+#IceSSL.CertAuthFile=cacert.pem
+#IceSSL.CertFile=s_rsa1024_pub.pem
+#IceSSL.KeyFile=s_rsa1024_priv.pem
diff --git a/glacier2router.init b/glacier2router.init
new file mode 100755
index 0000000..5466419
--- /dev/null
+++ b/glacier2router.init
@@ -0,0 +1,110 @@
+#!/bin/bash
+#
+# Copyright (c) 2007-2010 ZeroC, Inc. All rights reserved.
+#
+# glacier2router    This shell script takes care of starting and 
+#                   stopping the glacier2router daemon.
+#
+# chkconfig: - 62 74
+# description: The Glacier2 router daemon. \
+# Glacier2 is the firewall traversal service for the Internet \ 
+# Communications Engine (Ice).
+
+#
+# Source function library.
+#
+. /etc/init.d/functions
+
+#
+# The Glacier2 router user; root is allowed, but not necessary, therefore
+# it is recommended to use a non-root account.
+#
+user=iceuser
+
+#
+# Ask for a password at startup?
+#
+prompt=no
+
+#
+# The Glacier2 router configuration file
+#
+routerconf="/etc/glacier2router.conf"
+
+prog="/usr/bin/glacier2router"
+
+progbase=${prog##*/}
+pidfile=/var/run/$progbase.pid
+
+options="--daemon --pidfile $pidfile --Ice.Config=$routerconf"
+
+RETVAL=0
+
+start() {
+        if [ "${prompt:-}" = "yes" ]
+        then
+           echo $"Starting $progbase: "
+           INITLOG_ARGS=              # clears -q
+        else
+           echo -n $"Starting $progbase: "
+        fi
+
+        daemonoptions="--pidfile $pidfile"
+        if [ "$user" != "root" ]
+        then
+            daemonoptions="$daemonoptions --user $user"
+    
+            if [ ! -e $pidfile ]
+            then
+                touch $pidfile
+            fi
+            chown $user $pidfile
+        fi           
+
+        daemon $daemonoptions $prog $options
+        RETVAL=$?
+        echo
+        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$progbase
+        return $RETVAL
+}
+
+stop() {
+        echo -n $"Shutting down $progbase: "
+        killproc -p $pidfile $prog
+        RETVAL=$?
+        echo
+        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$progbase
+        return $RETVAL
+}
+
+
+# See how we were called.
+case "$1" in
+  start)
+        start
+        ;;
+  stop)
+        stop
+        ;;
+  status)
+        status $progbase
+        RETVAL=$?
+        ;;
+  restart|reload)
+        stop
+        start
+        RETVAL=$?
+        ;;
+  condrestart)
+        if [ -f /var/lock/subsys/$progbase ]; then
+            stop
+            start
+            RETVAL=$?
+        fi
+        ;;
+  *)
+        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
+        exit 1
+esac
+
+exit $RETVAL
diff --git a/ice-3.4.1-gcc46.patch b/ice-3.4.1-gcc46.patch
new file mode 100644
index 0000000..4e9659a
--- /dev/null
+++ b/ice-3.4.1-gcc46.patch
@@ -0,0 +1,2371 @@
+diff --git a/cpp/include/Freeze/Map.h b/cpp/include/Freeze/Map.h
+index 652a262..f6cbaa9 100644
+--- a/cpp/include/Freeze/Map.h
++++ b/cpp/include/Freeze/Map.h
+@@ -11,6 +11,7 @@
+ #define FREEZE_MAP_H
+ 
+ #include <Ice/Ice.h>
++#include <cstddef>
+ #include <iterator>
+ #include <Freeze/DB.h>
+ #include <Freeze/Exception.h>
+@@ -49,7 +50,7 @@ typedef IceUtil::Handle<KeyCompareBase> KeyCompareBasePtr;
+ class FREEZE_API MapIndexBase : public KeyCompareBase
+ {
+ public:
+-    
++
+     virtual ~MapIndexBase();
+ 
+     const std::string& name() const;
+@@ -88,9 +89,9 @@ typedef IceUtil::Handle<MapIndexBase> MapIndexBasePtr;
+ class FREEZE_API MapHelper
+ {
+ public:
+-    
++
+     static MapHelper*
+-    create(const ConnectionPtr& connection, 
++    create(const ConnectionPtr& connection,
+            const std::string& dbName,
+            const std::string& key,
+            const std::string& value,
+@@ -98,14 +99,14 @@ public:
+            const std::vector<MapIndexBasePtr>&,
+            bool createDb);
+ 
+-    static void 
+-    recreate(const ConnectionPtr& connection, 
++    static void
++    recreate(const ConnectionPtr& connection,
+              const std::string& dbName,
+              const std::string& key,
+              const std::string& value,
+              const KeyCompareBasePtr&,
+              const std::vector<MapIndexBasePtr>&);
+-    
++
+     virtual ~MapHelper() = 0;
+ 
+     virtual IteratorHelper*
+@@ -125,7 +126,7 @@ public:
+ 
+     virtual size_t
+     count(const Key&) const = 0;
+-    
++
+     virtual void
+     clear() = 0;
+ 
+@@ -150,25 +151,25 @@ public:
+ 
+ 
+ class FREEZE_API IteratorHelper
+-{  
++{
+ public:
+ 
+-    static IteratorHelper* 
++    static IteratorHelper*
+     create(const MapHelper& m, bool readOnly);
+ 
+-    virtual 
++    virtual
+     ~IteratorHelper() = 0;
+ 
+     virtual IteratorHelper*
+     clone() const = 0;
+-    
+-    virtual const Key* 
++
++    virtual const Key*
+     get() const = 0;
+ 
+     virtual void
+     get(const Key*&, const Value*&) const = 0;
+-    
+-    virtual  void 
++
++    virtual  void
+     set(const Value&) = 0;
+ 
+     virtual void
+@@ -176,16 +177,16 @@ public:
+ 
+     virtual bool
+     next() const = 0;
+-}; 
++};
+ 
+ 
+ //
+ // Forward declaration
+ //
+-template <typename key_type, typename mapped_type, 
++template <typename key_type, typename mapped_type,
+           typename KeyCodec, typename ValueCodec, typename Compare>
+ class Map;
+-template <typename key_type, typename mapped_type, 
++template <typename key_type, typename mapped_type,
+           typename KeyCodec, typename ValueCodec, typename Compare>
+ class ConstIterator;
+ 
+@@ -208,7 +209,7 @@ struct IteratorBase
+ // TODO: It's possible to implement bidirectional iterators, if
+ // necessary.
+ //
+-template<typename key_type, typename mapped_type, 
++template<typename key_type, typename mapped_type,
+          typename KeyCodec, typename ValueCodec, typename Compare>
+ class Iterator : public IteratorBase
+ {
+@@ -280,12 +281,12 @@ public:
+         {
+             return true;
+         }
+-        
++
+         if(_helper.get() != 0 && rhs._helper.get() != 0)
+         {
+             const Key* lhsKey = _helper->get();
+             const Key* rhsKey = rhs._helper->get();
+-            
++
+             if(lhsKey != 0 && rhsKey != 0)
+             {
+                 return *lhsKey == *rhsKey;
+@@ -385,9 +386,9 @@ private:
+         ValueCodec::read(value, *v, _communicator);
+     }
+ 
+-    friend class ConstIterator<key_type, mapped_type, 
++    friend class ConstIterator<key_type, mapped_type,
+                                KeyCodec, ValueCodec, Compare>;
+-    friend class Map<key_type, mapped_type, 
++    friend class Map<key_type, mapped_type,
+                      KeyCodec, ValueCodec, Compare>;
+ 
+     std::auto_ptr<IteratorHelper> _helper;
+@@ -410,7 +411,7 @@ private:
+ //
+ // See Iterator comments for design notes
+ //
+-template <typename key_type, typename mapped_type, 
++template <typename key_type, typename mapped_type,
+           typename KeyCodec, typename ValueCodec, typename Compare>
+ class ConstIterator : public IteratorBase
+ {
+@@ -425,7 +426,7 @@ public:
+     typedef value_type& reference;
+ 
+     ConstIterator(MapHelper& mapHelper, const Ice::CommunicatorPtr& communicator) :
+-        _helper(IteratorHelper::create(mapHelper, true)), 
++        _helper(IteratorHelper::create(mapHelper, true)),
+         _communicator(_communicator),
+         _refValid(false)
+     {
+@@ -457,7 +458,7 @@ public:
+     // A Iterator can be converted to a ConstIterator (but not
+     // vice versa) - same for operator=.
+     //
+-    ConstIterator(const Iterator<key_type, mapped_type, 
++    ConstIterator(const Iterator<key_type, mapped_type,
+                   KeyCodec, ValueCodec, Compare>& rhs) :
+         _refValid(false)
+     {
+@@ -490,7 +491,7 @@ public:
+     //
+     // Create const_iterator from iterator.
+     //
+-    ConstIterator& operator=(const Iterator<key_type, mapped_type, 
++    ConstIterator& operator=(const Iterator<key_type, mapped_type,
+                              KeyCodec, ValueCodec, Compare>& rhs)
+     {
+         if(rhs._helper.get() != 0)
+@@ -517,12 +518,12 @@ public:
+         {
+             return true;
+         }
+-        
++
+         if(_helper.get() != 0 && rhs._helper.get() != 0)
+         {
+             const Key* lhsKey = _helper->get();
+             const Key* rhsKey = rhs._helper->get();
+-            
++
+             if(lhsKey != 0 && rhsKey != 0)
+             {
+                 return *lhsKey == *rhsKey;
+@@ -560,7 +561,7 @@ public:
+         {
+             key_type key;
+             mapped_type value;
+-            
++
+             getCurrentValue(key, value);
+ 
+             //
+@@ -609,7 +610,7 @@ private:
+         ValueCodec::read(value, *v, _communicator);
+     }
+ 
+-    friend class Map<key_type, mapped_type, 
++    friend class Map<key_type, mapped_type,
+                      KeyCodec, ValueCodec, Compare>;
+ 
+     std::auto_ptr<IteratorHelper> _helper;
+@@ -643,14 +644,14 @@ struct IceEncodingCompare
+ };
+ 
+ template<typename Compare>
+-inline bool 
++inline bool
+ enableKeyCompare(const Compare&)
+ {
+     return true;
+ }
+ 
+-template<> 
+-inline bool 
++template<>
++inline bool
+ enableKeyCompare<IceEncodingCompare>(const IceEncodingCompare&)
+ {
+     return false;
+@@ -663,7 +664,7 @@ template<typename key_type, typename KeyCodec, typename Compare>
+ class KeyCompare : public KeyCompareBase
+ {
+ public:
+-    KeyCompare(const Compare& compare, 
++    KeyCompare(const Compare& compare,
+                const Ice::CommunicatorPtr& communicator) :
+ #if defined(_MSC_VER) && (_MSC_VER < 1300)
+         KeyCompareBase(enableKeyCompare(compare)),
+@@ -701,7 +702,7 @@ private:
+ 
+ #if !defined(_MSC_VER) || (_MSC_VER >= 1300)
+ //
+-// Partial template specialization: 
++// Partial template specialization:
+ // do nothing for the IceEncodingCompare comparator
+ //
+ template<typename key_type, typename KeyCodec>
+@@ -765,7 +766,7 @@ private:
+ 
+ #if !defined(_MSC_VER) || (_MSC_VER >= 1300)
+ //
+-// Partial template specialization: 
++// Partial template specialization:
+ // do nothing for the IceEncodingCompare comparator
+ //
+ template<typename key_type, typename KeyCodec>
+@@ -792,7 +793,7 @@ protected:
+ //
+ // TODO: implement bidirectional iterators.
+ //
+-template<typename key_type, typename mapped_type, 
++template<typename key_type, typename mapped_type,
+          typename KeyCodec, typename ValueCodec,
+          typename Compare = IceEncodingCompare>
+ class Map
+@@ -801,9 +802,9 @@ public:
+ 
+     typedef std::pair<const key_type, const mapped_type> value_type;
+ 
+-    typedef Iterator<key_type, mapped_type, 
++    typedef Iterator<key_type, mapped_type,
+                      KeyCodec, ValueCodec, Compare> iterator;
+-    typedef ConstIterator<key_type, mapped_type, 
++    typedef ConstIterator<key_type, mapped_type,
+                           KeyCodec, ValueCodec, Compare> const_iterator;
+ 
+     //
+@@ -822,35 +823,35 @@ public:
+     //
+     // Constructors
+     //
+-    Map(const Freeze::ConnectionPtr& connection, 
++    Map(const Freeze::ConnectionPtr& connection,
+         const std::string& dbName,
+         bool createDb = true,
+         const Compare& compare = Compare()) :
+         _communicator(connection->getCommunicator())
+-    {   
+-        KeyCompareBasePtr keyCompare = 
++    {
++        KeyCompareBasePtr keyCompare =
+             new KeyCompare<key_type, KeyCodec, Compare>(compare, _communicator);
+         std::vector<MapIndexBasePtr> indices;
+ 
+-        _helper.reset(MapHelper::create(connection, dbName, 
++        _helper.reset(MapHelper::create(connection, dbName,
+                                         KeyCodec::typeId(), ValueCodec::typeId(),
+                                         keyCompare, indices, createDb));
+     }
+ 
+     template<class _InputIterator>
+-    Map(const Freeze::ConnectionPtr& connection, 
+-        const std::string& dbName, 
++    Map(const Freeze::ConnectionPtr& connection,
++        const std::string& dbName,
+         bool createDb,
+         _InputIterator first, _InputIterator last,
+         const Compare& compare = Compare()) :
+         _communicator(connection->getCommunicator())
+     {
+-        KeyCompareBasePtr keyCompare = 
++        KeyCompareBasePtr keyCompare =
+             new KeyCompare<key_type, KeyCodec, Compare>(compare, _communicator);
+ 
+         std::vector<MapIndexBasePtr> indices;
+ 
+-        _helper.reset(MapHelper::create(connection, dbName, 
++        _helper.reset(MapHelper::create(connection, dbName,
+                                         KeyCodec::typeId(), ValueCodec::typeId(),
+                                         keyCompare, indices, createDb));
+         while(first != last)
+@@ -864,15 +865,15 @@ public:
+     {
+     }
+ 
+-    static void recreate(const Freeze::ConnectionPtr& connection, 
++    static void recreate(const Freeze::ConnectionPtr& connection,
+                          const std::string& dbName,
+                          const Compare& compare = Compare())
+     {
+-        KeyCompareBasePtr keyCompare = 
++        KeyCompareBasePtr keyCompare =
+             new KeyCompare<key_type, KeyCodec, Compare>(compare, connection->getCommunicator());
+ 
+         std::vector<MapIndexBasePtr> indices;
+-        MapHelper::recreate(connection, dbName, KeyCodec::typeId(), ValueCodec::typeId(), keyCompare, 
++        MapHelper::recreate(connection, dbName, KeyCodec::typeId(), ValueCodec::typeId(), keyCompare,
+                             indices);
+     }
+ 
+@@ -909,13 +910,13 @@ public:
+     {
+         return !(*this == rhs);
+     }
+-    
++
+     void swap(Map& rhs)
+     {
+         MapHelper* tmp = _helper.release();
+         _helper.reset(rhs._helper.release());
+         rhs._helper.reset(tmp);
+-        
++
+         Ice::CommunicatorPtr tmpCom = _communicator;
+         _communicator = rhs._communicator;
+         rhs._communicator = tmpCom;
+@@ -988,7 +989,7 @@ public:
+     //
+     //allocator_type get_allocator() const;
+     //
+- 
++
+     iterator insert(iterator /*position*/, const value_type& key)
+     {
+         //
+@@ -996,14 +997,14 @@ public:
+         //
+         Key k;
+         KeyCodec::write(key.first, k, _communicator);
+-        
++
+         iterator r = iterator(_helper->find(k, false), _communicator);
+ 
+         if(r == end())
+         {
+             Value v;
+             ValueCodec::write(key.second, v, _communicator);
+-            
++
+             _helper->put(k, v);
+             r = iterator(_helper->find(k, false), _communicator);
+         }
+@@ -1023,7 +1024,7 @@ public:
+         {
+             Value v;
+             ValueCodec::write(key.second, v, _communicator);
+-            
++
+             _helper->put(k, v);
+             inserted = true;
+             r = iterator(_helper->find(k, false), _communicator);
+@@ -1093,7 +1094,7 @@ public:
+         _helper->clear();
+     }
+ 
+-    
++
+     //
+     // destroy is not a standard function
+     //
+@@ -1130,7 +1131,7 @@ public:
+     {
+         Key k;
+         KeyCodec::write(key, k, _communicator);
+-        
++
+         return _helper->count(k);
+     }
+ 
+@@ -1141,7 +1142,7 @@ public:
+ 
+         return iterator(_helper->lowerBound(k, false), _communicator);
+     }
+-    
++
+     const_iterator lower_bound(const key_type& key) const
+     {
+         Key k;
+@@ -1157,7 +1158,7 @@ public:
+ 
+         return iterator(_helper->upperBound(k, false), _communicator);
+     }
+-    
++
+     const_iterator upper_bound(const key_type& key) const
+     {
+         Key k;
+@@ -1165,13 +1166,13 @@ public:
+ 
+         return iterator(_helper->upperBound(k, true), _communicator);
+     }
+-    
++
+     std::pair<iterator, iterator> equal_range(const key_type& key)
+     {
+         return std::make_pair(lower_bound(key), upper_bound(key));
+     }
+ 
+-    std::pair<const_iterator, const_iterator> 
++    std::pair<const_iterator, const_iterator>
+     equal_range(const key_type& key) const
+     {
+         return std::make_pair(lower_bound(key), upper_bound(key));
+@@ -1213,19 +1214,19 @@ namespace std
+ {
+ 
+ // TODO: update.
+-template <class key_type, class mapped_type, 
++template <class key_type, class mapped_type,
+           class KeyCodec, class ValueCodec, class Compare>
+ inline pair<const key_type, const mapped_type>*
+-value_type(const Freeze::Iterator<key_type, mapped_type, 
++value_type(const Freeze::Iterator<key_type, mapped_type,
+            KeyCodec, ValueCodec, Compare>&)
+ {
+     return (pair<const key_type, const mapped_type>*)0;
+ }
+ 
+-template <class key_type, class mapped_type, 
++template <class key_type, class mapped_type,
+           class KeyCodec, class ValueCodec, class Compare>
+ inline pair<const key_type, const mapped_type>*
+-value_type(const Freeze::ConstIterator<key_type, mapped_type, 
++value_type(const Freeze::ConstIterator<key_type, mapped_type,
+            KeyCodec, ValueCodec, Compare>&)
+ {
+     return (pair<const key_type, const mapped_type>*)0;
+diff --git a/cpp/include/Ice/Buffer.h b/cpp/include/Ice/Buffer.h
+index 3ba6a1f..ed8b67b 100644
+--- a/cpp/include/Ice/Buffer.h
++++ b/cpp/include/Ice/Buffer.h
+@@ -10,6 +10,7 @@
+ #ifndef ICEE_BUFFER_H
+ #define ICEE_BUFFER_H
+ 
++#include <cstddef>
+ #include <Ice/Config.h>
+ 
+ namespace IceInternal
+@@ -76,7 +77,7 @@ public:
+         }
+ 
+         void swap(Container&);
+-        
++
+         void clear();
+ 
+         void resize(size_type n) // Inlined for performance reasons.
+@@ -87,7 +88,7 @@ public:
+             }
+             else if(n > _capacity)
+             {
+-                reserve(n); 
++                reserve(n);
+             }
+             _size = n;
+         }
+@@ -132,7 +133,7 @@ public:
+             assert(n < _size);
+             return _buf[n];
+         }
+-        
++
+     private:
+ 
+         Container(const Container&);
+diff --git a/cpp/src/Ice/ConnectionFactory.cpp b/cpp/src/Ice/ConnectionFactory.cpp
+index 015818d..3526986 100644
+--- a/cpp/src/Ice/ConnectionFactory.cpp
++++ b/cpp/src/Ice/ConnectionFactory.cpp
+@@ -25,6 +25,7 @@
+ #include <Ice/LocalException.h>
+ #include <Ice/Functional.h>
+ #include <IceUtil/Random.h>
++#include <cstddef>
+ #include <iterator>
+ 
+ using namespace std;
+@@ -68,16 +69,16 @@ remove(multimap<K, V>& m, K k, V v)
+ }
+ 
+ template <typename K, typename V> ::IceInternal::Handle<V>
+-find(const multimap<K,::IceInternal::Handle<V> >& m, 
+-     K k, 
++find(const multimap<K,::IceInternal::Handle<V> >& m,
++     K k,
+      const ::IceUtilInternal::ConstMemFun<bool, V, ::IceInternal::Handle<V> >& predicate)
+ {
+ #if defined(_MSC_VER) && (_MSC_VER < 1300)
+-    pair<multimap<K, ::IceInternal::Handle<V> >::const_iterator, 
++    pair<multimap<K, ::IceInternal::Handle<V> >::const_iterator,
+          multimap<K, ::IceInternal::Handle<V> >::const_iterator> pr = m.equal_range(k);
+     for(multimap<K, ::IceInternal::Handle<V> >::const_iterator q = pr.first; q != pr.second; ++q)
+ #else
+-    pair<typename multimap<K, ::IceInternal::Handle<V> >::const_iterator, 
++    pair<typename multimap<K, ::IceInternal::Handle<V> >::const_iterator,
+          typename multimap<K, ::IceInternal::Handle<V> >::const_iterator> pr = m.equal_range(k);
+     for(typename multimap<K, ::IceInternal::Handle<V> >::const_iterator q = pr.first; q != pr.second; ++q)
+ #endif
+@@ -130,7 +131,7 @@ IceInternal::OutgoingConnectionFactory::waitUntilFinished()
+ 
+     {
+         IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
+-        
++
+         //
+         // First we wait until the factory is destroyed. We also wait
+         // until there are no pending connections anymore. Only then
+@@ -168,7 +169,7 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
+                                                Ice::EndpointSelectionType selType, bool& compress)
+ {
+     assert(!endpts.empty());
+-    
++
+     //
+     // Apply the overrides.
+     //
+@@ -176,7 +177,7 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
+ 
+     //
+     // Try to find a connection to one of the given endpoints.
+-    // 
++    //
+     Ice::ConnectionIPtr connection = findConnection(endpoints, compress);
+     if(connection)
+     {
+@@ -199,13 +200,13 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
+         {
+             vector<ConnectorPtr> cons = (*p)->connectors();
+             assert(!cons.empty());
+-            
++
+             if(selType == Random)
+             {
+                 RandomNumberGenerator rng;
+                 random_shuffle(cons.begin(), cons.end(), rng);
+             }
+-            
++
+             for(vector<ConnectorPtr>::const_iterator r = cons.begin(); r != cons.end(); ++r)
+             {
+                 assert(*r);
+@@ -224,7 +225,7 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
+         assert(exception.get());
+         exception->ice_throw();
+     }
+-    
++
+     //
+     // Try to get a connection to one of the connectors. A null result indicates that no
+     // connection was found and that we should try to establish the connection (and that
+@@ -300,7 +301,7 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
+ 
+ void
+ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpts, bool hasMore,
+-                                               Ice::EndpointSelectionType selType, 
++                                               Ice::EndpointSelectionType selType,
+                                                const CreateConnectionCallbackPtr& callback)
+ {
+     assert(!endpts.empty());
+@@ -312,7 +313,7 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
+ 
+     //
+     // Try to find a connection to one of the given endpoints.
+-    // 
++    //
+     try
+     {
+         bool compress;
+@@ -328,7 +329,7 @@ IceInternal::OutgoingConnectionFactory::create(const vector<EndpointIPtr>& endpt
+         callback->setException(ex);
+         return;
+     }
+-    
++
+     ConnectCallbackPtr cb = new ConnectCallback(this, endpoints, hasMore, callback, selType);
+     cb->getConnectors();
+ }
+@@ -392,12 +393,12 @@ void
+ IceInternal::OutgoingConnectionFactory::removeAdapter(const ObjectAdapterPtr& adapter)
+ {
+     IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
+-    
++
+     if(_destroyed)
+     {
+         return;
+     }
+-    
++
+     for(multimap<ConnectorPtr, ConnectionIPtr>::const_iterator p = _connections.begin(); p != _connections.end(); ++p)
+     {
+         if(p->second->getAdapter() == adapter)
+@@ -502,7 +503,7 @@ IceInternal::OutgoingConnectionFactory::findConnection(const vector<EndpointIPtr
+     return 0;
+ }
+ 
+-ConnectionIPtr 
++ConnectionIPtr
+ IceInternal::OutgoingConnectionFactory::findConnection(const vector<ConnectorInfo>& connectors, bool& compress)
+ {
+     // This must be called with the mutex locked.
+@@ -529,7 +530,7 @@ IceInternal::OutgoingConnectionFactory::findConnection(const vector<ConnectorInf
+             return connection;
+         }
+     }
+-    
++
+     return 0;
+ }
+ 
+@@ -537,7 +538,7 @@ void
+ IceInternal::OutgoingConnectionFactory::incPendingConnectCount()
+ {
+     //
+-    // Keep track of the number of pending connects. The outgoing connection factory 
++    // Keep track of the number of pending connects. The outgoing connection factory
+     // waitUntilFinished() method waits for all the pending connects to terminate before
+     // to return. This ensures that the communicator client thread pool isn't destroyed
+     // too soon and will still be available to execute the ice_exception() callbacks for
+@@ -564,9 +565,9 @@ IceInternal::OutgoingConnectionFactory::decPendingConnectCount()
+     }
+ }
+ 
+-ConnectionIPtr 
+-IceInternal::OutgoingConnectionFactory::getConnection(const vector<ConnectorInfo>& connectors, 
+-                                                      const ConnectCallbackPtr& cb, 
++ConnectionIPtr
++IceInternal::OutgoingConnectionFactory::getConnection(const vector<ConnectorInfo>& connectors,
++                                                      const ConnectCallbackPtr& cb,
+                                                       bool& compress)
+ {
+     {
+@@ -575,7 +576,7 @@ IceInternal::OutgoingConnectionFactory::getConnection(const vector<ConnectorInfo
+         {
+             throw Ice::CommunicatorDestroyedException(__FILE__, __LINE__);
+         }
+-        
++
+         //
+         // Reap closed connections
+         //
+@@ -610,15 +611,15 @@ IceInternal::OutgoingConnectionFactory::getConnection(const vector<ConnectorInfo
+             }
+ 
+             //
+-            // Determine whether another thread/request is currently attempting to connect to 
++            // Determine whether another thread/request is currently attempting to connect to
+             // one of our endpoints; if so we wait until it's done.
+             //
+             if(addToPending(cb, connectors))
+             {
+                 //
+-                // If a callback is not specified we wait until another thread notifies us about a 
+-                // change to the pending list. Otherwise, if a callback is provided we're done: 
+-                // when the pending list changes the callback will be notified and will try to 
++                // If a callback is not specified we wait until another thread notifies us about a
++                // change to the pending list. Otherwise, if a callback is provided we're done:
++                // when the pending list changes the callback will be notified and will try to
+                 // get the connection again.
+                 //
+                 if(!cb)
+@@ -643,7 +644,7 @@ IceInternal::OutgoingConnectionFactory::getConnection(const vector<ConnectorInfo
+     }
+ 
+     //
+-    // At this point, we're responsible for establishing the connection to one of 
++    // At this point, we're responsible for establishing the connection to one of
+     // the given connectors. If it's a non-blocking connect, calling nextConnector
+     // will start the connection establishment. Otherwise, we return null to get
+     // the caller to establish the connection.
+@@ -692,7 +693,7 @@ IceInternal::OutgoingConnectionFactory::createConnection(const TransceiverPtr& t
+ 
+     _connections.insert(pair<const ConnectorPtr, ConnectionIPtr>(ci.connector, connection));
+     _connectionsByEndpoint.insert(pair<const EndpointIPtr, ConnectionIPtr>(connection->endpoint(), connection));
+-    _connectionsByEndpoint.insert(pair<const EndpointIPtr, ConnectionIPtr>(connection->endpoint()->compress(true), 
++    _connectionsByEndpoint.insert(pair<const EndpointIPtr, ConnectionIPtr>(connection->endpoint()->compress(true),
+                                                                            connection));
+     return connection;
+ }
+@@ -766,7 +767,7 @@ IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<Connect
+         (*p)->setConnection(connection, compress);
+     }
+ }
+-    
++
+ void
+ IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<ConnectorInfo>& connectors,
+                                                             const Ice::LocalException& ex,
+@@ -800,7 +801,7 @@ IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<Connect
+                 _pending.erase(q);
+             }
+         }
+-        
++
+         for(set<ConnectCallbackPtr>::iterator r = callbacks.begin(); r != callbacks.end(); ++r)
+         {
+             assert(failedCallbacks.find(*r) == failedCallbacks.end());
+@@ -808,7 +809,7 @@ IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<Connect
+         }
+         notifyAll();
+     }
+-        
++
+     set<ConnectCallbackPtr>::const_iterator p;
+     for(p = callbacks.begin(); p != callbacks.end(); ++p)
+     {
+@@ -821,7 +822,7 @@ IceInternal::OutgoingConnectionFactory::finishGetConnection(const vector<Connect
+ }
+ 
+ bool
+-IceInternal::OutgoingConnectionFactory::addToPending(const ConnectCallbackPtr& cb, 
++IceInternal::OutgoingConnectionFactory::addToPending(const ConnectCallbackPtr& cb,
+                                                      const vector<ConnectorInfo>& connectors)
+ {
+     //
+@@ -836,7 +837,7 @@ IceInternal::OutgoingConnectionFactory::addToPending(const ConnectCallbackPtr& c
+             found = true;
+             if(cb)
+             {
+-                q->second.insert(cb); 
++                q->second.insert(cb);
+             }
+         }
+     }
+@@ -847,8 +848,8 @@ IceInternal::OutgoingConnectionFactory::addToPending(const ConnectCallbackPtr& c
+     }
+ 
+     //
+-    // If there's no pending connection for the given connectors, we're 
+-    // responsible for its establishment. We add empty pending lists, 
++    // If there's no pending connection for the given connectors, we're
++    // responsible for its establishment. We add empty pending lists,
+     // other callbacks to the same connectors will be queued.
+     //
+     for(vector<ConnectorInfo>::const_iterator r = connectors.begin(); r != connectors.end(); ++r)
+@@ -862,7 +863,7 @@ IceInternal::OutgoingConnectionFactory::addToPending(const ConnectCallbackPtr& c
+ }
+ 
+ void
+-IceInternal::OutgoingConnectionFactory::removeFromPending(const ConnectCallbackPtr& cb, 
++IceInternal::OutgoingConnectionFactory::removeFromPending(const ConnectCallbackPtr& cb,
+                                                           const vector<ConnectorInfo>& connectors)
+ {
+     for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
+@@ -956,11 +957,11 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartComplete
+ }
+ 
+ void
+-IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(const ConnectionIPtr& connection, 
++IceInternal::OutgoingConnectionFactory::ConnectCallback::connectionStartFailed(const ConnectionIPtr& connection,
+                                                                                const LocalException& ex)
+ {
+     assert(_iter != _connectors.end());
+-    
++
+     _factory->handleConnectionException(ex, _hasMore || _iter != _connectors.end() - 1);
+     if(dynamic_cast<const Ice::CommunicatorDestroyedException*>(&ex)) // No need to continue.
+     {
+@@ -1076,7 +1077,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
+     try
+     {
+         //
+-        // If all the connectors have been created, we ask the factory to get a 
++        // If all the connectors have been created, we ask the factory to get a
+         // connection.
+         //
+         bool compress;
+@@ -1086,12 +1087,12 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::getConnection()
+             //
+             // A null return value from getConnection indicates that the connection
+             // is being established and that everthing has been done to ensure that
+-            // the callback will be notified when the connection establishment is 
++            // the callback will be notified when the connection establishment is
+             // done or that the callback already obtain the connection.
+-            // 
++            //
+             return;
+         }
+-        
++
+         _callback->setConnection(connection, compress);
+         _factory->decPendingConnectCount(); // Must be called last.
+     }
+@@ -1119,7 +1120,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::nextConnector()
+ }
+ 
+ void
+-IceInternal::OutgoingConnectionFactory::ConnectCallback::setConnection(const Ice::ConnectionIPtr& connection, 
++IceInternal::OutgoingConnectionFactory::ConnectCallback::setConnection(const Ice::ConnectionIPtr& connection,
+                                                                        bool compress)
+ {
+     //
+@@ -1151,7 +1152,7 @@ IceInternal::OutgoingConnectionFactory::ConnectCallback::removeConnectors(const
+ {
+     //
+     // Callback from the factory: connecting to the given connectors
+-    // failed, we remove the connectors and return true if there's 
++    // failed, we remove the connectors and return true if there's
+     // no more connectors left to try.
+     //
+     for(vector<ConnectorInfo>::const_iterator p = connectors.begin(); p != connectors.end(); ++p)
+@@ -1201,7 +1202,7 @@ IceInternal::IncomingConnectionFactory::waitUntilHolding() const
+ 
+     {
+         IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
+-        
++
+         //
+         // First we wait until the connection factory itself is in holding
+         // state.
+@@ -1230,7 +1231,7 @@ IceInternal::IncomingConnectionFactory::waitUntilFinished()
+     set<ConnectionIPtr> connections;
+     {
+         IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
+-        
++
+         //
+         // First we wait until the factory is destroyed. If we are using
+         // an acceptor, we also wait for it to be closed.
+@@ -1342,7 +1343,7 @@ IceInternal::IncomingConnectionFactory::finishAsync(SocketOperation)
+         Error out(_instance->initializationData().logger);
+         out << "couldn't accept connection:\n" << ex << '\n' << _acceptor->toString();
+         return false;
+-    }    
++    }
+     return _state < StateClosed;
+ }
+ #endif
+@@ -1372,7 +1373,7 @@ IceInternal::IncomingConnectionFactory::message(ThreadPoolCurrent& current)
+             IceUtil::ThreadControl::yield();
+             return;
+         }
+-        
++
+         //
+         // Reap closed connections
+         //
+@@ -1465,7 +1466,7 @@ IceInternal::IncomingConnectionFactory::toString() const
+     {
+         return _transceiver->toString();
+     }
+-    
++
+     assert(_acceptor);
+     return _acceptor->toString();
+ }
+@@ -1506,7 +1507,7 @@ IceInternal::IncomingConnectionFactory::connectionStartFailed(const Ice::Connect
+     {
+         return;
+     }
+-    
++
+     if(_warn)
+     {
+         Warning out(_instance->initializationData().logger);
+@@ -1552,7 +1553,7 @@ IceInternal::IncomingConnectionFactory::initialize(const string& oaName)
+         if(_transceiver)
+         {
+             ConnectionIPtr connection = new ConnectionI(_instance, _reaper, _transceiver, 0, _endpoint, _adapter);
+-            connection->start(0);            
++            connection->start(0);
+             _connections.insert(connection);
+         }
+         else
+@@ -1589,7 +1590,7 @@ IceInternal::IncomingConnectionFactory::initialize(const string& oaName)
+                 // Ignore
+             }
+         }
+-        
++
+         _state = StateFinished;
+         _connections.clear();
+         throw;
+@@ -1625,7 +1626,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
+             for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::activate));
+             break;
+         }
+-        
++
+         case StateHolding:
+         {
+             if(_state != StateActive) // Can only switch from active to holding.
+@@ -1639,7 +1640,7 @@ IceInternal::IncomingConnectionFactory::setState(State state)
+             for_each(_connections.begin(), _connections.end(), Ice::voidMemFun(&ConnectionI::hold));
+             break;
+         }
+-        
++
+         case StateClosed:
+         {
+             if(_acceptor)
+@@ -1653,10 +1654,10 @@ IceInternal::IncomingConnectionFactory::setState(State state)
+ 
+ #ifdef ICE_USE_IOCP
+             //
+-            // With IOCP, we close the acceptor now to cancel all the pending asynchronous 
+-            // operations. It's important to wait for the pending asynchronous operations 
++            // With IOCP, we close the acceptor now to cancel all the pending asynchronous
++            // operations. It's important to wait for the pending asynchronous operations
+             // to return before ConnectionI::finished(). Otherwise, if there was a pending
+-            // message waiting to be sent, the connection wouldn't know whether or not the 
++            // message waiting to be sent, the connection wouldn't know whether or not the
+             // send failed or succeeded, potentially breaking at-most-once semantics.
+             //
+             if(_acceptor)
+diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp
+index cf7ec77..e76a3f0 100644
+--- a/cpp/src/Ice/ConnectionI.cpp
++++ b/cpp/src/Ice/ConnectionI.cpp
+@@ -25,6 +25,7 @@
+ #include <Ice/LocalException.h>
+ #include <Ice/ReferenceFactory.h> // For createProxy().
+ #include <Ice/ProxyFactory.h> // For createProxy().
++#include <cstddef>
+ #include <bzlib.h>
+ 
+ using namespace std;
+@@ -49,7 +50,7 @@ public:
+     {
+         _connection->timedOut();
+     }
+-    
++
+ private:
+ 
+     Ice::ConnectionI* _connection;
+@@ -59,9 +60,9 @@ class DispatchDispatcherCall : public DispatcherCall
+ {
+ public:
+ 
+-    DispatchDispatcherCall(const ConnectionIPtr& connection, const ConnectionI::StartCallbackPtr& startCB, 
+-                           const vector<OutgoingAsyncMessageCallbackPtr>& sentCBs, Byte compress, Int requestId, 
+-                           Int invokeNum, const ServantManagerPtr& servantManager, const ObjectAdapterPtr& adapter, 
++    DispatchDispatcherCall(const ConnectionIPtr& connection, const ConnectionI::StartCallbackPtr& startCB,
++                           const vector<OutgoingAsyncMessageCallbackPtr>& sentCBs, Byte compress, Int requestId,
++                           Int invokeNum, const ServantManagerPtr& servantManager, const ObjectAdapterPtr& adapter,
+                            const OutgoingAsyncPtr& outAsync, BasicStream& stream) :
+         _connection(connection),
+         _startCB(startCB),
+@@ -80,7 +81,7 @@ public:
+     virtual void
+     run()
+     {
+-        _connection->dispatch(_startCB, _sentCBs, _compress, _requestId, _invokeNum, _servantManager, _adapter, 
++        _connection->dispatch(_startCB, _sentCBs, _compress, _requestId, _invokeNum, _servantManager, _adapter,
+                               _outAsync, _stream);
+     }
+ 
+@@ -632,8 +633,8 @@ Ice::ConnectionI::prepareBatchRequest(BasicStream* os)
+     if(_exception.get())
+     {
+         //
+-        // If there were no batch requests queued when the connection failed, we can safely 
+-        // retry with a new connection. Otherwise, we must throw to notify the caller that 
++        // If there were no batch requests queued when the connection failed, we can safely
++        // retry with a new connection. Otherwise, we must throw to notify the caller that
+         // some previous batch requests were not sent.
+         //
+         if(_batchStream.b.empty())
+@@ -992,7 +993,7 @@ Ice::ConnectionI::sendResponse(BasicStream* os, Byte compressFlag)
+ {
+     IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
+     assert(_state > StateNotValidated);
+-    
++
+     try
+     {
+         if(--_dispatchCount == 0)
+@@ -1003,21 +1004,21 @@ Ice::ConnectionI::sendResponse(BasicStream* os, Byte compressFlag)
+             }
+             notifyAll();
+         }
+-        
++
+         if(_state >= StateClosed)
+         {
+             assert(_exception.get());
+             _exception->ice_throw();
+         }
+-        
++
+         OutgoingMessage message(os, compressFlag > 0);
+         sendMessage(message);
+-        
++
+         if(_state == StateClosing && _dispatchCount == 0)
+         {
+             initiateShutdown();
+         }
+-        
++
+         return;
+     }
+     catch(const LocalException& ex)
+@@ -1031,7 +1032,7 @@ Ice::ConnectionI::sendNoResponse()
+ {
+     IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this);
+     assert(_state > StateNotValidated);
+-    
++
+     try
+     {
+         if(--_dispatchCount == 0)
+@@ -1042,13 +1043,13 @@ Ice::ConnectionI::sendNoResponse()
+             }
+             notifyAll();
+         }
+-        
++
+         if(_state >= StateClosed)
+         {
+             assert(_exception.get());
+             _exception->ice_throw();
+         }
+-        
++
+         if(_state == StateClosing && _dispatchCount == 0)
+         {
+             initiateShutdown();
+@@ -1138,7 +1139,7 @@ Ice::ConnectionI::startAsync(SocketOperation operation)
+ 
+     try
+     {
+-        if(operation & SocketOperationWrite)                
++        if(operation & SocketOperationWrite)
+         {
+             if(_transceiver->startWrite(_writeStream) && !_sendStreams.empty())
+             {
+@@ -1229,10 +1230,10 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current)
+                     if(_readStream.i != _readStream.b.end() && !_transceiver->read(_readStream))
+                     {
+                         return;
+-                    }   
++                    }
+                     assert(_readStream.i == _readStream.b.end());
+                     _readHeader = false;
+-                
++
+                     ptrdiff_t pos = _readStream.i - _readStream.b.begin();
+                     if(pos < headerSize)
+                     {
+@@ -1241,7 +1242,7 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current)
+                         //
+                         throw IllegalMessageSizeException(__FILE__, __LINE__);
+                     }
+-                
++
+                     _readStream.i = _readStream.b.begin();
+                     const Byte* m;
+                     _readStream.readBlob(m, static_cast<Int>(sizeof(magic)));
+@@ -1318,7 +1319,7 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current)
+                     }
+                 }
+             }
+-        
++
+             if(_state <= StateNotValidated)
+             {
+                 if(_state == StateNotInitialized && !initialize(current.operation))
+@@ -1431,7 +1432,7 @@ Ice::ConnectionI::message(ThreadPoolCurrent& current)
+ 
+ void
+ ConnectionI::dispatch(const StartCallbackPtr& startCB, const vector<OutgoingAsyncMessageCallbackPtr>& sentCBs,
+-                      Byte compress, Int requestId, Int invokeNum, const ServantManagerPtr& servantManager, 
++                      Byte compress, Int requestId, Int invokeNum, const ServantManagerPtr& servantManager,
+                       const ObjectAdapterPtr& adapter, const OutgoingAsyncPtr& outAsync, BasicStream& stream)
+ {
+     //
+@@ -1482,7 +1483,7 @@ Ice::ConnectionI::finished(ThreadPoolCurrent& current)
+ 
+     //
+     // If there are no callbacks to call, we don't call ioCompleted() since we're not going
+-    // to call code that will potentially block (this avoids promoting a new leader and 
++    // to call code that will potentially block (this avoids promoting a new leader and
+     // unecessary thread creation, especially if this is called on shutdown).
+     //
+     if(!_startCallback && _sendStreams.empty() && _asyncRequests.empty())
+@@ -1536,7 +1537,7 @@ Ice::ConnectionI::finish()
+ #ifdef ICE_USE_IOCP
+         //
+         // The current message might be sent but not yet removed from _sendStreams. If
+-        // the response has been received in the meantime, we remove the message from 
++        // the response has been received in the meantime, we remove the message from
+         // _sendStreams to not call finished on a message which is already done.
+         //
+         OutgoingMessage* message = &_sendStreams.front();
+@@ -2043,7 +2044,7 @@ Ice::ConnectionI::initiateShutdown()
+             //
+             scheduleTimeout(SocketOperationWrite, closeTimeout());
+         }
+-        
++
+         //
+         // The CloseConnection message should be sufficient. Closing the write
+         // end of the socket is probably an artifact of how things were done
+@@ -2191,12 +2192,12 @@ Ice::ConnectionI::validate(SocketOperation operation)
+ void
+ Ice::ConnectionI::sendNextMessage(vector<OutgoingAsyncMessageCallbackPtr>& callbacks)
+ {
+-    assert(!_sendStreams.empty());    
++    assert(!_sendStreams.empty());
+     assert(!_writeStream.b.empty() && _writeStream.i == _writeStream.b.end());
+     try
+     {
+         while(true)
+-        {    
++        {
+             //
+             // Notify the message that it was sent.
+             //
+@@ -2301,7 +2302,7 @@ Ice::ConnectionI::sendNextMessage(vector<OutgoingAsyncMessageCallbackPtr>& callb
+     _threadPool->unregister(this, SocketOperationWrite);
+ 
+     //
+-    // If all the messages were sent and we are in the closing state, we schedule 
++    // If all the messages were sent and we are in the closing state, we schedule
+     // the close timeout to wait for the peer to close the connection.
+     //
+     if(_state == StateClosing)
+diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp
+index 02b8fcd..66d4a9d 100644
+--- a/cpp/src/Ice/Reference.cpp
++++ b/cpp/src/Ice/Reference.cpp
+@@ -29,6 +29,7 @@
+ #include <IceUtil/Random.h>
+ #include <IceUtil/MutexPtrLock.h>
+ 
++#include <cstddef>
+ #include <functional>
+ 
+ using namespace std;
+@@ -418,10 +419,10 @@ public:
+     }
+ };
+ 
+-IceInternal::Reference::Reference(const InstancePtr& instance, 
+-                                  const CommunicatorPtr& communicator, 
++IceInternal::Reference::Reference(const InstancePtr& instance,
++                                  const CommunicatorPtr& communicator,
+                                   const Identity& id,
+-                                  const string& facet, 
++                                  const string& facet,
+                                   Mode mode,
+                                   bool secure) :
+     _hashInitialized(false),
+@@ -465,10 +466,10 @@ IceInternal::Reference::hashInit() const
+ 
+ IceUtil::Shared* IceInternal::upCast(IceInternal::FixedReference* p) { return p; }
+ 
+-IceInternal::FixedReference::FixedReference(const InstancePtr& instance, 
+-                                            const CommunicatorPtr& communicator, 
++IceInternal::FixedReference::FixedReference(const InstancePtr& instance,
++                                            const CommunicatorPtr& communicator,
+                                             const Identity& id,
+-                                            const string& facet, 
++                                            const string& facet,
+                                             Mode mode,
+                                             bool secure,
+                                             const ConnectionIPtr& fixedConnection) :
+@@ -752,7 +753,7 @@ IceInternal::FixedReference::operator<(const Reference& r) const
+     {
+         return false;
+     }
+-    
++
+     const FixedReference* rhs = dynamic_cast<const FixedReference*>(&r);
+     if(!rhs)
+     {
+@@ -776,19 +777,19 @@ IceInternal::FixedReference::FixedReference(const FixedReference& r) :
+ 
+ IceUtil::Shared* IceInternal::upCast(IceInternal::RoutableReference* p) { return p; }
+ 
+-IceInternal::RoutableReference::RoutableReference(const InstancePtr& instance, 
++IceInternal::RoutableReference::RoutableReference(const InstancePtr& instance,
+                                                   const CommunicatorPtr& communicator,
+-                                                  const Identity& id, 
++                                                  const Identity& id,
+                                                   const string& facet,
+-                                                  Mode mode, 
+-                                                  bool secure, 
++                                                  Mode mode,
++                                                  bool secure,
+                                                   const vector<EndpointIPtr>& endpoints,
+                                                   const string& adapterId,
+                                                   const LocatorInfoPtr& locatorInfo,
+                                                   const RouterInfoPtr& routerInfo,
+                                                   bool collocationOptimized,
+                                                   bool cacheConnection,
+-                                                  bool preferSecure, 
++                                                  bool preferSecure,
+                                                   EndpointSelectionType endpointSelection,
+                                                   int locatorCacheTimeout) :
+     Reference(instance, communicator, id, facet, mode, secure),
+@@ -1594,7 +1595,7 @@ IceInternal::RoutableReference::getConnectionNoRouterInfo(const GetConnectionCal
+         createConnection(_endpoints, callback);
+         return;
+     }
+-    
++
+     if(_locatorInfo)
+     {
+         RoutableReference* self = const_cast<RoutableReference*>(this);
+@@ -1698,7 +1699,7 @@ IceInternal::RoutableReference::createConnection(const vector<EndpointIPtr>& all
+ 
+             virtual void
+             setConnection(const Ice::ConnectionIPtr& connection, bool compress)
+-            { 
++            {
+                 //
+                 // If we have a router, set the object adapter for this router
+                 // (if any) to the new connection, so that callbacks from the
+@@ -1716,7 +1717,7 @@ IceInternal::RoutableReference::createConnection(const vector<EndpointIPtr>& all
+             {
+                 _callback->setException(ex);
+             }
+-            
++
+             CB1(const RouterInfoPtr& routerInfo, const GetConnectionCallbackPtr& callback) :
+                 _routerInfo(routerInfo), _callback(callback)
+             {
+@@ -1763,21 +1764,21 @@ IceInternal::RoutableReference::createConnection(const vector<EndpointIPtr>& all
+                 {
+                     _exception.reset(dynamic_cast<Ice::LocalException*>(ex.ice_clone()));
+                 }
+-                
++
+                 if(++_i == _endpoints.size())
+                 {
+                     _callback->setException(*_exception.get());
+                     return;
+                 }
+-                
++
+                 const bool more = _i != _endpoints.size() - 1;
+                 vector<EndpointIPtr> endpoint;
+                 endpoint.push_back(_endpoints[_i]);
+-                
++
+                 OutgoingConnectionFactoryPtr factory = _reference->getInstance()->outgoingConnectionFactory();
+                 factory->create(endpoint, more, _reference->getEndpointSelection(), this);
+             }
+-            
++
+             CB2(const RoutableReferencePtr& reference, const vector<EndpointIPtr>& endpoints,
+                 const GetConnectionCallbackPtr& callback) :
+                 _reference(reference),
+diff --git a/cpp/src/IceGrid/Util.h b/cpp/src/IceGrid/Util.h
+index a0e0404..e2e9fb7 100644
+--- a/cpp/src/IceGrid/Util.h
++++ b/cpp/src/IceGrid/Util.h
+@@ -14,6 +14,7 @@
+ #include <IceUtil/StringUtil.h>
+ #include <IceGrid/Exception.h>
+ #include <IceUtil/Random.h>
++#include <cstddef>
+ #include <functional>
+ #include <iterator>
+ 
+@@ -30,9 +31,9 @@ struct RandomNumberGenerator : public std::unary_function<ptrdiff_t, ptrdiff_t>
+ 
+ 
+ template<typename T> std::insert_iterator<T>
+-inline set_inserter(T& container) 
+-{ 
+-    return std::insert_iterator<T>(container, container.begin()); 
++inline set_inserter(T& container)
++{
++    return std::insert_iterator<T>(container, container.begin());
+ }
+ 
+ std::string toString(const std::vector<std::string>&, const std::string& = std::string(" "));
+@@ -76,8 +77,8 @@ struct ForEachCommunicator : std::unary_function<CommunicatorDescriptorPtr&, voi
+ };
+ 
+ template<typename Function> ForEachCommunicator<Function>
+-inline forEachCommunicator(Function function) 
+-{ 
++inline forEachCommunicator(Function function)
++{
+     return ForEachCommunicator<Function>(function);
+ }
+ 
+@@ -99,7 +100,7 @@ public:
+ 
+ template<class T, class A> ObjFunc<T, A>
+ inline objFunc(T& obj, void (T::*p)(A))
+-{ 
++{
+     return ObjFunc<T, A>(obj, p);
+ }
+ 
+diff --git a/cpp/src/slice2freeze/Main.cpp b/cpp/src/slice2freeze/Main.cpp
+index 764baa0..4b59ca1 100644
+--- a/cpp/src/slice2freeze/Main.cpp
++++ b/cpp/src/slice2freeze/Main.cpp
+@@ -18,6 +18,7 @@
+ #include <Slice/Util.h>
+ #include <IceUtil/OutputUtil.h>
+ #include <IceUtil/StringUtil.h>
++#include <cstddef>
+ #include <cstring>
+ 
+ using namespace std;
+@@ -139,7 +140,7 @@ private:
+         _useWstring = _useWstringHist.back();
+         _useWstringHist.pop_back();
+     }
+-    
++
+     bool _useWstring;
+     std::list<bool> _useWstringHist;
+ };
+@@ -171,7 +172,7 @@ struct Dict
+     StringList valueMetaData;
+     bool sort;
+     string userCompare;
+-  
++
+     vector<DictIndex> indices;
+ };
+ 
+@@ -217,7 +218,7 @@ usage(const char* n)
+         "                      Ice-encoding representation. Use 'sort' to sort\n"
+         "                      with the COMPARE functor class. COMPARE's default\n"
+         "                      value is std::less<KEY>\n"
+-        "--index NAME,TYPE,MEMBER[,{case-sensitive|case-insensitive}]\n" 
++        "--index NAME,TYPE,MEMBER[,{case-sensitive|case-insensitive}]\n"
+         "                      Create a Freeze evictor index with the name\n"
+         "                      NAME for member MEMBER of class TYPE. This\n"
+         "                      option may be specified multiple times for\n"
+@@ -253,7 +254,7 @@ checkIdentifier(string t, string s)
+         os << t << "' is not a valid type name";
+         throw os.str();
+     }
+-    
++
+     for(unsigned int i = 1; i < s.size(); ++i)
+     {
+         if(!isalnum(static_cast<unsigned char>(s[i])) && s[i] != '_')
+@@ -272,13 +273,13 @@ printFreezeTypes(Output& out, const vector<Dict>& dicts, const vector<Index>& in
+     out << "\n// Freeze types in this file:";
+     for(vector<Dict>::const_iterator p = dicts.begin(); p != dicts.end(); ++p)
+     {
+-        out << "\n// name=\"" << p->name << "\", key=\"" 
++        out << "\n// name=\"" << p->name << "\", key=\""
+             << p->key << "\", value=\"" << p->value << "\"";
+     }
+-    
++
+     for(vector<Index>::const_iterator q = indices.begin(); q != indices.end(); ++q)
+     {
+-        out << "\n// name=\"" << q->name << "\", type=\"" << q->type 
++        out << "\n// name=\"" << q->name << "\", type=\"" << q->type
+             << "\", member=\"" << q->member << "\"";
+         if(q->caseSensitive == false)
+         {
+@@ -289,7 +290,7 @@ printFreezeTypes(Output& out, const vector<Dict>& dicts, const vector<Index>& in
+ }
+ 
+ template<class T>
+-inline string 
++inline string
+ getCompare(const T& t, const string& keyType)
+ {
+     if(t.sort)
+@@ -397,7 +398,7 @@ writeCodecC(const TypePtr& type, const StringList& metaData, const string& name,
+ 
+     string typeId = type->typeId();
+     BuiltinPtr builtInType = BuiltinPtr::dynamicCast(type);
+-    if(builtInType &&  builtInType->kind() == Builtin::KindString && metaData.size() != 0 && 
++    if(builtInType &&  builtInType->kind() == Builtin::KindString && metaData.size() != 0 &&
+        metaData.front() == "cpp:type:wstring")
+     {
+         typeId = "wstring";
+@@ -412,15 +413,15 @@ writeCodecC(const TypePtr& type, const StringList& metaData, const string& name,
+ }
+ 
+ void
+-writeDictWithIndicesH(const string& name, const Dict& dict, 
+-                      const vector<IndexType> indexTypes, 
++writeDictWithIndicesH(const string& name, const Dict& dict,
++                      const vector<IndexType> indexTypes,
+                       const TypePtr& keyType, const StringList& keyMetaData, const TypePtr& valueType,
+                       const StringList& valueMetaData, Output& H, const string& dllExport)
+ {
+     string compare = getCompare(dict, typeToString(keyType, keyMetaData));
+-    
++
+     string templateParams = string("< ") + typeToString(keyType, keyMetaData) + ", "
+-        + typeToString(valueType, valueMetaData) + ", " + name + "KeyCodec, " 
++        + typeToString(valueType, valueMetaData) + ", " + name + "KeyCodec, "
+         + name + "ValueCodec, " + compare + " >";
+ 
+     string keyCompareParams =
+@@ -444,7 +445,7 @@ writeDictWithIndicesH(const string& name, const Dict& dict,
+         }
+     }
+ 
+-    H << sp << nl << "class " << dllExport << name 
++    H << sp << nl << "class " << dllExport << name
+       << " : public Freeze::Map" << templateParams;
+     H << sb;
+     H.dec();
+@@ -473,24 +474,24 @@ writeDictWithIndicesH(const string& name, const Dict& dict,
+     {
+         string className = capitalizedMembers[i] + "Index";
+ 
+-        string indexCompare = 
++        string indexCompare =
+             getCompare(dict.indices[i], typeToString(indexTypes[i].type, indexTypes[i].metaData));
+-        
++
+         string indexCompareParams =
+             string("< ") + typeToString(indexTypes[i].type, indexTypes[i].metaData) + ", "
+             + className + ", " + indexCompare + " >";
+ 
+         H << sp << nl << "class " << dllExport << className
+-          << " : public Freeze::MapIndex" << indexCompareParams;        
++          << " : public Freeze::MapIndex" << indexCompareParams;
+         H << sb;
+ 
+         H.dec();
+         H << sp << nl << "public:";
+         H << sp;
+         H.inc();
+-        H << nl << capitalizedMembers[i] << "Index(const std::string&, const " 
++        H << nl << capitalizedMembers[i] << "Index(const std::string&, const "
+           << indexCompare << "& = " << indexCompare << "());";
+-        
++
+         H << sp;
+ 
+         //
+@@ -499,7 +500,7 @@ writeDictWithIndicesH(const string& name, const Dict& dict,
+         H << nl << "static void write(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData)
+           << ", Freeze::Key&, const Ice::CommunicatorPtr&);";
+ 
+-        H << nl << "static void read(" 
++        H << nl << "static void read("
+           << typeToString(indexTypes[i].type, indexTypes[i].metaData)
+           << "&, const Freeze::Key&, const ::Ice::CommunicatorPtr&);";
+ 
+@@ -509,7 +510,7 @@ writeDictWithIndicesH(const string& name, const Dict& dict,
+         H.inc();
+ 
+         H << nl << "virtual void marshalKey(const Freeze::Value&, Freeze::Key&) const;";
+-        
++
+         H << eb << ';';
+     }
+ 
+@@ -576,22 +577,22 @@ writeDictWithIndicesH(const string& name, const Dict& dict,
+ 
+         H << nl << "iterator endFor" << capitalizedMembers[i] << "();";
+         H << nl << "const_iterator endFor" << capitalizedMembers[i] << "() const;";
+-        
++
+         H << nl << "iterator lowerBoundFor" << capitalizedMembers[i]
+           << "(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData) << ");";
+         H << nl << "const_iterator lowerBoundFor" << capitalizedMembers[i]
+           << "(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData) << ") const;";
+-        
++
+         H << nl << "iterator upperBoundFor" << capitalizedMembers[i]
+           << "(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData) << ");";
+         H << nl << "const_iterator upperBoundFor" << capitalizedMembers[i]
+           << "(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData) << ") const;";
+ 
+-        H << nl << "std::pair<iterator, iterator> equalRangeFor" 
+-          << capitalizedMembers[i] << "(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData) 
++        H << nl << "std::pair<iterator, iterator> equalRangeFor"
++          << capitalizedMembers[i] << "(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData)
+           << ");";
+-        
+-        H << nl << "std::pair<const_iterator, const_iterator> equalRangeFor" 
++
++        H << nl << "std::pair<const_iterator, const_iterator> equalRangeFor"
+           << capitalizedMembers[i] << "(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData)
+           << ") const;";
+ 
+@@ -602,26 +603,26 @@ writeDictWithIndicesH(const string& name, const Dict& dict,
+           << "(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData) << ") const;";
+ 
+     }
+-    
++
+     H << eb << ';';
+ }
+ 
+ void
+-writeDictWithIndicesC(const string& name, const string& absolute, const Dict& dict, 
+-                      const vector<IndexType> indexTypes, 
++writeDictWithIndicesC(const string& name, const string& absolute, const Dict& dict,
++                      const vector<IndexType> indexTypes,
+                       const TypePtr& keyType, const StringList& keyMetaData, const TypePtr& valueType,
+                       const StringList& valueMetaData, Output& C)
+-{ 
++{
+     string compare = getCompare(dict, typeToString(keyType, keyMetaData));
+-    
++
+     string templateParams = string("< ") + typeToString(keyType, keyMetaData) + ", "
+-        + typeToString(valueType, valueMetaData) + ", " + name + "KeyCodec, " 
++        + typeToString(valueType, valueMetaData) + ", " + name + "KeyCodec, "
+         + name + "ValueCodec, " + compare + " >";
+ 
+     string keyCompareParams =
+         string("< ") + typeToString(keyType, keyMetaData) + ", "
+         + name + "KeyCodec, " + compare + " >";
+-    
++
+     vector<string> capitalizedMembers;
+     size_t i;
+     for(i = 0; i < dict.indices.size(); ++i)
+@@ -638,7 +639,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+             capitalizedMembers.push_back("Value");
+         }
+     }
+-    
++
+ 
+     //
+     // Nested index classes
+@@ -647,7 +648,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+     {
+         string className = capitalizedMembers[i] + "Index";
+ 
+-        string indexCompare = 
++        string indexCompare =
+             getCompare(dict.indices[i], typeToString(indexTypes[i].type, indexTypes[i].metaData));
+ 
+         string indexCompareParams =
+@@ -665,11 +666,11 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+         C << sb;
+         C << eb;
+ 
+-        C << sp << nl << "void" 
+-          << nl << absolute << "::" << className << "::" 
++        C << sp << nl << "void"
++          << nl << absolute << "::" << className << "::"
+           << "marshalKey(const Freeze::Value& __v, Freeze::Key& __k) const";
+         C << sb;
+-        
++
+         bool optimize = false;
+ 
+         if(dict.indices[i].member.empty() && dict.indices[i].caseSensitive)
+@@ -685,7 +686,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+             C << nl << typeToString(valueType, valueMetaData) << " __x;";
+             C << nl << absolute << "ValueCodec::read(__x, __v, _communicator);";
+             string param = "__x";
+-            
++
+             if(!dict.indices[i].member.empty())
+             {
+                 if(ClassDeclPtr::dynamicCast(valueType) != 0)
+@@ -700,13 +701,13 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+             C << nl << "write(" << param << ", __k, _communicator);";
+         }
+         C << eb;
+-        
+-        C << sp << nl << "void" 
+-          << nl << absolute << "::" << className << "::" 
++
++        C << sp << nl << "void"
++          << nl << absolute << "::" << className << "::"
+           << "write(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData)
+           << " __index, Freeze::Key& __bytes, const Ice::CommunicatorPtr& __communicator)";
+         C << sb;
+-        
++
+         if(optimize)
+         {
+             C << nl << absolute << "ValueCodec::write(__index, __bytes, __communicator);";
+@@ -717,7 +718,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+ 
+             C << nl << "IceInternal::InstancePtr __instance = IceInternal::getInstance(__communicator);";
+             C << nl << "IceInternal::BasicStream __stream(__instance.get());";
+-            
++
+             string valueS;
+             if(dict.indices[i].caseSensitive)
+             {
+@@ -725,22 +726,22 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+             }
+             else
+             {
+-                C << nl << typeToString(indexTypes[i].type, indexTypes[i].metaData) 
++                C << nl << typeToString(indexTypes[i].type, indexTypes[i].metaData)
+                   << " __lowerCaseIndex = IceUtilInternal::toLower(__index);";
+                 valueS = "__lowerCaseIndex";
+             }
+-            
++
+             writeMarshalUnmarshalCode(C, indexTypes[i].type, valueS, true, "__stream", false, indexTypes[i].metaData);
+             C << nl << "::std::vector<Ice::Byte>(__stream.b.begin(), __stream.b.end()).swap(__bytes);";
+         }
+         C << eb;
+ 
+-        C << sp << nl << "void" 
+-          << nl << absolute << "::" << className << "::" 
++        C << sp << nl << "void"
++          << nl << absolute << "::" << className << "::"
+           << "read(" << typeToString(indexTypes[i].type, indexTypes[i].metaData)
+           << "& __index, const Freeze::Key& __bytes, const Ice::CommunicatorPtr& __communicator)";
+         C << sb;
+-        
++
+         if(optimize)
+         {
+             C << nl << absolute << "ValueCodec::read(__index, __bytes, __communicator);";
+@@ -749,11 +750,11 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+         {
+             C << nl << "IceInternal::InstancePtr __instance = IceInternal::getInstance(__communicator);";
+             C << nl << "IceInternal::BasicStream __stream(__instance.get());";
+-            
++
+             C << nl << "__stream.b.resize(__bytes.size());";
+             C << nl << "::memcpy(&__stream.b[0], &__bytes[0], __bytes.size());";
+             C << nl << "__stream.i = __stream.b.begin();";
+-            writeMarshalUnmarshalCode(C, indexTypes[i].type, "__index", false, "__stream", false, 
++            writeMarshalUnmarshalCode(C, indexTypes[i].type, "__index", false, "__stream", false,
+                                       indexTypes[i].metaData);
+         }
+         C << eb;
+@@ -810,7 +811,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+ 
+         C << nl << "__indices.push_back(new " << capitalizedMembers[i] << "Index(" << indexName << "));";
+     }
+-    C << nl << "Freeze::MapHelper::recreate(__connection, __dbName, " 
++    C << nl << "Freeze::MapHelper::recreate(__connection, __dbName, "
+       << absolute + "KeyCodec::typeId(), "
+       << absolute + "ValueCodec::typeId(), __keyCompare, __indices);";
+     C << eb;
+@@ -819,9 +820,9 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+     // Find and count functions
+     //
+     for(i = 0; i < capitalizedMembers.size(); ++i)
+-    {   
++    {
+         string indexClassName = capitalizedMembers[i] + "Index";
+-        
++
+         string indexName = dict.indices[i].member;
+         if(indexName.empty())
+         {
+@@ -836,7 +837,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+         C << sb;
+         C << nl << "Freeze::Key __bytes;";
+         C << nl << indexClassName << "::" << "write(__index, __bytes, _communicator);";
+-        C << nl << "return iterator(_helper->index(" << indexName 
++        C << nl << "return iterator(_helper->index(" << indexName
+           << ")->untypedFind(__bytes, false, __onlyDups), _communicator);";
+         C << eb;
+ 
+@@ -847,7 +848,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+         C << sb;
+         C << nl << "Freeze::Key __bytes;";
+         C << nl << indexClassName << "::" << "write(__index, __bytes, _communicator);";
+-        C << nl << "return const_iterator(_helper->index(" << indexName 
++        C << nl << "return const_iterator(_helper->index(" << indexName
+           << ")->untypedFind(__bytes, true, __onlyDups), _communicator);";
+         C << eb;
+ 
+@@ -881,7 +882,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+         C << sb;
+         C << nl << "Freeze::Key __bytes;";
+         C << nl << indexClassName << "::" << "write(__index, __bytes, _communicator);";
+-        C << nl << "return iterator(_helper->index(" << indexName 
++        C << nl << "return iterator(_helper->index(" << indexName
+           << ")->untypedLowerBound(__bytes, false), _communicator);";
+         C << eb;
+ 
+@@ -891,17 +892,17 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+         C << sb;
+         C << nl << "Freeze::Key __bytes;";
+         C << nl << indexClassName << "::" << "write(__index, __bytes, _communicator);";
+-        C << nl << "return const_iterator(_helper->index(" << indexName 
++        C << nl << "return const_iterator(_helper->index(" << indexName
+           << ")->untypedLowerBound(__bytes, true), _communicator);";
+         C << eb;
+-        
++
+         C << sp << nl << absolute << "::iterator"
+           << nl << absolute << "::" << "upperBoundFor" << capitalizedMembers[i]
+           << "(" << inputTypeToString(indexTypes[i].type, indexTypes[i].metaData) << " __index)";
+         C << sb;
+         C << nl << "Freeze::Key __bytes;";
+         C << nl << indexClassName << "::" << "write(__index, __bytes, _communicator);";
+-        C << nl << "return iterator(_helper->index(" << indexName 
++        C << nl << "return iterator(_helper->index(" << indexName
+           << ")->untypedUpperBound(__bytes, false), _communicator);";
+         C << eb;
+ 
+@@ -911,10 +912,10 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+         C << sb;
+         C << nl << "Freeze::Key __bytes;";
+         C << nl << indexClassName << "::" << "write(__index, __bytes, _communicator);";
+-        C << nl << "return const_iterator(_helper->index(" << indexName 
++        C << nl << "return const_iterator(_helper->index(" << indexName
+           << ")->untypedUpperBound(__bytes, true), _communicator);";
+         C << eb;
+-        
++
+         C << sp << nl << "std::pair<" << absolute << "::iterator, "
+           << absolute << "::iterator>"
+           << nl << absolute << "::" << "equalRangeFor" << capitalizedMembers[i]
+@@ -933,7 +934,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+           << "(__index), upperBoundFor" << capitalizedMembers[i] << "(__index));";
+         C << eb;
+ 
+-        string countFunction = dict.indices[i].member.empty() ? string("valueCount") 
++        string countFunction = dict.indices[i].member.empty() ? string("valueCount")
+             : dict.indices[i].member + "Count";
+ 
+         C << sp << nl << "int"
+@@ -942,7 +943,7 @@ writeDictWithIndicesC(const string& name, const string& absolute, const Dict& di
+         C << sb;
+         C << nl << "Freeze::Key __bytes;";
+         C << nl << indexClassName << "::" << "write(__index, __bytes, _communicator);";
+-        C << nl << "return _helper->index(" << indexName 
++        C << nl << "return _helper->index(" << indexName
+           << ")->untypedCount(__bytes);";
+         C << eb;
+     }
+@@ -963,12 +964,12 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+     {
+         string s = name.substr(0, pos);
+         name.erase(0, pos + 2);
+-        
++
+         checkIdentifier(absolute, s);
+-        
++
+         scope.push_back(s);
+     }
+-    
++
+     checkIdentifier(absolute, name);
+ 
+     TypeList keyTypes = u->lookupType(dict.key, false);
+@@ -979,7 +980,7 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+         throw os.str();
+     }
+     TypePtr keyType = keyTypes.front();
+-    
++
+     TypeList valueTypes = u->lookupType(dict.value, false);
+     if(valueTypes.empty())
+     {
+@@ -988,9 +989,9 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+         throw os.str();
+     }
+     TypePtr valueType = valueTypes.front();
+-    
++
+     vector<string>::const_iterator q;
+-    
++
+     for(q = scope.begin(); q != scope.end(); ++q)
+     {
+         H << sp;
+@@ -1006,7 +1007,7 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+     {
+         string compare = getCompare(dict, typeToString(keyType, dict.keyMetaData));
+ 
+-        H << sp << nl << "typedef Freeze::Map< " << typeToString(keyType, dict.keyMetaData) 
++        H << sp << nl << "typedef Freeze::Map< " << typeToString(keyType, dict.keyMetaData)
+           << ", " << typeToString(valueType, dict.valueMetaData) << ", "
+           << name << "KeyCodec, " << name << "ValueCodec, " << compare
+           << " > " << name << ";";
+@@ -1025,7 +1026,7 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+                     os << "bad index for dictionary `" << dict.name << "'";
+                     throw os.str();
+                 }
+-                
++
+                 bool containsSequence = false;
+                 if(!Dictionary::legalKeyType(valueType, containsSequence))
+                 {
+@@ -1043,9 +1044,9 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+                     //
+                     // Let's check value is a string
+                     //
+-                
++
+                     BuiltinPtr builtInType = BuiltinPtr::dynamicCast(valueType);
+-                    
++
+                     if(builtInType == 0 || builtInType->kind() != Builtin::KindString)
+                     {
+                         ostringstream os;
+@@ -1062,7 +1063,7 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+             {
+                 DataMemberPtr dataMember = 0;
+                 DataMemberList dataMembers;
+-                
++
+                 ClassDeclPtr classDecl = ClassDeclPtr::dynamicCast(valueType);
+                 if(classDecl != 0)
+                 {
+@@ -1091,15 +1092,15 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+                         ++d;
+                     }
+                 }
+-                
++
+                 if(dataMember == 0)
+                 {
+                     ostringstream os;
+-                    os << "The value of `" << dict.name 
++                    os << "The value of `" << dict.name
+                        << "' has no data member named `" << index.member << "'";
+                     throw os.str();
+                 }
+-                
++
+                 TypePtr dataMemberType = dataMember->type();
+ 
+                 bool containsSequence = false;
+@@ -1133,7 +1134,7 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+                 indexTypes.push_back(iType);
+             }
+         }
+-        writeDictWithIndicesH(name, dict, indexTypes, keyType, dict.keyMetaData, valueType, dict.valueMetaData, H, 
++        writeDictWithIndicesH(name, dict, indexTypes, keyType, dict.keyMetaData, valueType, dict.valueMetaData, H,
+                               dllExport);
+     }
+ 
+@@ -1146,7 +1147,7 @@ writeDict(const string& n, const UnitPtr& u, const Dict& dict, Output& H, Output
+ 
+     writeCodecC(keyType, dict.keyMetaData, absolute + "KeyCodec", "Key", false, C);
+     writeCodecC(valueType, dict.valueMetaData, absolute + "ValueCodec", "Value", true, C);
+-    
++
+     if(indexTypes.size() > 0)
+     {
+         writeDictWithIndicesC(name, absolute, dict, indexTypes, keyType, dict.keyMetaData, valueType,
+@@ -1164,7 +1165,7 @@ writeIndexH(const string& memberTypeString, const string& name, Output& H, const
+     H << sp << nl << "public:";
+     H << sp;
+     H.inc();
+-    
++
+     H << nl << name << "(const std::string&, const std::string& = \"\");";
+     H << sp << nl << "std::vector<Ice::Identity>";
+     H << nl << "findFirst(" << memberTypeString << ", Ice::Int) const;";
+@@ -1178,13 +1179,13 @@ writeIndexH(const string& memberTypeString, const string& name, Output& H, const
+     H << sp << nl << "private:";
+     H << sp;
+     H.inc();
+-    
++
+     H << nl << "virtual bool";
+     H << nl << "marshalKey(const Ice::ObjectPtr&, Freeze::Key&) const;";
+-    
++
+     H << sp << nl << "void";
+     H << nl << "marshalKey(" << memberTypeString << ", Freeze::Key&) const;";
+-    
++
+     H << eb << ';';
+     H << sp;
+     H << nl << "typedef IceUtil::Handle<" << name << "> " << name << "Ptr;";
+@@ -1196,7 +1197,7 @@ writeIndexC(const TypePtr& type, const TypePtr& memberType, const string& member
+ {
+     string inputType = inputTypeToString(memberType);
+ 
+-    C << sp << nl << fullName << "::" << name 
++    C << sp << nl << fullName << "::" << name
+       << "(const ::std::string& __name, const ::std::string& __facet)";
+     C.inc();
+     C << nl << ": Freeze::Index(__name, __facet)";
+@@ -1229,7 +1230,7 @@ writeIndexC(const TypePtr& type, const TypePtr& memberType, const string& member
+     C << eb;
+ 
+     string typeString = typeToString(type);
+-    
++
+     C << sp << nl << "bool";
+     C << nl << fullName << "::" << "marshalKey(const Ice::ObjectPtr& __servant, Freeze::Key& __bytes) const";
+     C << sb;
+@@ -1244,13 +1245,13 @@ writeIndexC(const TypePtr& type, const TypePtr& memberType, const string& member
+     C << nl << "return false;";
+     C << eb;
+     C << eb;
+-    
++
+     C << sp << nl << "void";
+     C << nl << fullName << "::" << "marshalKey(" << inputType << " __index, Freeze::Key& __bytes) const";
+     C << sb;
+     C << nl << "IceInternal::InstancePtr __instance = IceInternal::getInstance(_communicator);";
+     C << nl << "IceInternal::BasicStream __stream(__instance.get());";
+-    
++
+     string valueS;
+     if(caseSensitive)
+     {
+@@ -1286,12 +1287,12 @@ writeIndex(const string& n, const UnitPtr& u, const Index& index, Output& H, Out
+     {
+         string s = name.substr(0, pos);
+         name.erase(0, pos + 2);
+-        
++
+         checkIdentifier(absolute, s);
+-        
++
+         scope.push_back(s);
+     }
+-    
++
+     checkIdentifier(absolute, name);
+ 
+     TypeList types = u->lookupType(index.type, false);
+@@ -1302,7 +1303,7 @@ writeIndex(const string& n, const UnitPtr& u, const Index& index, Output& H, Out
+         throw os.str();
+     }
+     TypePtr type = types.front();
+-    
++
+     ClassDeclPtr classDecl = ClassDeclPtr::dynamicCast(type);
+     if(classDecl == 0)
+     {
+@@ -1332,7 +1333,7 @@ writeIndex(const string& n, const UnitPtr& u, const Index& index, Output& H, Out
+         os << "`" << index.type << "' has no data member named `" << index.member << "'";
+         throw os.str();
+     }
+-    
++
+     if(index.caseSensitive == false)
+     {
+         //
+@@ -1346,9 +1347,9 @@ writeIndex(const string& n, const UnitPtr& u, const Index& index, Output& H, Out
+             throw os.str();
+         }
+     }
+-   
++
+     vector<string>::const_iterator q;
+-    
++
+     for(q = scope.begin(); q != scope.end(); ++q)
+     {
+         H << sp;
+@@ -1356,7 +1357,7 @@ writeIndex(const string& n, const UnitPtr& u, const Index& index, Output& H, Out
+     }
+ 
+     writeIndexH(inputTypeToString(dataMember->type()), name, H, dllExport);
+-    
++
+     for(q = scope.begin(); q != scope.end(); ++q)
+     {
+         H << sp;
+@@ -1491,7 +1492,7 @@ gen(const string& name, const UnitPtr& u, const vector<string>& includePaths, co
+         for(vector<Dict>::const_iterator p = dicts.begin(); p != dicts.end(); ++p)
+         {
+             writeDict(name, u, *p, H, CPP, dllExport);
+-        } 
++        }
+ 
+         for(vector<Index>::const_iterator q = indices.begin(); q != indices.end(); ++q)
+         {
+@@ -1528,7 +1529,7 @@ compile(int argc, char* argv[])
+     opts.addOpt("d", "debug");
+     opts.addOpt("", "ice");
+     opts.addOpt("", "underscore");
+-     
++
+     vector<string> args;
+     try
+     {
+@@ -1596,7 +1597,7 @@ compile(int argc, char* argv[])
+     for(i = optargs.begin(); i != optargs.end(); ++i)
+     {
+         string s = IceUtilInternal::removeWhitespace(*i);
+-        
++
+         Dict dict;
+ 
+         string::size_type pos;
+@@ -1722,13 +1723,13 @@ compile(int argc, char* argv[])
+ 
+         dicts.push_back(dict);
+     }
+-    
++
+     vector<Index> indices;
+     optargs = opts.argVec("index");
+     for(i = optargs.begin(); i != optargs.end(); ++i)
+     {
+         string s = IceUtilInternal::removeWhitespace(*i);
+-        
++
+         Index index;
+ 
+         string::size_type pos;
+@@ -1778,7 +1779,7 @@ compile(int argc, char* argv[])
+             usage(argv[0]);
+             return EXIT_FAILURE;
+         }
+-        
++
+         if(caseString != "case-sensitive" && caseString != "case-insensitive")
+         {
+             getErrorStream() << argv[0] << ": error: " << *i << ": the case can be `case-sensitive' or "
+@@ -1795,7 +1796,7 @@ compile(int argc, char* argv[])
+     for(i = optargs.begin(); i != optargs.end(); ++i)
+     {
+         string s = IceUtilInternal::removeWhitespace(*i);
+-        
++
+         string dictName;
+         DictIndex index;
+         index.sort = false;
+@@ -1852,7 +1853,7 @@ compile(int argc, char* argv[])
+                 {
+                     string subs = s.substr(0, pos);
+                     s.erase(0, pos + 1);
+-                    
++
+                     if(subs == "sort")
+                     {
+                         index.sort = true;
+@@ -1887,7 +1888,7 @@ compile(int argc, char* argv[])
+                 }
+             }
+         }
+-            
++
+         if(dictName.empty())
+         {
+             getErrorStream() << argv[0] << ": error: " << *i << ": no dictionary specified" << endl;
+@@ -1902,7 +1903,7 @@ compile(int argc, char* argv[])
+             {
+                 if(find(p->indices.begin(), p->indices.end(), index) != p->indices.end())
+                 {
+-                    getErrorStream() << argv[0] << ": error: --dict-index " << *i 
++                    getErrorStream() << argv[0] << ": error: --dict-index " << *i
+                          << ": this dict-index is defined twice" << endl;
+                     return EXIT_FAILURE;
+                 }
+@@ -1991,7 +1992,7 @@ compile(int argc, char* argv[])
+         if(!icecpp->close())
+         {
+             u->destroy();
+-            return EXIT_FAILURE;            
++            return EXIT_FAILURE;
+         }
+ 
+         {
+@@ -2038,7 +2039,7 @@ compile(int argc, char* argv[])
+             return EXIT_FAILURE;
+         }
+     }
+-    
++
+     u->destroy();
+ 
+     {
+diff --git a/cpp/test/Ice/binding/AllTests.cpp b/cpp/test/Ice/binding/AllTests.cpp
+index cbb8fa2..eac3fa9 100644
+--- a/cpp/test/Ice/binding/AllTests.cpp
++++ b/cpp/test/Ice/binding/AllTests.cpp
+@@ -13,6 +13,7 @@
+ #include <Test.h>
+ #include <set>
+ 
++#include <cstddef>
+ #include <functional>
+ 
+ using namespace std;
+@@ -112,13 +113,13 @@ allTests(const Ice::CommunicatorPtr& communicator)
+ 
+         test1->ice_ping();
+         test2->ice_ping();
+-        
++
+         com->deactivateObjectAdapter(adapter);
+-        
++
+         TestIntfPrx test3 = TestIntfPrx::uncheckedCast(test1);
+         test(test3->ice_getConnection() == test1->ice_getConnection());
+         test(test3->ice_getConnection() == test2->ice_getConnection());
+-        
++
+         try
+         {
+             test3->ice_ping();
+@@ -157,7 +158,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+ 
+             test(test1->ice_getConnection() == test2->ice_getConnection());
+             test(test2->ice_getConnection() == test3->ice_getConnection());
+-            
++
+             names.erase(test1->getAdapterName());
+             test1->ice_getConnection()->close(false);
+         }
+@@ -171,7 +172,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+             {
+                 (*p)->getTestIntf()->ice_ping();
+             }
+-            
++
+             TestIntfPrx test = createTestIntfPrx(adapters);
+             string name = test->getAdapterName();
+             const int nRetry = 10;
+@@ -183,7 +184,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+             {
+                 (*q)->getTestIntf()->ice_getConnection()->close(false);
+             }
+-        }           
++        }
+ 
+         //
+         // Deactivate an adapter and ensure that we can still
+@@ -201,21 +202,21 @@ allTests(const Ice::CommunicatorPtr& communicator)
+             TestIntfPrx test2 = createTestIntfPrx(adpts);
+             random_shuffle(adpts.begin(), adpts.end(), rng);
+             TestIntfPrx test3 = createTestIntfPrx(adpts);
+-            
++
+             test(test1->ice_getConnection() == test2->ice_getConnection());
+             test(test2->ice_getConnection() == test3->ice_getConnection());
+ 
+             names.erase(test1->getAdapterName());
+             test1->ice_getConnection()->close(false);
+         }
+-        
++
+         //
+         // Deactivate an adapter and ensure that we can still
+         // establish the connection to the remaining adapter.
+         //
+-        com->deactivateObjectAdapter(adapters[2]);      
++        com->deactivateObjectAdapter(adapters[2]);
+         TestIntfPrx test = createTestIntfPrx(adapters);
+-        test(test->getAdapterName() == "Adapter12");    
++        test(test->getAdapterName() == "Adapter12");
+ 
+         deactivate(com, adapters);
+     }
+@@ -270,7 +271,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+                 }
+                 proxies[i] = createTestIntfPrx(adpts);
+             }
+-            
++
+             for(i = 0; i < proxies.size(); i++)
+             {
+                 proxies[i]->begin_getAdapterName();
+@@ -337,7 +338,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+ 
+             test(test1->ice_getConnection() == test2->ice_getConnection());
+             test(test2->ice_getConnection() == test3->ice_getConnection());
+-            
++
+             names.erase(getAdapterNameWithAMI(test1));
+             test1->ice_getConnection()->close(false);
+         }
+@@ -351,7 +352,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+             {
+                 (*p)->getTestIntf()->ice_ping();
+             }
+-            
++
+             TestIntfPrx test = createTestIntfPrx(adapters);
+             string name = getAdapterNameWithAMI(test);
+             const int nRetry = 10;
+@@ -363,7 +364,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+             {
+                 (*q)->getTestIntf()->ice_getConnection()->close(false);
+             }
+-        }           
++        }
+ 
+         //
+         // Deactivate an adapter and ensure that we can still
+@@ -381,21 +382,21 @@ allTests(const Ice::CommunicatorPtr& communicator)
+             TestIntfPrx test2 = createTestIntfPrx(adpts);
+             random_shuffle(adpts.begin(), adpts.end(), rng);
+             TestIntfPrx test3 = createTestIntfPrx(adpts);
+-            
++
+             test(test1->ice_getConnection() == test2->ice_getConnection());
+             test(test2->ice_getConnection() == test3->ice_getConnection());
+ 
+             names.erase(test1->getAdapterName());
+             test1->ice_getConnection()->close(false);
+         }
+-        
++
+         //
+         // Deactivate an adapter and ensure that we can still
+         // establish the connection to the remaining adapter.
+         //
+-        com->deactivateObjectAdapter(adapters[2]);      
++        com->deactivateObjectAdapter(adapters[2]);
+         TestIntfPrx test = createTestIntfPrx(adapters);
+-        test(test->getAdapterName() == "AdapterAMI12"); 
++        test(test->getAdapterName() == "AdapterAMI12");
+ 
+         deactivate(com, adapters);
+     }
+@@ -463,7 +464,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+         for(i = 0; i < nRetry && test->getAdapterName() == "Adapter33"; i++);
+         test(i == nRetry);
+         com->deactivateObjectAdapter(adapters[2]);
+-        
++
+         try
+         {
+             test->getAdapterName();
+@@ -479,7 +480,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+         //
+         // Now, re-activate the adapters with the same endpoints in the opposite
+         // order.
+-        // 
++        //
+         adapters.push_back(com->createObjectAdapter("Adapter36", endpoints[2]->toString()));
+         for(i = 0; i < nRetry && test->getAdapterName() == "Adapter36"; i++);
+         test(i == nRetry);
+@@ -507,9 +508,9 @@ allTests(const Ice::CommunicatorPtr& communicator)
+         test(test1->ice_getConnection() == test2->ice_getConnection());
+ 
+         test1->ice_ping();
+-        
++
+         com->deactivateObjectAdapter(adapter);
+-        
++
+         TestIntfPrx test3 = TestIntfPrx::uncheckedCast(test1);
+         try
+         {
+@@ -553,7 +554,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+         com->deactivateObjectAdapter(adapters[2]);
+ 
+         test(test->getAdapterName() == "Adapter52");
+-        
++
+         deactivate(com, adapters);
+     }
+     cout << "ok" << endl;
+@@ -589,7 +590,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+         com->deactivateObjectAdapter(adapters[2]);
+ 
+         test(test->getAdapterName() == "AdapterAMI52");
+-        
++
+         deactivate(com, adapters);
+     }
+     cout << "ok" << endl;
+@@ -622,7 +623,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+         for(i = 0; i < nRetry && test->getAdapterName() == "Adapter63"; i++);
+         test(i == nRetry);
+         com->deactivateObjectAdapter(adapters[2]);
+-        
++
+         try
+         {
+             test->getAdapterName();
+@@ -638,7 +639,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+         //
+         // Now, re-activate the adapters with the same endpoints in the opposite
+         // order.
+-        // 
++        //
+         adapters.push_back(com->createObjectAdapter("Adapter66", endpoints[2]->toString()));
+         for(i = 0; i < nRetry && test->getAdapterName() == "Adapter66"; i++);
+         test(i == nRetry);
+@@ -681,7 +682,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+         for(i = 0; i < nRetry && getAdapterNameWithAMI(test) == "AdapterAMI63"; i++);
+         test(i == nRetry);
+         com->deactivateObjectAdapter(adapters[2]);
+-        
++
+         try
+         {
+             test->getAdapterName();
+@@ -697,7 +698,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+         //
+         // Now, re-activate the adapters with the same endpoints in the opposite
+         // order.
+-        // 
++        //
+         adapters.push_back(com->createObjectAdapter("AdapterAMI66", endpoints[2]->toString()));
+         for(i = 0; i < nRetry && getAdapterNameWithAMI(test) == "AdapterAMI66"; i++);
+         test(i == nRetry);
+@@ -720,7 +721,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+ 
+         TestIntfPrx test = createTestIntfPrx(adapters);
+         test(test->getAdapterName() == "Adapter71");
+-        
++
+         TestIntfPrx testUDP = TestIntfPrx::uncheckedCast(test->ice_datagram());
+         test(test->ice_getConnection() != testUDP->ice_getConnection());
+         try
+@@ -740,7 +741,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+             vector<RemoteObjectAdapterPrx> adapters;
+             adapters.push_back(com->createObjectAdapter("Adapter81", "ssl"));
+             adapters.push_back(com->createObjectAdapter("Adapter82", "tcp"));
+-            
++
+             TestIntfPrx test = createTestIntfPrx(adapters);
+             int i;
+             for(i = 0; i < 5; i++)
+@@ -748,7 +749,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+                 test(test->getAdapterName() == "Adapter82");
+                 test->ice_getConnection()->close(false);
+             }
+-            
++
+             TestIntfPrx testSecure = TestIntfPrx::uncheckedCast(test->ice_secure(true));
+             test(testSecure->ice_isSecure());
+             testSecure = TestIntfPrx::uncheckedCast(test->ice_secure(false));
+@@ -758,7 +759,7 @@ allTests(const Ice::CommunicatorPtr& communicator)
+             test(test->ice_getConnection() != testSecure->ice_getConnection());
+ 
+             com->deactivateObjectAdapter(adapters[1]);
+-            
++
+             for(i = 0; i < 5; i++)
+             {
+                 test(test->getAdapterName() == "Adapter81");
diff --git a/ice-3.4.1-jgoodies.patch b/ice-3.4.1-jgoodies.patch
new file mode 100644
index 0000000..3e81cdf
--- /dev/null
+++ b/ice-3.4.1-jgoodies.patch
@@ -0,0 +1,12 @@
+diff --git a/java/src/IceGridGUI/ApplicationPane.java b/java/src/IceGridGUI/ApplicationPane.java
+index 10bd1c3..cfff61c 100644
+--- a/java/src/IceGridGUI/ApplicationPane.java
++++ b/java/src/IceGridGUI/ApplicationPane.java
+@@ -29,7 +29,6 @@ import javax.swing.tree.TreeSelectionModel;
+ 
+ import com.jgoodies.looks.Options;
+ import com.jgoodies.looks.plastic.PlasticLookAndFeel;
+-import com.jgoodies.looks.windows.WindowsLookAndFeel;
+ import com.jgoodies.forms.factories.Borders;
+ 
+ import IceGrid.*;
diff --git a/ice.ini b/ice.ini
new file mode 100644
index 0000000..f9c9870
--- /dev/null
+++ b/ice.ini
@@ -0,0 +1 @@
+extension=IcePHP.so
diff --git a/ice.pth b/ice.pth
new file mode 100644
index 0000000..4c67afd
--- /dev/null
+++ b/ice.pth
@@ -0,0 +1,4 @@
+# This file belongs in the "site-packages" directory of a Python
+# installation. It causes the interpreter to add the subdirectory
+# listed below to the default module search path.
+Ice
diff --git a/ice.spec b/ice.spec
index 8a42465..7a7745b 100644
--- a/ice.spec
+++ b/ice.spec
@@ -6,40 +6,37 @@
 %global php_apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1)
 
 Name: ice
-Version: 3.4.0
-Release: 4%{?dist}
+Version: 3.4.1
+Release: 1%{?dist}
 Summary: The Ice base runtime and services
 
 Group: System Environment/Libraries
 License: GPLv2 with exceptions
 URL: http://www.zeroc.com/
 Source0:        http://zeroc.com/download/Ice/3.4/Ice-%{version}.tar.gz
-# Extracted from http://zeroc.com/download/Ice/3.4/ice-3.4.0-1.src.rpm
-Source1:        Ice-rpmbuild-%{version}.tar.gz
 # Man pages courtesy of Francisco Moya's Debian packages
-Source2:        Ice-3.3.0-man-pages.tbz
-Source8:        icegridgui
-Source9:        IceGridAdmin.desktop
-Source10:       Ice-README.Fedora
-# Don't build the demo or test directories
-Patch0:         Ice-3.3-dont-build-demo-test.patch
-# Don't put manifest in jar; don't build demo or test; use system jgoodies
-Patch1:         Ice-3.4.0-java-build.patch
+Source1:        ice-3.4.1-man-pages.tar.gz
+Source2:        icegridgui
+Source3:        IceGridAdmin.desktop
+Source4:	Ice-README.Fedora
+Source5:	glacier2router.conf
+Source6:	glacier2router.init
+Source7:	icegridnode.conf
+Source8:	icegridnode.init
+Source9:	icegridregistry.conf
+Source10:	icegridregistry.init
+Source11:	ice.ini
+Source12:	ice.pth
 # Remove reference to Windows L&F
-Patch2:         Ice-3.3.1-jgoodies.patch
-# Work with all versions of openssl
-Patch3:         Ice-3.3.1-openssl.patch
-
-# Change user in server scripts from "ice" to "iceuser" to match the config
-# Fixed bug 557411
-Patch4:		Ice-rpmbuild-change-user.patch
-
-# Fix slice2cpp stream issue
-# http://www.zeroc.com/forums/attachments/patches/745d1268183564-patch-1-ice-3-4-0-slice2cpp-stream-issue-patch-stream.txt
-Patch5:		patch-stream.txt
-
+Patch0:         ice-3.4.1-jgoodies.patch
+# fix gcc46 issue
+Patch1:         ice-3.4.1-gcc46.patch
 # Add support for the s390/s390x architecture
-Patch6:         Ice-3.4.0-s390.patch
+Patch2:         Ice-3.4.0-s390.patch
+# don't build demo/test
+# TODO: should we keep it or not ?
+# significantly reduce compile time but shipping demos could be useful
+Patch3:        Ice-3.3-dont-build-demo-test.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -58,9 +55,7 @@ BuildRequires: python-devel
 BuildRequires: mono-core, mono-devel
 BuildRequires: libmcpp-devel >= 2.7.2
 BuildRequires: dos2unix
-
 BuildRequires:  java-1.6.0-openjdk-devel
-
 BuildRequires:  jgoodies-forms, jgoodies-looks
 BuildRequires:  /usr/bin/convert
 BuildRequires:  desktop-file-utils
@@ -191,16 +186,12 @@ Requires: ice-php = %{version}-%{release}
 Tools for developing Ice applications in PHP.
 
 %prep
-%setup -n Ice-%{version} -q
+%setup -q -n Ice-%{version} 
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
-%patch5 -p1
-%patch6 -p1
-%setup -q -n Ice-rpmbuild-%{version} -T -b 1
-%patch4 -p1
-%setup -q -n Ice-3.3.0-man-pages -T -b 2
+%setup -q -n ice-3.4.1-man-pages -T -b 1
 rm -f slice2docbook.1
 
 %build
@@ -249,32 +240,36 @@ mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/icons/hicolor/48x48/apps/
 cp -p ${RPM_BUILD_DIR}/Ice-%{version}/java/resources/icons/icegrid.png \
         ${RPM_BUILD_ROOT}%{_datadir}/icons/hicolor/48x48/apps/
 mkdir -p ${RPM_BUILD_ROOT}%{_bindir}
-cp -p %{SOURCE8} ${RPM_BUILD_ROOT}%{_bindir}
+cp -p %{SOURCE2} ${RPM_BUILD_ROOT}%{_bindir}
 sed -i -e "s#DIR#%{_datadir}/Ice-%{version}#" $RPM_BUILD_ROOT%{_bindir}/icegridgui
+
 %if 0%{?rhel}
 desktop-file-install \
         --dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
 	--vendor = zeroc \
-        %{SOURCE9}
+        %{SOURCE3}
 %else
 desktop-file-install \
         --dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
-        %{SOURCE9}
+        %{SOURCE3}
 %endif
 
 # Move other rpm-specific files into the right place (README, service stuff)
 mkdir -p $RPM_BUILD_ROOT%{_defaultdocdir}/Ice-%{version}
-cp -p %{SOURCE10} $RPM_BUILD_ROOT/%{_defaultdocdir}/Ice-%{version}/README.Fedora
-cp -p $RPM_BUILD_DIR/Ice-rpmbuild-%{version}/ice.ini $RPM_BUILD_ROOT/ice.ini
+cp -p %{SOURCE4} $RPM_BUILD_ROOT/%{_defaultdocdir}/Ice-%{version}/README.Fedora
 
 # Install the servers
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}
-cp -p $RPM_BUILD_DIR/Ice-rpmbuild-%{version}/*.conf $RPM_BUILD_ROOT%{_sysconfdir}
-mkdir -p $RPM_BUILD_ROOT%{_initrddir}
-for i in icegridregistry icegridnode glacier2router
-do
-    cp -p $RPM_BUILD_DIR/Ice-rpmbuild-%{version}/$i.%{_vendor} $RPM_BUILD_ROOT%{_initrddir}/$i
-done
+mkdir -p $RPM_BUILD_ROOT%{_initddir}
+## glacier2router
+cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/
+cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_initddir}/glacier2router
+## icegridnode
+cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/
+cp -p %{SOURCE8} $RPM_BUILD_ROOT%{_initddir}/icegridnode
+## icegridregistry
+cp -p %{SOURCE9} $RPM_BUILD_ROOT%{_sysconfdir}/
+cp -p %{SOURCE10} $RPM_BUILD_ROOT%{_initddir}/icegridregistry
 mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/icegrid
 
 # "make install" assumes it's going into a directory under /opt.
@@ -294,7 +289,7 @@ mv $RPM_BUILD_ROOT/help/IceGridAdmin $RPM_BUILD_ROOT%{_defaultdocdir}/Ice-%{vers
 
 # Copy the man pages into the correct directory
 mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
-cp -p $RPM_BUILD_DIR/Ice-3.3.0-man-pages/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
+cp -p $RPM_BUILD_DIR/ice-3.4.1-man-pages/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
 
 # Fix the encoding and line-endings of all the IceGridAdmin documentation files
 cd $RPM_BUILD_ROOT%{_defaultdocdir}/Ice-%{version}/IceGridAdmin
@@ -320,7 +315,7 @@ done
 
 # Put the PHP stuff into the right place
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/php.d
-mv $RPM_BUILD_ROOT/ice.ini $RPM_BUILD_ROOT%{_sysconfdir}/php.d
+mv %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/php.d
 mkdir -p ${RPM_BUILD_ROOT}%{php_extdir}
 mv ${RPM_BUILD_ROOT}/php/IcePHP.so ${RPM_BUILD_ROOT}%{php_extdir}
 mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/php
@@ -336,7 +331,7 @@ mkdir -p ${RPM_BUILD_ROOT}%{ruby_sitearch}
 mv $RPM_BUILD_ROOT/ruby/* ${RPM_BUILD_ROOT}%{ruby_sitearch}
 mkdir -p ${RPM_BUILD_ROOT}%{python_sitearch}/Ice
 mv ${RPM_BUILD_ROOT}/python/* ${RPM_BUILD_ROOT}%{python_sitearch}/Ice
-cp -p $RPM_BUILD_DIR/Ice-rpmbuild-%{version}/ice.pth $RPM_BUILD_ROOT%{python_sitearch}
+cp -p %{SOURCE12} $RPM_BUILD_ROOT%{python_sitearch}
 
 mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/Ice-%{version}
 mv $RPM_BUILD_ROOT/config/* ${RPM_BUILD_ROOT}%{_datadir}/Ice-%{version}
@@ -404,9 +399,9 @@ rm -rf $RPM_BUILD_ROOT
 
 %files servers
 %defattr(-,root,root,-)
-%{_initrddir}/icegridregistry
-%{_initrddir}/icegridnode
-%{_initrddir}/glacier2router
+%{_initddir}/icegridregistry
+%{_initddir}/icegridnode
+%{_initddir}/glacier2router
 %config(noreplace) %{_sysconfdir}/icegridregistry.conf
 %config(noreplace) %{_sysconfdir}/icegridnode.conf
 %config(noreplace) %{_sysconfdir}/glacier2router.conf
@@ -491,14 +486,13 @@ fi
 %{_libdir}/mono/IceGrid/
 %{_libdir}/mono/IcePatch2/
 %{_libdir}/mono/IceStorm/
-
 %{_libdir}/mono/gac/Glacier2
 %{_libdir}/mono/gac/Ice
 %{_libdir}/mono/gac/IceBox
 %{_libdir}/mono/gac/IceGrid
 %{_libdir}/mono/gac/IcePatch2
 %{_libdir}/mono/gac/IceStorm
-
+%{_libdir}/mono/gac/policy*
 %{_bindir}/iceboxnet.exe
 %doc %{_mandir}/man1/iceboxnet.exe.1.gz
 
@@ -543,6 +537,12 @@ fi
 %{_bindir}/slice2php
 
 %changelog
+* Sat Feb 12 2011 Haïkel Guémar <hguemar at fedoraproject.org> - 3.4.1-1
+- upstream 3.4.1
+- fix gcc46 build issue
+- some spec cleaning and patches revamping (dropped: java, openssl)
+- updated man pages from Francisco Moya Debian's package
+
 * Wed Feb 09 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 3.4.0-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
 
diff --git a/icegridnode.conf b/icegridnode.conf
new file mode 100644
index 0000000..4d2efd3
--- /dev/null
+++ b/icegridnode.conf
@@ -0,0 +1,48 @@
+#
+# Sample configuration file for the IceGrid node daemon
+#
+
+#
+# Proxy to the IceGrid registry
+#
+Ice.Default.Locator=DemoIceGrid/Locator:tcp -h localhost -p 4061
+#Ice.Default.Locator=DemoIceGrid/Locator:ssl -h localhost -p 4062
+
+#
+# The name of this node; must be unique within an IceGrid deployment
+#
+IceGrid.Node.Name=node1
+
+#
+# The node object adapter listens on the loopback interface using an
+# OS-assigned port
+#
+# These endpoints must be accessible to IceGrid registries.
+#
+# To listen on an additional interface add an additional endpoint with
+# -h <name | IP address> or remove -h localhost to listen on all
+# interfaces. Note that access to these endpoints can pose a security
+# risk (remote code execution) and therefore these endpoints should be
+# secured. See the Ice manual for more information.
+#
+IceGrid.Node.Endpoints=tcp -h localhost
+
+#
+# The directory where the IceGrid node maintains its data
+# (server configuration files etc.)
+# This directory must exist when icegridnode starts
+#
+IceGrid.Node.Data=/var/lib/ice/icegrid/node1
+
+#
+# Redirect the servers'stdout and stderr to files in this directory:
+#
+IceGrid.Node.Output=/var/lib/ice/icegrid/node1
+#IceGrid.Node.RedirectErrToOut=1
+
+#
+# Logging to syslog
+#
+Ice.UseSyslog=1
+Ice.ProgramName=icegridnode (DemoIceGrid node1)
+IceGrid.Node.Trace.Replica=2
diff --git a/icegridnode.init b/icegridnode.init
new file mode 100755
index 0000000..f400d11
--- /dev/null
+++ b/icegridnode.init
@@ -0,0 +1,111 @@
+#!/bin/bash
+#
+# Copyright (c) 2007-2010 ZeroC, Inc. All rights reserved.
+#
+# icegridnode   This shell script takes care of starting and 
+#               stopping the icegridnode daemon.
+#
+# chkconfig: - 61 75
+# description: The IceGrid node daemon. \
+# IceGrid is the server deployment and monitoring for the Internet \
+# Communications Engine (Ice). An IceGrid domain consists of one master \
+# registry, zero or more slave registries, and zero or more IceGrid nodes.
+
+#
+# Source function library.
+#
+. /etc/init.d/functions
+
+#
+# The IceGrid node user; root is allowed, but not necessary, therefore
+# it is recommended to use a non-root account.
+#
+user=iceuser
+
+#
+# Ask for a password at startup?
+#
+prompt=no
+
+#
+# The IceGrid node configuration file
+#
+nodeconf="/etc/icegridnode.conf"
+
+prog="/usr/bin/icegridnode"
+
+progbase=${prog##*/}
+pidfile=/var/run/$progbase.pid
+
+options="--daemon --pidfile $pidfile --Ice.Config=$nodeconf"
+
+RETVAL=0
+
+start() {
+        if [ "${prompt:-}" = "yes" ]
+        then
+           echo $"Starting $progbase: "
+           INITLOG_ARGS=              # clears -q
+        else
+           echo -n $"Starting $progbase: "
+        fi
+
+        daemonoptions="--pidfile $pidfile"
+        if [ "$user" != "root" ]
+        then
+            daemonoptions="$daemonoptions --user $user"
+    
+            if [ ! -e $pidfile ]
+            then
+                touch $pidfile
+            fi
+            chown $user $pidfile
+        fi           
+
+        daemon $daemonoptions $prog $options
+        RETVAL=$?
+        echo
+        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$progbase
+        return $RETVAL
+}
+
+stop() {
+        echo -n $"Shutting down $progbase: "
+        killproc -p $pidfile $prog
+        RETVAL=$?
+        echo
+        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$progbase
+        return $RETVAL
+}
+
+
+# See how we were called.
+case "$1" in
+  start)
+        start
+        ;;
+  stop)
+        stop
+        ;;
+  status)
+        status $progbase
+        RETVAL=$?
+        ;;
+  restart|reload)
+        stop
+        start
+        RETVAL=$?
+        ;;
+  condrestart)
+        if [ -f /var/lock/subsys/$progbase ]; then
+            stop
+            start
+            RETVAL=$?
+        fi
+        ;;
+  *)
+        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
+        exit 1
+esac
+
+exit $RETVAL
diff --git a/icegridregistry.conf b/icegridregistry.conf
new file mode 100644
index 0000000..e64303a
--- /dev/null
+++ b/icegridregistry.conf
@@ -0,0 +1,70 @@
+#
+# Sample configuration file for the IceGrid registry daemon
+#
+
+#
+# The IceGrid instance name; must be unique, to distinguish several
+# IceGrid deployments
+#
+IceGrid.InstanceName=DemoIceGrid
+
+#
+# Client object adapter: listens on the loopback interface
+# IANA-registered TCP ports for the IceGrid registry:
+# - 4061 (insecure)
+# - 4062 (secure, using SSL)
+#
+# These endpoints must be accessible to Ice clients and servers as
+# well as the IceGrid administrative utilities.
+#
+# To listen on an additional interface add an additional endpoint with
+# -h <name | IP address> or remove -h localhost to listen on all
+# interfaces.
+#
+IceGrid.Registry.Client.Endpoints=tcp -p 4061 -h localhost
+#IceGrid.Registry.Client.Endpoints=ssl -p 4062 -h localhost
+#IceGrid.Registry.Client.Endpoints=tcp -p 4061 -h localhost:ssl -p 4062 -h localhost
+
+#
+# Server and Internal object adapters: listens on the loopback
+# interface using an OS-assigned port number.
+#
+# The Server endpoints must be accessible to Ice servers deployed on
+# IceGrid nodes or to Ice servers using IceGrid dynamic
+# registration. The Internal endpoints must be accessible to IceGrid
+# nodes.
+#
+# To listen on an additional interface add an additional endpoint with
+# -h <name | IP address> or remove -h localhost to listen on all
+# interfaces. Note that access to these endpoints can pose a security
+# risk (remote code execution) and therefore these endpoints should be
+# secured. See the Ice manual for more information.
+#
+IceGrid.Registry.Server.Endpoints=tcp -h localhost
+IceGrid.Registry.Internal.Endpoints=tcp -h localhost
+
+#
+# The registry DB home; must exist when icegridregistry starts
+#
+IceGrid.Registry.Data=/var/lib/ice/icegrid/registry
+
+#
+# Authentication/authorization
+# With NullPermissionsVerifier, any password is accepted (not recommended
+# for production)
+#
+IceGrid.Registry.PermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
+IceGrid.Registry.AdminPermissionsVerifier=DemoIceGrid/NullPermissionsVerifier
+
+#
+# Default templates
+#
+IceGrid.Registry.DefaultTemplates=/usr/share/Ice-3.4.1/templates.xml
+
+#
+# Logging to syslog
+#
+Ice.UseSyslog=1
+Ice.ProgramName=icegridregistry (DemoIceGrid Master)
+IceGrid.Registry.Trace.Node=1
+IceGrid.Registry.Trace.Replica=1
diff --git a/icegridregistry.init b/icegridregistry.init
new file mode 100755
index 0000000..1e9eae9
--- /dev/null
+++ b/icegridregistry.init
@@ -0,0 +1,111 @@
+#!/bin/bash
+#
+# Copyright (c) 2007-2010 ZeroC, Inc. All rights reserved.
+#
+# icegridregistry   This shell script takes care of starting and 
+#                   stopping the icegridregistry daemon.
+#
+# chkconfig: - 60 76
+# description: The IceGrid registry daemon. \
+# IceGrid is the server deployment and monitoring for the Internet \
+# Communications Engine (Ice). An IceGrid domain consists of one master \
+# registry, zero or more slave registries, and zero or more IceGrid nodes.
+
+#
+# Source function library.
+#
+. /etc/init.d/functions
+
+#
+# The IceGrid registry user; root is allowed, but not necessary, therefore
+# it is recommended to use a non-root account.
+#
+user=iceuser
+
+#
+# Ask for a password at startup?
+#
+prompt=no
+
+#
+# The IceGrid registry configuration file
+#
+registryconf="/etc/icegridregistry.conf"
+
+prog="/usr/bin/icegridregistry"
+
+progbase=${prog##*/}
+pidfile=/var/run/$progbase.pid
+
+options="--daemon --pidfile $pidfile --Ice.Config=$registryconf"
+
+RETVAL=0
+
+start() {
+        if [ "${prompt:-}" = "yes" ]
+        then
+           echo $"Starting $progbase: "
+           INITLOG_ARGS=              # clears -q
+        else
+           echo -n $"Starting $progbase: "
+        fi
+
+        daemonoptions="--pidfile $pidfile"
+        if [ "$user" != "root" ]
+        then
+            daemonoptions="$daemonoptions --user $user"
+    
+            if [ ! -e $pidfile ]
+            then
+                touch $pidfile
+            fi
+            chown $user $pidfile
+        fi           
+
+        daemon $daemonoptions $prog $options
+        RETVAL=$?
+        echo
+        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$progbase
+        return $RETVAL
+}
+
+stop() {
+        echo -n $"Shutting down $progbase: "
+        killproc -p $pidfile $prog
+        RETVAL=$?
+        echo
+        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$progbase
+        return $RETVAL
+}
+
+
+# See how we were called.
+case "$1" in
+  start)
+        start
+        ;;
+  stop)
+        stop
+        ;;
+  status)
+        status $progbase
+        RETVAL=$?
+        ;;
+  restart|reload)
+        stop
+        start
+        RETVAL=$?
+        ;;
+  condrestart)
+        if [ -f /var/lock/subsys/$progbase ]; then
+            stop
+            start
+            RETVAL=$?
+        fi
+        ;;
+  *)
+        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
+        exit 1
+esac
+
+exit $RETVAL
diff --git a/sources b/sources
index 43fb8d5..3646e64 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,2 @@
-998b10627ade020cb00f5beb73efc0e0  Ice-3.4.0.tar.gz
-869cc60645e7e2b4115584a5ab17d1e9  Ice-rpmbuild-3.4.0.tar.gz
-c6c17ee1be2e6b615af5b40edae88b75  Ice-3.3.0-man-pages.tbz
+3aae42aa47dec74bb258c1a1b2847a1a  Ice-3.4.1.tar.gz
+ca97af2e00687b1b727e068f189b7575  ice-3.4.1-man-pages.tar.gz


More information about the scm-commits mailing list