diff options
Diffstat (limited to 'libc/stdio/asprintf.c')
-rw-r--r-- | libc/stdio/asprintf.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/libc/stdio/asprintf.c b/libc/stdio/asprintf.c deleted file mode 100644 index 7379140..0000000 --- a/libc/stdio/asprintf.c +++ /dev/null @@ -1,60 +0,0 @@ -/* $OpenBSD: asprintf.c,v 1.15 2005/10/10 12:00:52 espie Exp $ */ - -/* - * Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <errno.h> -#include <stdarg.h> -#include "local.h" - -int -asprintf(char **str, const char *fmt, ...) -{ - int ret; - va_list ap; - FILE f; - unsigned char *_base; - - f._file = -1; - f._flags = __SWR | __SSTR | __SALC; - f._bf._base = f._p = (unsigned char *)malloc(128); - if (f._bf._base == NULL) - goto err; - f._bf._size = f._w = 127; /* Leave room for the NUL */ - va_start(ap, fmt); - ret = vfprintf(&f, fmt, ap); - va_end(ap); - if (ret == -1) - goto err; - *f._p = '\0'; - _base = realloc(f._bf._base, ret + 1); - if (_base == NULL) - goto err; - *str = (char *)_base; - return (ret); - -err: - if (f._bf._base) { - free(f._bf._base); - f._bf._base = NULL; - } - *str = NULL; - errno = ENOMEM; - return (-1); -} |