aboutsummaryrefslogtreecommitdiff
path: root/gdbsupport/errors.cc
diff options
context:
space:
mode:
authorAaron Merey <amerey@redhat.com>2023-02-09 20:28:20 -0500
committerAaron Merey <amerey@redhat.com>2023-02-10 21:04:45 -0500
commit40dfb28b56fe55a370a35495e0f1eb6c95110f35 (patch)
treee5a51168f2bf2aef021346f20844ac505dcdd924 /gdbsupport/errors.cc
parentbad727e2d2d1d7f86e1bcdb8eb9ce778182b5926 (diff)
downloadfsf-binutils-gdb-40dfb28b56fe55a370a35495e0f1eb6c95110f35.zip
fsf-binutils-gdb-40dfb28b56fe55a370a35495e0f1eb6c95110f35.tar.gz
fsf-binutils-gdb-40dfb28b56fe55a370a35495e0f1eb6c95110f35.tar.bz2
Move implementation of perror_with_name to gdbsupport
gdbsupport/errors.h declares perror_with_name and leaves the implementation to the clients. However gdb and gdbserver's implementations are essentially the same, resulting in unnecessary code duplication. Fix this by implementing perror_with_name in gdbsupport. Add an optional parameter for specifying the errno used to generate the error message. Also move the implementation of perror_string to gdbsupport since perror_with_name requires it. Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdbsupport/errors.cc')
-rw-r--r--gdbsupport/errors.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/gdbsupport/errors.cc b/gdbsupport/errors.cc
index 566be37..b48ce10 100644
--- a/gdbsupport/errors.cc
+++ b/gdbsupport/errors.cc
@@ -71,6 +71,30 @@ internal_warning_loc (const char *file, int line, const char *fmt, ...)
va_end (ap);
}
+/* See errors.h. */
+
+std::string
+perror_string (const char *prefix, int errnum)
+{
+ const char *err;
+
+ if (errnum != 0)
+ err = safe_strerror (errnum);
+ else
+ err = safe_strerror (errno);
+ return std::string (prefix) + ": " + err;
+}
+
+/* See errors.h. */
+
+void
+perror_with_name (const char *string, int errnum)
+{
+ std::string combined = perror_string (string, errnum);
+
+ error (_("%s."), combined.c_str ());
+}
+
#if defined (USE_WIN32API) || defined(__CYGWIN__)
/* See errors.h. */