diff options
author | Thomas Haller <thaller@redhat.com> | 2015-05-18 23:12:10 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-05-18 23:12:13 +0200 |
commit | 0fbbf9c1832f49877f74907aaa2aa186b8dc648d (patch) | |
tree | af945dbc1b83e1ec3fff3c3e8c1ee505c5fe042e | |
parent | 5e865c56807d1d6c5f6f9942b7e6fa63c22eff2e (diff) | |
download | NetworkManager-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.c | 18 |
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; } |