diff options
author | H. Peter Anvin (Intel) <hpa@zytor.com> | 2018-12-13 21:56:41 -0800 |
---|---|---|
committer | H. Peter Anvin (Intel) <hpa@zytor.com> | 2018-12-13 21:56:41 -0800 |
commit | e3b43326438502deeaf79b94fdb4524bb221f439 (patch) | |
tree | b7f5a605f945572aead87e985125954fbbd3b60c /nasmlib | |
parent | 26572c6e37279dd947df8d85b8d553c512f42467 (diff) | |
download | nasm-e3b43326438502deeaf79b94fdb4524bb221f439.tar.gz |
asprintf: actually include asprintf.c
File missing from earcier checkin...
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Diffstat (limited to 'nasmlib')
-rw-r--r-- | nasmlib/asprintf.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/nasmlib/asprintf.c b/nasmlib/asprintf.c new file mode 100644 index 00000000..f0e34355 --- /dev/null +++ b/nasmlib/asprintf.c @@ -0,0 +1,70 @@ +/* ----------------------------------------------------------------------- * + * + * Copyright 1996-2018 The NASM Authors - All Rights Reserved + * See the file AUTHORS included with the NASM distribution for + * the specific copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ----------------------------------------------------------------------- */ + +#include "compiler.h" +#include "nasmlib.h" +#include "alloc.h" + +char *nasm_vasprintf(const char *fmt, va_list ap) +{ +#ifdef HAVE_VASPRINTF + char *strp; + int rv = vasprintf(&strp, fmt, ap); + if (rv < 0) + nasm_alloc_failed(); + return strp; +#else + char *strp; + va_list xap; + int len; + + va_copy(xap, ap); + len = vsnprintf(NULL, 0, fmt, xap); + va_end(xap); + strp = nasm_malloc(len+1); + vsnprintf(strp, len, fmt, ap); + return strp; +#endif +} + +char *nasm_asprintf(const char *fmt, ...) +{ + va_list ap; + char *strp; + + va_start(ap, fmt); + strp = nasm_vasprintf(fmt, ap); + va_end(ap); + + return strp; +} |