From 12ac04231b8d358e70c830f7958f7efbc0f7c0d1 Mon Sep 17 00:00:00 2001 From: James Cook Date: Thu, 15 Feb 2007 20:24:08 +0000 Subject: merge -r 57761:57967 im-email-session-3, removes database load from IM to email session tracking, introduces new format for email return addresses --- indra/llcommon/llbase64.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 indra/llcommon/llbase64.cpp (limited to 'indra/llcommon/llbase64.cpp') diff --git a/indra/llcommon/llbase64.cpp b/indra/llcommon/llbase64.cpp new file mode 100644 index 0000000000..88e9d960a2 --- /dev/null +++ b/indra/llcommon/llbase64.cpp @@ -0,0 +1,43 @@ +/** + * @file llbase64.cpp + * @brief Wrapper for apr base64 encoding that returns a std::string + * @author James Cook + * + * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "linden_common.h" + +#include "llbase64.h" + +#include + +#include "apr-1/apr_base64.h" + + +// static +std::string LLBase64::encode(const U8* input, size_t input_size) +{ + std::string output; + if (input + && input_size > 0) + { + // Yes, it returns int. + int b64_buffer_length = apr_base64_encode_len(input_size); + char* b64_buffer = new char[b64_buffer_length]; + + // This is faster than apr_base64_encode() if you know + // you're not on an EBCDIC machine. Also, the output is + // null terminated, even though the documentation doesn't + // specify. See apr_base64.c for details. JC + b64_buffer_length = apr_base64_encode_binary( + b64_buffer, + input, + input_size); + output.assign(b64_buffer); + delete[] b64_buffer; + } + return output; +} + -- cgit v1.2.3