projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Mention PR ld/4701.
[deliverable/binutils-gdb.git]
/
libiberty
/
vasprintf.c
diff --git
a/libiberty/vasprintf.c
b/libiberty/vasprintf.c
index aa20e5bff00214eaaa1c636f83116920f4a9b1b4..b6cb94e7a22ddef6472116afc754ba5bad94de54 100644
(file)
--- a/
libiberty/vasprintf.c
+++ b/
libiberty/vasprintf.c
@@
-1,6
+1,6
@@
/* Like vsprintf but provides a pointer to malloc'd storage, which must
be freed by the caller.
/* Like vsprintf but provides a pointer to malloc'd storage, which must
be freed by the caller.
- Copyright (C) 1994 Free Software Foundation, Inc.
+ Copyright (C) 1994
, 2003
Free Software Foundation, Inc.
This file is part of the libiberty library.
Libiberty is free software; you can redistribute it and/or
This file is part of the libiberty library.
Libiberty is free software; you can redistribute it and/or
@@
-15,17
+15,16
@@
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
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., 5
9 Temple Place - Suite 330
,
-Boston, MA 0211
1-1307
, USA. */
+not, write to the Free Software Foundation, Inc., 5
1 Franklin Street - Fifth Floor
,
+Boston, MA 0211
0-1301
, USA. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <ansidecl.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <ansidecl.h>
-#ifdef ANSI_PROTOTYPES
#include <stdarg.h>
#include <stdarg.h>
-#
else
-#
include <varargs.h>
+#
if !defined (va_copy) && defined (__va_copy)
+#
define va_copy(d,s) __va_copy((d),(s))
#endif
#include <stdio.h>
#ifdef HAVE_STRING_H
#endif
#include <stdio.h>
#ifdef HAVE_STRING_H
@@
-52,20
+51,17
@@
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{vsprintf} would return. If memory could
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{vsprintf} would return. If memory could
-not be allocated,
zero
is returned and @code{NULL} is stored in
+not be allocated,
minus one
is returned and @code{NULL} is stored in
@code{*@var{resptr}}.
@end deftypefn
*/
@code{*@var{resptr}}.
@end deftypefn
*/
-static int int_vasprintf
PARAMS ((char **, const char *, va_list *)
);
+static int int_vasprintf
(char **, const char *, va_list
);
static int
static int
-int_vasprintf (result, format, args)
- char **result;
- const char *format;
- va_list *args;
+int_vasprintf (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
{
const char *p = format;
/* Add one to make sure that it is never zero, which might cause malloc
@@
-73,7
+69,11
@@
int_vasprintf (result, format, args)
int total_width = strlen (format) + 1;
va_list ap;
int total_width = strlen (format) + 1;
va_list ap;
- memcpy ((PTR) &ap, (PTR) args, sizeof (va_list));
+#ifdef va_copy
+ va_copy (ap, args);
+#else
+ memcpy ((PTR) &ap, (PTR) &args, sizeof (va_list));
+#endif
while (*p != '\0')
{
while (*p != '\0')
{
@@
-135,32
+135,33
@@
int_vasprintf (result, format, args)
p++;
}
}
p++;
}
}
+#ifdef va_copy
+ va_end (ap);
+#endif
#ifdef TEST
global_total_width = total_width;
#endif
*result = (char *) malloc (total_width);
if (*result != NULL)
#ifdef TEST
global_total_width = total_width;
#endif
*result = (char *) malloc (total_width);
if (*result != NULL)
- return vsprintf (*result, format,
*
args);
+ return vsprintf (*result, format, args);
else
else
- return
0
;
+ return
-1
;
}
int
}
int
-vasprintf (result, format, args)
- char **result;
- const char *format;
+vasprintf (char **result, const char *format,
#if defined (_BSD_VA_LIST_) && defined (__FreeBSD__)
#if defined (_BSD_VA_LIST_) && defined (__FreeBSD__)
- _BSD_VA_LIST_ args;
+ _BSD_VA_LIST_ args)
#else
#else
- va_list args;
+ va_list args)
#endif
{
#endif
{
- return int_vasprintf (result, format,
&
args);
+ return int_vasprintf (result, format, args);
}
#ifdef TEST
static void ATTRIBUTE_PRINTF_1
}
#ifdef TEST
static void ATTRIBUTE_PRINTF_1
-checkit
VPARAMS ((const char *format, ...)
)
+checkit
(const char *format, ...
)
{
char *result;
VA_OPEN (args, format);
{
char *result;
VA_OPEN (args, format);
@@
-177,10
+178,10
@@
checkit VPARAMS ((const char *format, ...))
free (result);
}
free (result);
}
-extern int main
PARAMS ((void)
);
+extern int main
(void
);
int
int
-main ()
+main (
void
)
{
checkit ("%d", 0x12345678);
checkit ("%200d", 5);
{
checkit ("%d", 0x12345678);
checkit ("%200d", 5);
This page took
0.024438 seconds
and
4
git commands to generate.