Added missing Vstr wrappers for asprintf.
[strongswan.git] / src / libstrongswan / printf_hook.c
index aeb15df..9c1757b 100644 (file)
@@ -265,6 +265,15 @@ int vstr_wrapper_snprintf(char *str, size_t size, const char *format, ...)
        va_end(args);
        return written;
 }
+int vstr_wrapper_asprintf(char **str, const char *format, ...)
+{
+       int written;
+       va_list args;
+       va_start(args, format);
+       written = vstr_wrapper_vasprintf(str, format, args);
+       va_end(args);
+       return written;
+}
 static inline int vstr_wrapper_vprintf_internal(int fd, const char *format,
                                                                                                va_list args)
 {
@@ -317,6 +326,26 @@ int vstr_wrapper_vsnprintf(char *str, size_t size, const char *format,
 {
        return (size > 0) ? vstr_wrapper_vsnprintf_internal(str, size, format, args) : 0;
 }
+int vstr_wrapper_vasprintf(char **str, const char *format, va_list args)
+{
+       size_t len = 100;
+       int written;
+       *str = malloc(len);
+       while (TRUE)
+       {
+               va_list ac;
+               va_copy(ac, args);
+               written = vstr_wrapper_vsnprintf_internal(*str, len, format, ac);
+               va_end(ac);
+               if (written < len)
+               {
+                       break;
+               }
+               len = written + 1;
+               *str = realloc(*str, len);
+       }
+       return written;
+}
 
 #endif
 
@@ -333,7 +362,8 @@ static void add_handler(private_printf_hook_t *this, char spec,
 
        if (!IS_VALID_SPEC(spec))
        {
-               DBG1("'%c' is not a valid printf hook specifier, not registered!", spec);
+               DBG1(DBG_LIB, "'%c' is not a valid printf hook specifier, "
+                        "not registered!", spec);
                return;
        }
 
@@ -345,7 +375,8 @@ static void add_handler(private_printf_hook_t *this, char spec,
        {
                if (++i >= ARGS_MAX)
                {
-                       DBG1("Too many arguments for printf hook with specifier '%c', not registered!", spec);
+                       DBG1(DBG_LIB, "Too many arguments for printf hook with "
+                                "specifier '%c', not registered!", spec);
                        va_end(args);
                        free(handler);
                        return;
@@ -427,7 +458,7 @@ printf_hook_t *printf_hook_create()
 #ifdef USE_VSTR
        if (!vstr_init())
        {
-               DBG1("failed to initialize Vstr library!");
+               DBG1(DBG_LIB, "failed to initialize Vstr library!");
                free(this);
                return NULL;
        }