#include "libbase64.h" // Function parameters for encoding functions: #define BASE64_ENC_PARAMS \ ( struct base64_state *state \ , const char *src \ , size_t srclen \ , char *out \ , size_t *outlen \ ) // Function parameters for decoding functions: #define BASE64_DEC_PARAMS \ ( struct base64_state *state \ , const char *src \ , size_t srclen \ , char *out \ , size_t *outlen \ ) // This function is used as a stub when a certain encoder is not compiled in. // It discards the inputs and returns zero output bytes. static inline void base64_enc_stub BASE64_ENC_PARAMS { (void) state; (void) src; (void) srclen; (void) out; *outlen = 0; } // This function is used as a stub when a certain decoder is not compiled in. // It discards the inputs and returns an invalid decoding result. static inline int base64_dec_stub BASE64_DEC_PARAMS { (void) state; (void) src; (void) srclen; (void) out; (void) outlen; return -1; } typedef void (* base64_enc_fn) BASE64_ENC_PARAMS; typedef int (* base64_dec_fn) BASE64_DEC_PARAMS; struct codec { base64_enc_fn enc; base64_dec_fn dec; }; extern void codec_choose (struct codec *, int flags);