core: add option to suppress error logging if nm_utils_modprobe() fails
We don't want error logging for nm_platform_link_add() which tries to load the bonding module. Later we will run tests as non-root, where modprobe will fail. Logging an error would break the tests.
This commit is contained in:
@@ -303,8 +303,19 @@ 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, const char *arg1, ...)
|
||||
nm_utils_modprobe (GError **error, gboolean suppress_error_logging, const char *arg1, ...)
|
||||
{
|
||||
gs_unref_ptrarray GPtrArray *argv = NULL;
|
||||
int exit_status;
|
||||
@@ -312,6 +323,8 @@ nm_utils_modprobe (GError **error, const char *arg1, ...)
|
||||
#define ARGV_TO_STR(argv) (_log_str ? _log_str : (_log_str = g_strjoinv (" ", (char **) argv->pdata)))
|
||||
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);
|
||||
@@ -329,12 +342,14 @@ nm_utils_modprobe (GError **error, const char *arg1, ...)
|
||||
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)) {
|
||||
nm_log_err (LOGD_CORE, "modprobe: '%s' failed: %s", ARGV_TO_STR (argv), local->message);
|
||||
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_err (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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user