
                          Apache Axis2/C Util

  What is it?
  -----------
  Axis2/C Util project is supposed to contain some utilities which are going to be
  used across the Axis2/C platform. Initially this was inside Axis2/C code base
  as util folder. But as the project expands and as related projects were emerging
  there was a need to use those utilities across those projects of Axis2 C platform.
  The resulting was springing of a new project called Axis2 C/Util.
  
  As a project of the Apache Software Foundation, the
  developers aim to collaboratively develop and maintain a robust,
  commercial-grade, standards-based Web Services stack implementation with
  freely available source code.

  The Latest Version
  ------------------

  You can get the latest svn checkout of Apache Axis2/C util module from

  https://svn.apache.org/repos/asf/webservices/axis2/trunk/c/util

  Installation
  ------------

  Please see the file called INSTALL. 

  Licensing
  ---------

  Please see the file called LICENSE.

  Contacts
  --------

     o If you want freely available support for using Apache Axis2/C Util please
       join the Apache Axis2/C user community by subscribing to users mailing
       list, axis-c-user@ws.apache.org' as described at
       http://ws.apache.org/axis2/c/mail-lists.html

     o If you have a bug report for Apache Axis2/C Util please go log a Jira issue
       at http://issues.apache.org/jira/browse/AXIS2C

     o If you want to participate in actively developing Apache Axis2/C Util please
       subscribe to the `axis-c-dev@ws.apache.org' mailing list as described at
       http://ws.apache.org/axis2/c/mail-lists.html

  Acknowledgments
  ----------------

  Apache Axis2/C Util relies heavily on the use of autoconf, automake and libtool
  to provide a build environment.
