gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / libiberty / concat.c
index 98b20e16a11a49174717e9e8d88c035a42c54c97..533e4a99b0d8ced71abf8d86c8e2b6f8141c1962 100644 (file)
@@ -1,5 +1,5 @@
 /* Concatenate variable number of strings.
-   Copyright (C) 1991, 1994, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1991-2020 Free Software Foundation, Inc.
    Written by Fred Fish @ Cygnus Support
 
 This file is part of the libiberty library.
@@ -15,32 +15,21 @@ 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.  */
+not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
 
 /*
 
-@deftypefn Extension char* concat (const char *@var{s1}, const char *@var{s2}, @dots{}, @code{NULL})
+@deftypefn Extension char* concat (const char *@var{s1}, const char *@var{s2}, @
+  @dots{}, @code{NULL})
 
 Concatenate zero or more of strings and return the result in freshly
-@code{xmalloc}ed memory.  Returns @code{NULL} if insufficient memory is
-available.  The argument list is terminated by the first @code{NULL}
-pointer encountered.  Pointers to empty strings are ignored.
+@code{xmalloc}ed memory.  The argument list is terminated by the first
+@code{NULL} pointer encountered.  Pointers to empty strings are ignored.
 
 @end deftypefn
 
-NOTES
-
-       This function uses xmalloc() which is expected to be a front end
-       function to malloc() that deals with low memory situations.  In
-       typical use, if malloc() returns NULL then xmalloc() diverts to an
-       error handler routine which never returns, and thus xmalloc will
-       never return a NULL pointer.  If the client application wishes to
-       deal with low memory situations itself, it should supply an xmalloc
-       that just directly invokes malloc and blindly returns whatever
-       malloc returns.
-
 */
 
 
@@ -51,11 +40,7 @@ NOTES
 #include "libiberty.h"
 #include <sys/types.h>         /* size_t */
 
-#ifdef ANSI_PROTOTYPES
 #include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
 
 # if HAVE_STRING_H
 #  include <string.h>
@@ -69,11 +54,9 @@ NOTES
 #include <stdlib.h>
 #endif
 
-static inline unsigned long vconcat_length PARAMS ((const char *, va_list));
+static inline unsigned long vconcat_length (const char *, va_list);
 static inline unsigned long
-vconcat_length (first, args)
-     const char *first;
-     va_list args;
+vconcat_length (const char *first, va_list args)
 {
   unsigned long length = 0;
   const char *arg;
@@ -84,12 +67,8 @@ vconcat_length (first, args)
   return length;
 }
 
-static inline char *vconcat_copy PARAMS ((char *, const char *, va_list));
 static inline char *
-vconcat_copy (dst, first, args)
-     char *dst;
-     const char *first;
-     va_list args;
+vconcat_copy (char *dst, const char *first, va_list args)
 {
   char *end = dst;
   const char *arg;
@@ -108,14 +87,14 @@ vconcat_copy (dst, first, args)
 /* @undocumented concat_length */
 
 unsigned long
-concat_length VPARAMS ((const char *first, ...))
+concat_length (const char *first, ...)
 {
   unsigned long length;
+  va_list args;
 
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   length = vconcat_length (first, args);
-  VA_CLOSE (args);
+  va_end (args);
 
   return length;
 }
@@ -123,58 +102,63 @@ concat_length VPARAMS ((const char *first, ...))
 /* @undocumented concat_copy */
 
 char *
-concat_copy VPARAMS ((char *dst, const char *first, ...))
+concat_copy (char *dst, const char *first, ...)
 {
   char *save_dst;
+  va_list args;
 
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, char *, dst);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   vconcat_copy (dst, first, args);
   save_dst = dst; /* With K&R C, dst goes out of scope here.  */
-  VA_CLOSE (args);
+  va_end (args);
 
   return save_dst;
 }
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
 char *libiberty_concat_ptr;
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
 
 /* @undocumented concat_copy2 */
 
 char *
-concat_copy2 VPARAMS ((const char *first, ...))
+concat_copy2 (const char *first, ...)
 {
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, const char *, first);
+  va_list args;
+  va_start (args, first);
   vconcat_copy (libiberty_concat_ptr, first, args);
-  VA_CLOSE (args);
+  va_end (args);
 
   return libiberty_concat_ptr;
 }
 
 char *
-concat VPARAMS ((const char *first, ...))
+concat (const char *first, ...)
 {
   char *newstr;
+  va_list args;
 
   /* First compute the size of the result and get sufficient memory.  */
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, const char *, first);
-  newstr = (char *) xmalloc (vconcat_length (first, args) + 1);
-  VA_CLOSE (args);
+  va_start (args, first);
+  newstr = XNEWVEC (char, vconcat_length (first, args) + 1);
+  va_end (args);
 
   /* Now copy the individual pieces to the result string. */
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   vconcat_copy (newstr, first, args);
-  VA_CLOSE (args);
+  va_end (args);
 
   return newstr;
 }
 
 /*
 
-@deftypefn Extension char* reconcat (char *@var{optr}, const char *@var{s1}, @dots{}, @code{NULL})
+@deftypefn Extension char* reconcat (char *@var{optr}, const char *@var{s1}, @
+  @dots{}, @code{NULL})
 
 Same as @code{concat}, except that if @var{optr} is not @code{NULL} it
 is freed after the string is created.  This is intended to be useful
@@ -190,25 +174,22 @@ loop:
 */
 
 char *
-reconcat VPARAMS ((char *optr, const char *first, ...))
+reconcat (char *optr, const char *first, ...)
 {
   char *newstr;
+  va_list args;
 
   /* First compute the size of the result and get sufficient memory.  */
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, char *, optr);
-  VA_FIXEDARG (args, const char *, first);
-  newstr = (char *) xmalloc (vconcat_length (first, args) + 1);
-  VA_CLOSE (args);
+  va_start (args, first);
+  newstr = XNEWVEC (char, vconcat_length (first, args) + 1);
+  va_end (args);
 
   /* Now copy the individual pieces to the result string. */
-  VA_OPEN (args, first);
-  VA_FIXEDARG (args, char *, optr);
-  VA_FIXEDARG (args, const char *, first);
+  va_start (args, first);
   vconcat_copy (newstr, first, args);
   if (optr) /* Done before VA_CLOSE so optr stays in scope for K&R C.  */
     free (optr);
-  VA_CLOSE (args);
+  va_end (args);
 
   return newstr;
 }
@@ -221,7 +202,7 @@ reconcat VPARAMS ((char *optr, const char *first, ...))
 #include <stdio.h>
 
 int
-main ()
+main (void)
 {
   printf ("\"\" = \"%s\"\n", concat (NULLP));
   printf ("\"a\" = \"%s\"\n", concat ("a", NULLP));
This page took 0.035275 seconds and 4 git commands to generate.