Home | History | Annotate | Line # | Download | only in gdbsupport
      1 /* Obstack wrapper for GDB.
      2 
      3    Copyright (C) 2013-2024 Free Software Foundation, Inc.
      4 
      5    This file is part of GDB.
      6 
      7    This program is free software; you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation; either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 #include "gdb_obstack.h"
     21 
     22 /* Concatenate NULL terminated variable argument list of `const char *'
     23    strings; return the new string.  Space is found in the OBSTACKP.
     24    Argument list must be terminated by a sentinel expression `(char *)
     25    NULL'.  */
     26 
     27 char *
     28 obconcat (struct obstack *obstackp, ...)
     29 {
     30   va_list ap;
     31 
     32   va_start (ap, obstackp);
     33   for (;;)
     34     {
     35       const char *s = va_arg (ap, const char *);
     36 
     37       if (s == NULL)
     38 	break;
     39 
     40       obstack_grow_str (obstackp, s);
     41     }
     42   va_end (ap);
     43   obstack_1grow (obstackp, 0);
     44 
     45   return (char *) obstack_finish (obstackp);
     46 }
     47