Differences between revisions 2 and 3
Revision 2 as of 2008-01-21 15:58:08
Size: 2165
Editor: mpiat1403
Comment: Missing documentation
Revision 3 as of 2008-01-21 16:13:39
Size: 2343
Editor: mpiat1403
Comment: Missing documentation
Deletions are marked like this. Additions are marked like this.
Line 26: Line 26:

For specific questions, it might be helpful to browse the [http://mail-archives.apache.org/mod_mbox/apr-dev/ mailing list archives] (which are not searchable, unfortunately).

Using the Apache Portable Runtime (APR)

The goal of the [http://apr.apache.org APR] project is to provide an API to which software developers may code and be assured of predictable if not identical behaviour regardless of the platform on which their software is built, relieving them of the need to code special-case conditions to work around or take advantage of platform-specific deficiencies or features.

It contains, among other things, the following functionality:

  • Reading and writing of files
  • Character set conversion
  • Network communications using sockets
  • String management like C++ including natural order management
  • Filename canonicalization
  • Memory management
  • Global lock management
  • Threads and process management
  • Dynamic library loading routines
  • Memory mapped and shared memory
  • UNIX Password management routines
  • Time management used for internet type conversions

Missing documentation/introductory material

Unfortunately, the official documentation consists of only a Doxygen generated description of the complete [http://apr.apache.org/docs/apr/1.2/ API] (which is, function by function, quite thorough). There is a tutorial at http://dev.ariel-networks.com/apr/apr-tutorial/, but strangely this is not mentioned on the project web site. Moreover, this tutorial is from 2005.

There seems to be no official tutorial.

For specific questions, it might be helpful to browse the [http://mail-archives.apache.org/mod_mbox/apr-dev/ mailing list archives] (which are not searchable, unfortunately).

APR Hello World

The following is a minimal program that makes use of the APR library:

#include <stdio.h>
#include <apr_general.h>

int main(int argc, const char *argv[])
{
    apr_status_t rv;

    rv = apr_initialize();
    if( rv != APR_SUCCESS ) {
      char errbuf[256];
      apr_strerror(rv, errbuf, sizeof(errbuf));
      puts(errbuf);  /* show the error description */
      return -1;
    }

    printf( "Hello APR world!\n");

    apr_terminate();
    return 0;
}

Compiling under Unix

You have to define the macro LARGEFILE64_SOURCE and link against the apr-1 library::

cc -o try-helloworld-APR try-helloworld-APR.c -D_LARGEFILE64_SOURCE -I/usr/include/apr-1.0/ -lapr-1

CompleteSearch: completesearch/UsingAPR (last edited 2008-01-22 16:41:29 by mpiat1403)