Inroduction

WarLib is a C++ library I've been working on since year 2000. It's my answer to the lack of standard libraries in C++. While .NET developers have a large number of ready to use classes, native C++ developers must reinvent the most trivial tasks for most of their projects. WarLib is cross-platform, and are ready to be installed on the operating systems I use (Debian GNU/Linux and Microsoft Windows). It can easily be compiled for other Linux distributions.

I started on WarLib to make a foundation for the War FTP Daemon version 3. But I have worked on many open source and commercial projects in the seven years since the library was initiated, and warLib is used in many of them.

 Licensing

WarLib is lisenced under the LGPL license. See www.fsf.org/licensing/licenses/lgpl.html for details.

Requirements

A recent Linux distribution with g++ or Windows XP or newer and Visual Studio 2003/2005.

Warlib depends on the following 3rd party (open source) libraries:

  • OpenSSL
  • libxml
  • libxslt
  • libxmlsec
  • Xerces-C
  • Ice 3.1.1 (from www.zeroc.com)
  • MySQL 5 (client dll only)
  • Sqlite 3
  • Iconv
  • wxwidgets 2.8.0

If you install under Debian/GNU Linux Sarge or later, the required libraries should be installed automatically by apt. If you use Windows, you can install WarLib with all the libraries it depends on from the installation-file.

Features

This features below is just a small subset of the features of warLib

  • Very flexible error logging based on event filtering. It can log to all or any of; file, console, Windws event-log or the Linux syslog). Easy to integrate with applications and 3rd party libraries.
  • MySQL backed PAM certificate management
  • POP3 client
  • SMTP client
  • FTP server class
  • Smart pointers
  • Skeleton SSL server and client
  • High-capacity queued IO (net and disk - only fully implemented for Windows at the moment)
  • Data conversion
  • UTF-8/UTF-16/Unicode
  • System independent path class (add subpaths, deparse paths)
  • URL manipulation
  • XML classes (DOM and very fast XML output)
  • SMS messaging (require an account at a SMS supplier like www.pswin.com)
  • Native daemon class (Linux daemon or Windows service with the same application code)
  • Fast and efficient memory management

 Documentation

Most of the classes are documented with doxygen.

Support

There are several options available for support (you have already used a search-engine to find a solution for your problem, right?)

  • Sourceforge. There are forums etc. for warlib available from Sourceforge.
  • Usenet. The alt.comp.jgaa usenet group. This is a group dedicated for the software written by me (jgaa). It's available from all major news servers, and your local news-admin will most likely add it if you ask gentely. Or you can use the free news-server from Jgaa's Internet: news.jgaa.com
  • Commercial support. I'm running a company, "Konsulent Jarle Aase", who will provide you with commercial support.
    • Single support-case: A single priority support-case costs 70€. Contact me on email to open a support-case.
    • Custom features in WarLib: I will be glad to add new features in WarLib to make it fit your needs 100%. It works this way; you specify the feature you need. I give you a price and a time-frame to add that feature. You pay 50% of the price in advance. I add the feature, and when approved, you pay the remaining 50%. The feature will normally be available for everyone for free in the next public release of WarLib.

Contributions

You can contribute to the project if you want.

  • Spread the word. Free software is not advertized on TV.  The success of the project depends on it's users spreading the word. If you like the library, tell people about it. Write a blog-entry about it. Link to it. Suggest it whenever someone needs a library like this.
  • Report problems and Suggest features. This is the most valuable contribution anyone can provide. Good products are not created by brilliant developers - byt rather by ordinary people who gets over their frustration with the product and suggest improvements, rather than just throwing it away.
  • Write, improve or translate the documentation. English is not my native language, so the documentation I write is far from perfect. As a user of the product, you also have a totally different view of it than I do. You can use that advantage to improve the product documentation radically.
  • Add new features. If you are an experienced  C++ developer, you may hack the code and add new features. If the code-quality is decent, and the feature is useful, i'll most likely add your contribution to the project.
  • Fix bugs. There will always be bugs in software. If you find one, and give me the receipt to kill it, you provide a very important contribution.
  • Find bugs. If you find a bug, but cannot fix it, you contribute to the project by providing me with an exact receipt on how to reproduce the problem.

Download

Current snapshot is version 1.23 [2009-02-06] (Source only from Sourceforge.net). This version contain lots of bug-fixes, improvements, new classes and compatibility enchancements with the latest GNU compiler. A new full release can be expected by mid february 2009.

Current stable release: version 1.21 [2007-09-08] (Debian release still at 1.18)

You can also download from Sourceforge.