aboutsummaryrefslogtreecommitdiffstats
path: root/gpgme/vasprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'gpgme/vasprintf.c')
-rw-r--r--gpgme/vasprintf.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/gpgme/vasprintf.c b/gpgme/vasprintf.c
index dbef4eb0..9e39966a 100644
--- a/gpgme/vasprintf.c
+++ b/gpgme/vasprintf.c
@@ -30,8 +30,13 @@ Boston, MA 02111-1307, USA. */
int global_total_width;
#endif
-int
-vasprintf (char **result, const char *format, va_list *args)
+static int int_vasprintf (char **, const char *, va_list *);
+
+static int
+int_vasprintf (result, format, args)
+ char **result;
+ const char *format;
+ va_list *args;
{
const char *p = format;
/* Add one to make sure that it is never zero, which might cause malloc
@@ -54,7 +59,7 @@ vasprintf (char **result, const char *format, va_list *args)
total_width += abs (va_arg (ap, int));
}
else
- total_width += strtoul (p, (char**)&p, 10);
+ total_width += strtoul (p, (char **) &p, 10);
if (*p == '.')
{
++p;
@@ -64,7 +69,7 @@ vasprintf (char **result, const char *format, va_list *args)
total_width += abs (va_arg (ap, int));
}
else
- total_width += strtoul (p, (char**)&p, 10);
+ total_width += strtoul (p, (char **) &p, 10);
}
while (strchr ("hlL", *p))
++p;
@@ -99,6 +104,7 @@ vasprintf (char **result, const char *format, va_list *args)
(void) va_arg (ap, char *);
break;
}
+ p++;
}
}
#ifdef TEST
@@ -111,6 +117,19 @@ vasprintf (char **result, const char *format, va_list *args)
return 0;
}
+int
+vasprintf (result, format, args)
+ char **result;
+ const char *format;
+#if defined (_BSD_VA_LIST_) && defined (__FreeBSD__)
+ _BSD_VA_LIST_ args;
+#else
+ va_list args;
+#endif
+{
+ return int_vasprintf (result, format, &args);
+}
+
int
asprintf (char **buf, const char *fmt, ...)