Add a wrapper around vstr_add_fmt() to avoid having to link libcharon against libvstr

At least on Android the latter would be required.
This commit is contained in:
Tobias Brunner 2012-08-17 11:47:52 +02:00
parent 21d8392041
commit 7ab348370c
2 changed files with 31 additions and 2 deletions

View File

@ -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
*/

View File

@ -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;\
})