new function perror_string extracted out of throw_perror_with_name.
authorJoel Brobecker <brobecker@gnat.com>
Fri, 11 Oct 2013 08:20:10 +0000 (08:20 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Fri, 11 Oct 2013 08:20:10 +0000 (08:20 +0000)
The main purpose of this patch is to extract the part of
throw_perror_with_name that computes a string providing the system
error message combined with a prefix string.  This will become useful
later on to provide a routine which prints a warning using that
perror_string, rather than throwing an error.

gdb/ChangeLog:

        * utils.c (perror_string): New function, extracted out of
        throw_perror_with_name.
        (throw_perror_with_name): Rework to use perror_string.

gdb/ChangeLog
gdb/utils.c

index 3983447385672a44fc041783ba312155a27c3a39..37ad575454ccca6e7dc08efdd420d6c74e3617e4 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-11  Joel Brobecker  <brobecker@adacore.com>
+
+       * utils.c (perror_string): New function, extracted out of
+       throw_perror_with_name.
+       (throw_perror_with_name): Rework to use perror_string.
+
 2013-10-11  Yao Qi  <yao@codesourcery.com>
 
        * remote.c (discard_pending_stop_replies_in_queue): Update
index 26879ec3721c06cfa41d759900511ea0657b2198..402fe8ee240eb7c6a5119d88229e629f072ff2a0 100644 (file)
@@ -957,6 +957,26 @@ add_internal_problem_command (struct internal_problem *problem)
   xfree (show_doc);
 }
 
+/* Return a newly allocated string, containing the PREFIX followed
+   by the system error message for errno (separated by a colon).
+
+   The result must be deallocated after use.  */
+
+static char *
+perror_string (const char *prefix)
+{
+  char *err;
+  char *combined;
+
+  err = safe_strerror (errno);
+  combined = (char *) xmalloc (strlen (err) + strlen (prefix) + 3);
+  strcpy (combined, prefix);
+  strcat (combined, ": ");
+  strcat (combined, err);
+
+  return combined;
+}
+
 /* Print the system error message for errno, and also mention STRING
    as the file name for which the error was encountered.  Use ERRCODE
    for the thrown exception.  Then return to command level.  */
@@ -964,14 +984,10 @@ add_internal_problem_command (struct internal_problem *problem)
 void
 throw_perror_with_name (enum errors errcode, const char *string)
 {
-  char *err;
   char *combined;
 
-  err = safe_strerror (errno);
-  combined = (char *) alloca (strlen (err) + strlen (string) + 3);
-  strcpy (combined, string);
-  strcat (combined, ": ");
-  strcat (combined, err);
+  combined = perror_string (string);
+  make_cleanup (xfree, combined);
 
   /* I understand setting these is a matter of taste.  Still, some people
      may clear errno but not know about bfd_error.  Doing this here is not