Apache Portable Runtime - Base64

IBM has ported the Base64 module of the Apache Portable Runtime to the IBM i platform for the Axis client. It can be found exported in the service program QSYSDIR/QAXIS10HT.

      /if defined(APR_BASE64_H)
      /eof
      /endif
      /define APR_BASE64_H

       // APR_B64_H --  Include file with definitions for the Base64 routines
       //               included with the Apache Portable Runtime (APR)
       //
       //               On IBM i, this is shipped in the QSYSDIR/QAXIS10HT
       //               service program, which is part of 57xx-SS1 option 3
       //               (57xx-SS1, opt3 = Extended Base Directory Support)

       //  APU_DECLARE(int) apr_base64_encode_len(int len);
       //  APU_DECLARE(int) apr_base64_encode(char * coded_dst, const char *plain_src,
       //                                   int len_plain_src);
       //  APU_DECLARE(int) apr_base64_encode_binary(char * coded_dst,
       //                                          const unsigned char *plain_src,
       //                                          int len_plain_src);
       //  APU_DECLARE(int) apr_base64_decode_len(const char * coded_src);
       //  APU_DECLARE(int) apr_base64_decode(char * plain_dst, const char *coded_src);
       //  APU_DECLARE(int) apr_base64_decode_binary(unsigned char * plain_dst,
       //                                         const char *coded_src);

     D apr_base64_encode_len...
     D                 pr            10i 0 extproc('apr_base64_encode_len')
     D  len                          10i 0 value

     D apr_base64_encode...
     D                 pr            10i 0 extproc('apr_base64_encode')
     D  encoded_dst               65535a   options(*varsize)
     D  plain_src                      *   value options(*string)
     D  source_len                   10i 0 value

     D apr_base64_encode_binary...
     D                 pr            10i 0 extproc('apr_base64_encode_binary')
     D  coded_dst                 65535a   options(*varsize)
     D  plain_src                 65535a   options(*varsize) const
     D  source_len                   10i 0 value

     D apr_base64_encode_binary_ptr...
     D                 pr            10i 0 extproc('apr_base64_encode_binary')
     D  coded_dst                      *
     D  plain_src                      *   const
     D  source_len                   10i 0 value

     D apr_base64_decode_len...
     D                 pr            10i 0 extproc('apr_base64_decode_len')
     D  source_plain                   *   value options(*string)

     D apr_base64_decode...
     D                 pr            10i 0 extproc('apr_base64_decode')
     D  plain_dst                 65535a   options(*varsize)
     D  coded_src                      *   value options(*string)

     D apr_base64_decode_ptr...
     D                 pr            10i 0 extproc('apr_base64_decode')
     D  plain_dst                      *
     D  coded_src                      *   const

     D apr_base64_decode_binary...
     D                 pr            10i 0 extproc('apr_base64_decode_binary')
     D  plain_dst                 65535a   options(*varsize)
     D  coded_src                      *   value options(*string)

     D apr_base64_decode_binary_ptr...
     D                 pr            10i 0 extproc('apr_base64_decode_binary')
     D  plain_dst                      *
     D  coded_src                      *   const