summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/ChangeLog4
-rw-r--r--include/ansidecl.h8
-rw-r--r--libiberty/ChangeLog4
-rw-r--r--libiberty/concat.c35
4 files changed, 20 insertions, 31 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index 5c76a7baa59..640b058bcb8 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2001-08-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * ansidecl.h (VA_OPEN, VA_CLOSE): Allow multiple uses.
+
2001-08-25 Nick Clifton <nickc@cambridge.redhat.com>
* bfdlink.h (struct bfd_link_info): Change 'spare_dynamic_tags' to
diff --git a/include/ansidecl.h b/include/ansidecl.h
index b7c4c40abff..4c63fa66e49 100644
--- a/include/ansidecl.h
+++ b/include/ansidecl.h
@@ -152,8 +152,8 @@ So instead we use the macro below and test it against specific values. */
/* "struct Qdmy" swallows the semicolon after VA_OPEN/VA_FIXEDARG's
use without inhibiting further decls and without declaring an
actual variable. */
-#define VA_OPEN(AP, VAR) va_list AP; va_start(AP, VAR); { struct Qdmy
-#define VA_CLOSE(AP) } va_end(AP)
+#define VA_OPEN(AP, VAR) { va_list AP; va_start(AP, VAR); { struct Qdmy
+#define VA_CLOSE(AP) } va_end(AP); }
#define VA_FIXEDARG(AP, T, N) struct Qdmy
#undef const
@@ -199,8 +199,8 @@ So instead we use the macro below and test it against specific values. */
#define VPARAMS(args) (va_alist) va_dcl
#define VA_START(va_list, var) va_start(va_list)
-#define VA_OPEN(AP, VAR) va_list AP; va_start(AP); { struct Qdmy
-#define VA_CLOSE(AP) } va_end(AP)
+#define VA_OPEN(AP, VAR) { va_list AP; va_start(AP); { struct Qdmy
+#define VA_CLOSE(AP) } va_end(AP); }
#define VA_FIXEDARG(AP, TYPE, NAME) TYPE NAME = va_arg(AP, TYPE)
/* some systems define these in header files for non-ansi mode */
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index dab5db8ca9a..b4866cfaf8f 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2001-08-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * concat.c (concat): Use VPARAMS, VA_OPEN, VA_FIXEDARG & VA_CLOSE.
+
2001-08-23 Ulrich Drepper <drepper@redhat.com>
* regex.c (truncate_wchar): Use wcrtomb not wctomb.
diff --git a/libiberty/concat.c b/libiberty/concat.c
index 01270eadcf2..2e31e833f4d 100644
--- a/libiberty/concat.c
+++ b/libiberty/concat.c
@@ -74,48 +74,29 @@ NOTES
# endif
# endif
-/* VARARGS */
-#ifdef ANSI_PROTOTYPES
-char *
-concat (const char *first, ...)
-#else
char *
-concat (va_alist)
- va_dcl
-#endif
+concat VPARAMS ((const char *first, ...))
{
register size_t length;
register char *newstr;
register char *end;
register const char *arg;
- va_list args;
-#ifndef ANSI_PROTOTYPES
- const char *first;
-#endif
/* First compute the size of the result and get sufficient memory. */
-#ifdef ANSI_PROTOTYPES
- va_start (args, first);
-#else
- va_start (args);
- first = va_arg (args, const char *);
-#endif
-
+ VA_OPEN (args, first);
+ VA_FIXEDARG (args, const char *, first);
+
length = 0;
for (arg = first; arg ; arg = va_arg (args, const char *))
length += strlen (arg);
- va_end (args);
+ VA_CLOSE (args);
newstr = (char *) xmalloc (length + 1);
/* Now copy the individual pieces to the result string. */
-#ifdef ANSI_PROTOTYPES
- va_start (args, first);
-#else
- va_start (args);
- first = va_arg (args, const char *);
-#endif
+ VA_OPEN (args, first);
+ VA_FIXEDARG (args, const char *, first);
end = newstr;
for (arg = first; arg ; arg = va_arg (args, const char *))
@@ -125,7 +106,7 @@ concat (va_alist)
end += length;
}
*end = '\000';
- va_end (args);
+ VA_CLOSE (args);
return newstr;
}