summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clients/cli/general.c38
1 files changed, 30 insertions, 8 deletions
diff --git a/clients/cli/general.c b/clients/cli/general.c
index 53b5e6d40e..c083386a65 100644
--- a/clients/cli/general.c
+++ b/clients/cli/general.c
@@ -731,11 +731,26 @@ nmc_complete_strings_nocase (const char *prefix, ...)
va_end (args);
}
-static NMCResultCode
-do_general_logging (NmCli *nmc, int argc, char **argv)
+static void
+_set_logging_cb (GObject *object, GAsyncResult *result, gpointer user_data)
{
+ NmCli *nmc = user_data;
+ gs_unref_variant GVariant *res = NULL;
gs_free_error GError *error = NULL;
+ res = nm_client_dbus_call_finish (NM_CLIENT (object), result, &error);
+ if (!res) {
+ g_dbus_error_strip_remote_error (error);
+ g_string_printf (nmc->return_text, _("Error: failed to set logging: %s"),
+ nmc_error_get_simple_message (error));
+ nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
+ }
+ quit ();
+}
+
+static NMCResultCode
+do_general_logging (NmCli *nmc, int argc, char **argv)
+{
next_arg (nmc, &argc, &argv, NULL);
if (argc == 0) {
if (nmc->complete)
@@ -789,12 +804,19 @@ do_general_logging (NmCli *nmc, int argc, char **argv)
if (nmc->complete)
return nmc->return_value;
- nm_client_set_logging (nmc->client, level, domains, &error);
- if (error) {
- g_string_printf (nmc->return_text, _("Error: failed to set logging: %s"),
- nmc_error_get_simple_message (error));
- return NMC_RESULT_ERROR_UNKNOWN;
- }
+ nmc->should_wait++;
+ nm_client_dbus_call (nmc->client,
+ NM_DBUS_PATH,
+ NM_DBUS_INTERFACE,
+ "SetLogging",
+ g_variant_new ("(ss)",
+ level ?: "",
+ domains ?: ""),
+ G_VARIANT_TYPE ("()"),
+ -1,
+ NULL,
+ _set_logging_cb,
+ nmc);
}
return nmc->return_value;