From c5ba42dcd4054f9a9bbcb70210fb97e558e53b0a Mon Sep 17 00:00:00 2001 From: Alexander Chernyakhovsky Date: Wed, 11 Sep 2013 17:06:50 -0400 Subject: [PATCH 2/3] Implement the base64 setting type --- src/core/settings.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/core/settings.c b/src/core/settings.c index 0fe8b2e..1314930 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -33,6 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include #include #include +#include #include #include #include @@ -1529,6 +1530,29 @@ struct setting_type setting_type_string __setting_type = { .format = format_string_setting, }; +static int parse_base64_setting ( struct setting_type *type __unused, + const char *value, void *buf, size_t len __unused ) { + return base64_decode(value, buf); + +} + +static int format_base64_setting ( struct setting_type *type __unused, + const void *raw, size_t raw_len, char *buf, + size_t len) { + /* Copy string to buffer, and terminate */ + memset ( buf, 0, len ); + if ( len > raw_len ) + len = raw_len; + base64_encode(raw, raw_len, buf); + return base64_encoded_len(raw_len); +} + +struct setting_type setting_type_base64 __setting_type = { + .name = "base64", + .parse = parse_base64_setting, + .format = format_base64_setting, +}; + /** * Parse URI-encoded string setting value * -- 1.8.4