From: Lennart Poettering Date: Mon, 26 May 2025 11:19:43 +0000 (+0200) Subject: varlinkctl: if returned error is an errno, print it as one in log message X-Git-Tag: v258-rc1~488 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bee59ab901ca199d194f440cf37f7645004d3054;p=thirdparty%2Fsystemd.git varlinkctl: if returned error is an errno, print it as one in log message --- diff --git a/src/varlinkctl/varlinkctl.c b/src/varlinkctl/varlinkctl.c index d34ef55cf8b..5bd091f20f5 100644 --- a/src/varlinkctl/varlinkctl.c +++ b/src/varlinkctl/varlinkctl.c @@ -532,8 +532,14 @@ static int reply_callback( "Method call returned expected error: %s", error); r = 0; - } else - r = *ret = log_error_errno(SYNTHETIC_ERRNO(EBADE), "Method call failed: %s", error); + } else { + /* If we can translate this to an errno, let's print that as errno and return it, otherwise, return a generic error code */ + r = sd_varlink_error_to_errno(error, parameters); + if (r != -EBADR) + *ret = log_error_errno(r, "Method call failed: %m"); + else + r = *ret = log_error_errno(SYNTHETIC_ERRNO(EBADE), "Method call failed: %s", error); + } } else r = 0; @@ -626,8 +632,13 @@ static int verb_call(int argc, char *argv[], void *userdata) { "Method call %s() returned expected error: %s", method, error); r = 0; - } else - r = log_error_errno(SYNTHETIC_ERRNO(EBADE), "Method call %s() failed: %s", method, error); + } else { + r = sd_varlink_error_to_errno(error, reply); + if (r != -EBADR) + log_error_errno(r, "Method call %s() failed: %m", method); + else + r = log_error_errno(SYNTHETIC_ERRNO(EBADE), "Method call %s() failed: %s", method, error); + } } else r = 0; @@ -706,8 +717,13 @@ static int verb_call(int argc, char *argv[], void *userdata) { "Method call %s() returned expected error: %s", method, error); r = 0; - } else - r = log_error_errno(SYNTHETIC_ERRNO(EBADE), "Method call %s() failed: %s", method, error); + } else { + r = sd_varlink_error_to_errno(error, reply); + if (r != -EBADR) + log_error_errno(r, "Method call %s() failed: %m", method); + else + r = log_error_errno(SYNTHETIC_ERRNO(EBADE), "Method call %s() failed: %s", method, error); + } } else r = 0;