From cabe5c0ff40f3a67d0d091d1bfdc2948b203737d Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Fri, 11 Oct 2013 11:06:02 +0200 Subject: printf-hook-builtin: Add a new "builtin" backend using its own printf() routines Overloads printf C library functions by a self-contained implementation, based on klibc. Does not yet feature all the required default formatters, including those for floating point values. --- .../utils/printf_hook/printf_hook_builtin.h | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/libstrongswan/utils/printf_hook/printf_hook_builtin.h (limited to 'src/libstrongswan/utils/printf_hook/printf_hook_builtin.h') diff --git a/src/libstrongswan/utils/printf_hook/printf_hook_builtin.h b/src/libstrongswan/utils/printf_hook/printf_hook_builtin.h new file mode 100644 index 000000000..409b5bf3d --- /dev/null +++ b/src/libstrongswan/utils/printf_hook/printf_hook_builtin.h @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See . + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +/** + * @defgroup printf_hook_builtin printf_hook_builtin + * @{ @ingroup utils + */ + +#ifndef PRINTF_HOOK_BUILTIN_H_ +#define PRINTF_HOOK_BUILTIN_H_ + +#include +#include + +int builtin_printf(const char *format, ...); +int builtin_fprintf(FILE *stream, const char *format, ...); +int builtin_sprintf(char *str, const char *format, ...); +int builtin_snprintf(char *str, size_t size, const char *format, ...); +int builtin_asprintf(char **str, const char *format, ...); + +int builtin_vprintf(const char *format, va_list ap); +int builtin_vfprintf(FILE *stream, const char *format, va_list ap); +int builtin_vsprintf(char *str, const char *format, va_list ap); +int builtin_vsnprintf(char *str, size_t size, const char *format, va_list ap); +int builtin_vasprintf(char **str, const char *format, va_list ap); + +#ifdef printf +#undef printf +#endif +#ifdef fprintf +#undef fprintf +#endif +#ifdef sprintf +#undef sprintf +#endif +#ifdef snprintf +#undef snprintf +#endif +#ifdef asprintf +#undef asprintf +#endif +#ifdef vprintf +#undef vprintf +#endif +#ifdef vfprintf +#undef vfprintf +#endif +#ifdef vsprintf +#undef vsprintf +#endif +#ifdef vsnprintf +#undef vsnprintf +#endif +#ifdef vasprintf +#undef vasprintf +#endif + +#define printf builtin_printf +#define fprintf builtin_fprintf +#define sprintf builtin_sprintf +#define snprintf builtin_snprintf +#define asprintf builtin_asprintf + +#define vprintf builtin_vprintf +#define vfprintf builtin_vfprintf +#define vsprintf builtin_vsprintf +#define vsnprintf builtin_vsnprintf +#define vasprintf builtin_vasprintf + +#endif /** PRINTF_HOOK_BUILTIN_H_ @}*/ -- cgit v1.2.3