From: Tobias Brunner Date: Fri, 17 Aug 2012 09:47:52 +0000 (+0200) Subject: Add a wrapper around vstr_add_fmt() to avoid having to link libcharon against libvstr X-Git-Tag: 5.0.1~183 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ab348370ce072cf7a0af190f596059de0f20246;p=thirdparty%2Fstrongswan.git Add a wrapper around vstr_add_fmt() to avoid having to link libcharon against libvstr At least on Android the latter would be required. --- diff --git a/src/libstrongswan/printf_hook.c b/src/libstrongswan/printf_hook.c index 8bd513c059..6e51aa4c3e 100644 --- a/src/libstrongswan/printf_hook.c +++ b/src/libstrongswan/printf_hook.c @@ -237,6 +237,21 @@ static inline Vstr_conf *get_vstr_conf() return conf; } +/** + * Described in header + */ +size_t vstr_print_in_hook(struct Vstr_base *base, size_t pos, const char *fmt, + ...) +{ + va_list args; + int written; + + va_start(args, fmt); + written = vstr_add_vfmt(base, pos, fmt, args); + va_end(args); + return written; +} + /** * Wrapper functions for printf and alike */ diff --git a/src/libstrongswan/printf_hook.h b/src/libstrongswan/printf_hook.h index b162e6d97b..7d3f23bced 100644 --- a/src/libstrongswan/printf_hook.h +++ b/src/libstrongswan/printf_hook.h @@ -61,7 +61,7 @@ struct printf_hook_data_t { * Helper macro to be used in printf hook callbacks. */ #define print_in_hook(data, fmt, ...) ({\ - int _written = fprintf(data->stream, fmt, ##__VA_ARGS__);\ + ssize_t _written = fprintf(data->stream, fmt, ##__VA_ARGS__);\ if (_written < 0)\ {\ _written = 0;\ @@ -156,11 +156,25 @@ struct printf_hook_data_t { size_t pos; }; +/** + * Wrapper around vstr_add_vfmt(), avoids having to link all users of + * print_in_hook() against libvstr. + * + * @param base Vstr_string to add string to + * @param pos position to write to + * @param fmt format string + * @param ... arguments + * @return number of characters written + */ +size_t vstr_print_in_hook(struct Vstr_base *base, size_t pos, const char *fmt, + ...); + /** * Helper macro to be used in printf hook callbacks. */ #define print_in_hook(data, fmt, ...) ({\ - int _written = vstr_add_fmt(data->base, data->pos, fmt, ##__VA_ARGS__);\ + size_t _written; \ + _written = vstr_print_in_hook(data->base, data->pos, fmt, ##__VA_ARGS__);\ data->pos += _written;\ _written;\ })