gcc/libiberty/asprintf.c

57 lines
1.8 KiB
C
Raw Normal View History

1997-10-14 21:11:36 +02:00
/* Like sprintf but provides a pointer to malloc'd storage, which must
be freed by the caller.
Copyright (C) 1997, 2003 Free Software Foundation, Inc.
1997-10-14 21:11:36 +02:00
Contributed by Cygnus Solutions.
This file is part of the libiberty library.
Libiberty is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
Libiberty is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with libiberty; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
1997-10-14 21:11:36 +02:00
#include "ansidecl.h"
#include "libiberty.h"
#include <stdarg.h>
/*
@deftypefn Extension int asprintf (char **@var{resptr}, const char *@var{format}, ...)
Like @code{sprintf}, but instead of passing a pointer to a buffer, you
pass a pointer to a pointer. This function will compute the size of
the buffer needed, allocate memory with @code{malloc}, and store a
pointer to the allocated memory in @code{*@var{resptr}}. The value
returned is the same as @code{sprintf} would return. If memory could
not be allocated, minus one is returned and @code{NULL} is stored in
@code{*@var{resptr}}.
@end deftypefn
*/
1997-10-14 21:11:36 +02:00
int
demangle.h: Remove uses of PARAMS. include/ 2005-03-26 Gabriel Dos Reis <gdr@integrable-solutions.net> * demangle.h: Remove uses of PARAMS. * libiberty.h (ANSI_PROTOTYPES): Remove guard since ANSI_PROTOTYPES is always assumed. Remove uses of PARAMS throughout. libiberty/ 2005-03-26 Gabriel Dos Reis <gdr@integrable-solutions.net> Convert libiberty to use ISO C prototype style 2/n. * cp-demangle.h: Remove uses of PARAMS. * cp-demangle.c: Likewise. (d_dump, cplus_demangle_fill_name, cplus_demangle_fill_extended_operator, cplus_demangle_fill_ctor, cplus_demangle_fill_dtor, d_make_empty, d_make_comp, d_make_name, d_make_builtin_type, d_make_operator, d_make_extended_operator, d_make_ctor, d_make_dtor, d_make_template_param, d_make_sub, cplus_demangle_mangled_name, has_return_type, is_ctor_dtor_or_conversion, d_encoding, d_name, d_nested_name, d_prefix, d_unqualified_name, d_source_name, d_number, d_identifier, d_operator_name, d_special_name, d_call_offset, d_ctor_dtor_name, cplus_demangle_type, d_cv_qualifiers, d_function_type, d_bare_function_type, d_class_enum_type, d_array_type, d_pointer_to_member_type, d_template_param, d_template_args, d_template_arg, d_expression, d_expr_primary, d_local_name, d_discriminator, d_add_substitution, d_substitution, d_print_resize, d_print_append_char, d_print_append_buffer, d_print_error, cplus_demangle_print, d_print_comp, d_print_java_identifier, d_print_mod_list, d_print_mod, d_print_function_type, d_print_array_type, d_print_expr_op, d_print_cast, cplus_demangle_init_info, d_demangle, __cxa_demangle, cplus_demangle_v3, java_demangle_v3, is_ctor_or_dtor, is_gnu_v3_mangled_ctor, is_gnu_v3_mangled_dtor, print_usage, main): 2005-03-26 Gabriel Dos Reis <gdr@integrable-solutions.net> Convert libiberty to ISO C prototype style 1/n. * _doprnt.c: Remove conditional #include <varargs.h> on ANSI_PROTOTYPES as the latter is always assumed. (_doprnt, checkit, main): Use ISO C prototype. * alloca.c (find_stack_direction, C_alloca): Use ISO C prototype. * argv.c: Remove conditional #includes on ANSI_PROTOTYPES. (dupargv, freeargv, buildargv, main): Use ISO C prototype. * atexit.c (atexit): Likewise * asprintf.c: Remove conditional include on ANSI_PROTOTYPES. (asprintf): Use ISO C prototype. * basename.c (basename): Likewise * bcmp.c (bcmp): Likewise. * bcopy.c (bcopy): Likewise. * bzero.c (bzero): Likewise. * bsearch.c (bsearch): Likewise. Improve const-correctness. * choose-temp.c (choose_temp_base): Likewise. * calloc.c: Remove conditional #include on ANSI_PROTOTYPES. (calloc): Use ISO C prototype. * clock.c (clock): Likewise. * concat.c: Remove conditional #include on ANSI_PROTOTYPES. (vconcat_length, vconcat_copy, concat_length, concat_copy, concat_copy2, concat, reconcat, main): Use ISO C prototype. * copysign.c (copysign): Likewise. From-SVN: r97085
2005-03-26 20:24:33 +01:00
asprintf (char **buf, const char *fmt, ...)
1997-10-14 21:11:36 +02:00
{
int status;
VA_OPEN (ap, fmt);
VA_FIXEDARG (ap, char **, buf);
VA_FIXEDARG (ap, const char *, fmt);
1997-10-14 21:11:36 +02:00
status = vasprintf (buf, fmt, ap);
VA_CLOSE (ap);
1997-10-14 21:11:36 +02:00
return status;
}