diff options
author | hpa <hpa> | 2004-12-21 04:56:37 +0000 |
---|---|---|
committer | hpa <hpa> | 2004-12-21 04:56:37 +0000 |
commit | d4318da1d4c6a337264b1c5248601f35e6e6eb9e (patch) | |
tree | 40dcf1e0a80c0ce30b9b597e42811ed1e64ab92c | |
parent | 6bb0c160c8b723d09386be3fabccc6e7c3de61b0 (diff) | |
download | syslinux-d4318da1d4c6a337264b1c5248601f35e6e6eb9e.tar.gz |
Add [v]asprintf
-rw-r--r-- | com32/lib/asprintf.c | 30 | ||||
-rw-r--r-- | com32/lib/vasprintf.c | 25 |
2 files changed, 55 insertions, 0 deletions
diff --git a/com32/lib/asprintf.c b/com32/lib/asprintf.c new file mode 100644 index 00000000..6002b576 --- /dev/null +++ b/com32/lib/asprintf.c @@ -0,0 +1,30 @@ +/* + * asprintf.c + */ + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> + +int asprintf(char **bufp, const char *format, ...) +{ + va_list ap, ap1; + int rv; + int bytes; + char *p; + + va_start(ap, format); + va_copy(ap1, ap); + + bytes = vsnprintf(NULL, 0, format, ap1) + 1; + va_end(ap1); + + *bufp = p = malloc(bytes); + if ( !p ) + return -1; + + rv = vsnprintf(p, bytes, format, ap); + va_end(ap); + + return rv; +} diff --git a/com32/lib/vasprintf.c b/com32/lib/vasprintf.c new file mode 100644 index 00000000..657bfdc3 --- /dev/null +++ b/com32/lib/vasprintf.c @@ -0,0 +1,25 @@ +/* + * vasprintf.c + */ + +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> + +int vasprintf(char **bufp, const char *format, va_list ap) +{ + va_list ap1; + int bytes; + char *p; + + va_copy(ap1, ap); + + bytes = vsnprintf(NULL, 0, format, ap1) + 1; + va_end(ap1); + + *bufp = p = malloc(bytes); + if ( !p ) + return -1; + + return vsnprintf(p, bytes, format, ap); +} |