cli: 'device disconnect' - ask for interface when missing and '--ask' is present

This commit is contained in:
Jiří Klimeš
2012-11-23 12:54:30 +01:00
committed by Dan Williams
parent 0db4b4db90
commit 60f54cd65d

View File

@@ -1166,17 +1166,27 @@ do_device_disconnect (NmCli *nmc, int argc, char **argv)
const GPtrArray *devices; const GPtrArray *devices;
NMDevice *device = NULL; NMDevice *device = NULL;
const char *iface = NULL; const char *iface = NULL;
gboolean iface_specified = FALSE; char *iface_ask = NULL;
gboolean wait = TRUE; gboolean wait = TRUE;
int i; int i;
/* Set default timeout for disconnect operation */ /* Set default timeout for disconnect operation */
nmc->timeout = 10; nmc->timeout = 10;
if (argc == 0) {
if (nmc->ask) {
iface_ask = nmc_get_user_input ("Interface: ");
iface = iface_ask;
// TODO: list available devices when just Enter is pressed ?
}
if (!iface_ask) {
g_string_printf (nmc->return_text, _("Error: No interface specified."));
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
goto error;
}
} else {
while (argc > 0) { while (argc > 0) {
if (strcmp (*argv, "iface") == 0) { if (strcmp (*argv, "iface") == 0) {
iface_specified = TRUE;
if (next_arg (&argc, &argv) != 0) { if (next_arg (&argc, &argv) != 0) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
@@ -1205,12 +1215,12 @@ do_device_disconnect (NmCli *nmc, int argc, char **argv)
fprintf (stderr, _("Unknown parameter: %s\n"), *argv); fprintf (stderr, _("Unknown parameter: %s\n"), *argv);
} }
argc--; next_arg (&argc, &argv);
argv++; }
} }
if (!iface_specified) { if (!iface) {
g_string_printf (nmc->return_text, _("Error: iface has to be specified.")); g_string_printf (nmc->return_text, _("Error: No interface specified."));
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
goto error; goto error;
} }