summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-05-18 23:12:10 +0200
committerThomas Haller <thaller@redhat.com>2015-05-18 23:12:13 +0200
commit0fbbf9c1832f49877f74907aaa2aa186b8dc648d (patch)
treeaf945dbc1b83e1ec3fff3c3e8c1ee505c5fe042e
parent5e865c56807d1d6c5f6f9942b7e6fa63c22eff2e (diff)
downloadNetworkManager-lr/root-s-not-dead.tar.gz
fixup! core: add option to suppress error logging if nm_utils_modprobe() failslr/root-s-not-dead
If modprobe fails, it prints a message to stderr. Capture it and log it.
-rw-r--r--src/NetworkManagerUtils.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c
index 9f9ef6860d..1b2f13e528 100644
--- a/src/NetworkManagerUtils.c
+++ b/src/NetworkManagerUtils.c
@@ -249,6 +249,17 @@ nm_spawn_process (const char *args, GError **error)
return status;
}
+static const char *
+_trunk_first_line (char *str)
+{
+ char *s;
+
+ s = strchr (str, '\n');
+ if (s)
+ s[0] = '\0';
+ return str;
+}
+
int
nm_utils_modprobe (GError **error, gboolean suppress_error_logging, const char *arg1, ...)
{
@@ -259,6 +270,7 @@ nm_utils_modprobe (GError **error, gboolean suppress_error_logging, const char *
GError *local = NULL;
va_list ap;
NMLogLevel llevel = suppress_error_logging ? LOGL_DEBUG : LOGL_ERR;
+ gs_free char *std_out = NULL, *std_err = NULL;
g_return_val_if_fail (!error || !*error, -1);
g_return_val_if_fail (arg1, -1);
@@ -276,12 +288,14 @@ nm_utils_modprobe (GError **error, gboolean suppress_error_logging, const char *
g_ptr_array_add (argv, NULL);
nm_log_dbg (LOGD_CORE, "modprobe: '%s'", ARGV_TO_STR (argv));
- if (!g_spawn_sync (NULL, (char **) argv->pdata, NULL, 0, NULL, NULL, NULL, NULL, &exit_status, &local)) {
+ if (!g_spawn_sync (NULL, (char **) argv->pdata, NULL, 0, NULL, NULL, &std_out, &std_err, &exit_status, &local)) {
nm_log (llevel, LOGD_CORE, "modprobe: '%s' failed: %s", ARGV_TO_STR (argv), local->message);
g_propagate_error (error, local);
return -1;
} else if (exit_status != 0)
- nm_log (llevel, LOGD_CORE, "modprobe: '%s' exited with error %d", ARGV_TO_STR (argv), exit_status);
+ nm_log (llevel, LOGD_CORE, "modprobe: '%s' exited with error %d%s%s%s%s%s%s", ARGV_TO_STR (argv), exit_status,
+ std_out&&*std_out ? " (" : "", std_out&&*std_out ? _trunk_first_line (std_out) : "", std_out&&*std_out ? ")" : "",
+ std_err&&*std_err ? " (" : "", std_err&&*std_err ? _trunk_first_line (std_err) : "", std_err&&*std_err ? ")" : "");
return exit_status;
}