x86: drop a few dead macros
[deliverable/binutils-gdb.git] / gdb / common / buffer.c
index 4ada0bc2d120ae341faf9ba1b49c3413b142dc03..3c919e7097907de5410cdcbd1912394f3dc602a2 100644 (file)
@@ -1,6 +1,6 @@
 /* A simple growing buffer for GDB.
   
-   Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2009-2019 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-#ifdef GDBSERVER
-#include "server.h"
-#else
-#include "defs.h"
-#endif
-
+#include "common-defs.h"
 #include "xml-utils.h"
 #include "buffer.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
+#include "inttypes.h"
 void
 buffer_grow (struct buffer *buffer, const char *data, size_t size)
 {
@@ -46,9 +37,7 @@ buffer_grow (struct buffer *buffer, const char *data, size_t size)
 
   while (buffer->used_size + size > new_buffer_size)
     new_buffer_size *= 2;
-  new_buffer = xrealloc (buffer->buffer, new_buffer_size);
-  if (!new_buffer)
-    abort ();
+  new_buffer = (char *) xrealloc (buffer->buffer, new_buffer_size);
   memcpy (new_buffer + buffer->used_size, data, size);
   buffer->buffer = new_buffer;
   buffer->buffer_size = new_buffer_size;
@@ -99,8 +88,8 @@ buffer_xml_printf (struct buffer *buffer, const char *format, ...)
       if (percent)
        {
          char buf[32];
-         char *p;
          char *str = buf;
+         const char *f_old = f;
          
          switch (*f)
            {
@@ -119,17 +108,62 @@ buffer_xml_printf (struct buffer *buffer, const char *format, ...)
            case 'o':
              sprintf (str, "%o", va_arg (ap, unsigned int));
              break;
+           case 'l':
+             f++;
+             switch (*f)
+               {
+               case 'd':
+                 sprintf (str, "%ld", va_arg (ap, long));
+                 break;
+               case 'u':
+                 sprintf (str, "%lu", va_arg (ap, unsigned long));
+                 break;
+               case 'x':
+                 sprintf (str, "%lx", va_arg (ap, unsigned long));
+                 break;
+               case 'o':
+                 sprintf (str, "%lo", va_arg (ap, unsigned long));
+                 break;
+               case 'l':
+                 f++;
+                 switch (*f)
+                   {
+                   case 'd':
+                     sprintf (str, "%" PRId64,
+                              (int64_t) va_arg (ap, long long));
+                     break;
+                   case 'u':
+                     sprintf (str, "%" PRIu64,
+                              (uint64_t) va_arg (ap, unsigned long long));
+                     break;
+                   case 'x':
+                     sprintf (str, "%" PRIx64,
+                              (uint64_t) va_arg (ap, unsigned long long));
+                     break;
+                   case 'o':
+                     sprintf (str, "%" PRIo64,
+                              (uint64_t) va_arg (ap, unsigned long long));
+                     break;
+                   default:
+                     str = 0;
+                     break;
+                   }
+                 break;
+               default:
+                 str = 0;
+                 break;
+               }
+             break;
            default:
              str = 0;
              break;
            }
-         
+
          if (str)
            {
-             buffer_grow (buffer, prev, f - prev - 1);
-             p = xml_escape_text (str);
-             buffer_grow_str (buffer, p);
-             xfree (p);
+             buffer_grow (buffer, prev, f_old - prev - 1);
+             std::string p = xml_escape_text (str);
+             buffer_grow_str (buffer, p.c_str ());
              prev = f + 1;
            }
          percent = 0;
This page took 0.0453 seconds and 4 git commands to generate.