summaryrefslogtreecommitdiff
path: root/src/base64.c
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2021-05-04 19:34:26 -0400
committerGlenn Strauss <gstrauss@gluelogic.com>2021-05-06 17:35:00 -0400
commit6de4c809c94e93ab2c50d381532258575e87eac4 (patch)
tree3b1f008d81f0c3e7b83a4c7848a3a076cf1447e5 /src/base64.c
parent6f942adfe0e622963f591aac4c82d7b12fb75471 (diff)
downloadlighttpd-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.c23
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;