diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2021-05-04 19:34:26 -0400 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2021-05-06 17:35:00 -0400 |
commit | 6de4c809c94e93ab2c50d381532258575e87eac4 (patch) | |
tree | 3b1f008d81f0c3e7b83a4c7848a3a076cf1447e5 /src/base64.c | |
parent | 6f942adfe0e622963f591aac4c82d7b12fb75471 (diff) | |
download | lighttpd-git-6de4c809c94e93ab2c50d381532258575e87eac4.tar.gz |
[core] buffer_append_base64_encode_opt()
with option to include or omit padding
single func to handle both:
- buffer_append_base64_encode_no_padding
- buffer_append_base64_encode
Diffstat (limited to 'src/base64.c')
-rw-r--r-- | src/base64.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/base64.c b/src/base64.c index 24d23cb0..2a701e80 100644 --- a/src/base64.c +++ b/src/base64.c @@ -205,25 +205,18 @@ size_t li_to_base64(char* out, size_t out_length, const unsigned char* in, size_ } -char* buffer_append_base64_encode_no_padding(buffer *out, const unsigned char* in, size_t in_length, base64_charset charset) { - size_t reserve = 4*(in_length/3) + 4; - char* result = buffer_string_prepare_append(out, reserve); - size_t out_pos = li_to_base64_no_padding(result, reserve, in, in_length, charset); +char* buffer_append_base64_encode_opt(buffer *out, const unsigned char* in, size_t in_length, base64_charset charset, int pad) { + const size_t reserve = 4*(in_length/3) + 4; + char * const result = buffer_string_prepare_append(out, reserve); + const size_t out_pos = (pad) + ? li_to_base64(result, reserve, in, in_length, charset) + : li_to_base64_no_padding(result, reserve, in, in_length, charset); - buffer_commit(out, out_pos); + buffer_commit(out, out_pos); - return result; + return result; } -char* buffer_append_base64_encode(buffer *out, const unsigned char* in, size_t in_length, base64_charset charset) { - size_t reserve = 4*(in_length/3) + 4; - char* result = buffer_string_prepare_append(out, reserve); - size_t out_pos = li_to_base64(result, reserve, in, in_length, charset); - - buffer_commit(out, out_pos); - - return result; -} unsigned char* buffer_append_base64_decode(buffer *out, const char* in, size_t in_length, base64_charset charset) { const size_t reserve = 3*(in_length/4) + 3; |