mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 11:08:03 +02:00
cli/connections: split connection name parsing
Reduces redundant code paths; will make it easier to implement completion in a common one.
This commit is contained in:
parent
023791edb0
commit
717db4fe01
1 changed files with 127 additions and 207 deletions
|
|
@ -1695,6 +1695,40 @@ parse_preferred_connection_order (const char *order, GError **error)
|
||||||
return order_arr;
|
return order_arr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static NMConnection *
|
||||||
|
get_connection (NmCli *nmc, int *argc, char ***argv, int *pos, GError **error)
|
||||||
|
{
|
||||||
|
NMConnection *connection = NULL;
|
||||||
|
const char *selector = NULL;
|
||||||
|
|
||||||
|
if (*argc == 0) {
|
||||||
|
g_set_error_literal (error, NMCLI_ERROR, NMC_RESULT_ERROR_USER_INPUT,
|
||||||
|
_("No connection specified"));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( strcmp (**argv, "id") == 0
|
||||||
|
|| strcmp (**argv, "uuid") == 0
|
||||||
|
|| strcmp (**argv, "path") == 0) {
|
||||||
|
selector = **argv;
|
||||||
|
if (next_arg (argc, argv) != 0) {
|
||||||
|
g_set_error (error, NMCLI_ERROR, NMC_RESULT_ERROR_USER_INPUT,
|
||||||
|
_("%s argument is missing"), selector);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
connection = nmc_find_connection (nmc->connections, selector, **argv, pos);
|
||||||
|
if (!connection) {
|
||||||
|
g_set_error (error, NMCLI_ERROR, NMC_RESULT_ERROR_NOT_FOUND,
|
||||||
|
_("unknown connection '%s'"), **argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
next_arg (argc, argv);
|
||||||
|
|
||||||
|
return connection;
|
||||||
|
}
|
||||||
|
|
||||||
static NMCResultCode
|
static NMCResultCode
|
||||||
do_connections_show (NmCli *nmc, int argc, char **argv)
|
do_connections_show (NmCli *nmc, int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
|
@ -2532,10 +2566,11 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
|
||||||
const char *ap = NULL;
|
const char *ap = NULL;
|
||||||
const char *nsp = NULL;
|
const char *nsp = NULL;
|
||||||
const char *pwds = NULL;
|
const char *pwds = NULL;
|
||||||
GError *error = NULL;
|
gs_free_error GError *error = NULL;
|
||||||
const char *selector = NULL;
|
char **arg_arr = NULL;
|
||||||
const char *name = NULL;
|
int arg_num;
|
||||||
char *line = NULL;
|
char ***argv_ptr = &argv;
|
||||||
|
int *argc_ptr = &argc;
|
||||||
|
|
||||||
/* Not (yet?) supported */
|
/* Not (yet?) supported */
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
|
|
@ -2547,34 +2582,19 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
|
||||||
if (nmc->timeout == -1)
|
if (nmc->timeout == -1)
|
||||||
nmc->timeout = 90;
|
nmc->timeout = 90;
|
||||||
|
|
||||||
if (argc == 0) {
|
if (argc == 0 && nmc->ask) {
|
||||||
if (nmc->ask) {
|
char *line = nmc_readline ("%s: ", PROMPT_CONNECTION);
|
||||||
line = nmc_readline (PROMPT_CONNECTION);
|
nmc_string_to_arg_array (line, NULL, TRUE, &arg_arr, &arg_num);
|
||||||
name = line ? line : "";
|
g_free (line);
|
||||||
}
|
argv_ptr = &arg_arr;
|
||||||
} else if (strcmp (*argv, "ifname") != 0) {
|
argc_ptr = &arg_num;
|
||||||
if ( strcmp (*argv, "id") == 0
|
|
||||||
|| strcmp (*argv, "uuid") == 0
|
|
||||||
|| strcmp (*argv, "path") == 0) {
|
|
||||||
|
|
||||||
selector = *argv;
|
|
||||||
if (next_arg (&argc, &argv) != 0) {
|
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), selector);
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
name = *argv;
|
|
||||||
}
|
|
||||||
name = *argv;
|
|
||||||
next_arg (&argc, &argv);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name) {
|
if (argc > 0 && strcmp (*argv, "ifname") != 0) {
|
||||||
connection = nmc_find_connection (nmc->connections, selector, name, NULL);
|
connection = get_connection (nmc, argc_ptr, argv_ptr, NULL, &error);
|
||||||
if (!connection) {
|
if (!connection) {
|
||||||
g_string_printf (nmc->return_text, _("Error: Connection '%s' does not exist."), name);
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
return error->code;
|
||||||
goto error;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2582,8 +2602,7 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
|
||||||
if (strcmp (*argv, "ifname") == 0) {
|
if (strcmp (*argv, "ifname") == 0) {
|
||||||
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;
|
return NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ifname = *argv;
|
ifname = *argv;
|
||||||
|
|
@ -2591,8 +2610,7 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
|
||||||
else if (strcmp (*argv, "ap") == 0) {
|
else if (strcmp (*argv, "ap") == 0) {
|
||||||
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;
|
return NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ap = *argv;
|
ap = *argv;
|
||||||
|
|
@ -2600,8 +2618,7 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
|
||||||
else if (strcmp (*argv, "passwd-file") == 0) {
|
else if (strcmp (*argv, "passwd-file") == 0) {
|
||||||
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;
|
return NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pwds = *argv;
|
pwds = *argv;
|
||||||
|
|
@ -2624,18 +2641,14 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
|
||||||
if (!nmc_activate_connection (nmc, connection, ifname, ap, nsp, pwds, activate_connection_cb, &error)) {
|
if (!nmc_activate_connection (nmc, connection, ifname, ap, nsp, pwds, activate_connection_cb, &error)) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s."),
|
g_string_printf (nmc->return_text, _("Error: %s."),
|
||||||
error->message);
|
error->message);
|
||||||
nmc->return_value = error->code;
|
|
||||||
g_clear_error (&error);
|
|
||||||
nmc->should_wait--;
|
nmc->should_wait--;
|
||||||
goto error;
|
return error->code;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Start progress indication */
|
/* Start progress indication */
|
||||||
if (nmc->print_output == NMC_PRINT_PRETTY)
|
if (nmc->print_output == NMC_PRINT_PRETTY)
|
||||||
progress_id = g_timeout_add (120, progress_cb, _("preparing"));
|
progress_id = g_timeout_add (120, progress_cb, _("preparing"));
|
||||||
|
|
||||||
error:
|
|
||||||
g_free (line);
|
|
||||||
return nmc->return_value;
|
return nmc->return_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -7910,61 +7923,28 @@ do_connection_modify (NmCli *nmc,
|
||||||
{
|
{
|
||||||
NMConnection *connection = NULL;
|
NMConnection *connection = NULL;
|
||||||
NMRemoteConnection *rc = NULL;
|
NMRemoteConnection *rc = NULL;
|
||||||
const char *name;
|
|
||||||
const char *selector = NULL;
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
gboolean temporary = FALSE;
|
gboolean temporary = FALSE;
|
||||||
|
|
||||||
if (argc == 0) {
|
if (argc && nmc_arg_is_option (*argv, "temporary")) {
|
||||||
/*
|
|
||||||
* TODO(?) complete "uuid", "path", "id" or connection name.
|
|
||||||
* (if we ever will move this here from shell completion script)
|
|
||||||
if (nmc->complete) {
|
|
||||||
quit ();
|
|
||||||
*/
|
|
||||||
g_string_printf (nmc->return_text, _("Error: No arguments provided."));
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nmc_arg_is_option (*argv, "temporary")) {
|
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
goto finish;
|
goto finish;
|
||||||
temporary = TRUE;
|
temporary = TRUE;
|
||||||
next_arg (&argc, &argv);
|
next_arg (&argc, &argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( strcmp (*argv, "id") == 0
|
connection = get_connection (nmc, &argc, &argv, NULL, &error);
|
||||||
|| strcmp (*argv, "uuid") == 0
|
|
||||||
|| strcmp (*argv, "path") == 0) {
|
|
||||||
|
|
||||||
selector = *argv;
|
|
||||||
if (next_arg (&argc, &argv) != 0) {
|
|
||||||
/*
|
|
||||||
* TODO(?): complete uuid, path or id
|
|
||||||
if (nmc->complete) {
|
|
||||||
quit ();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."),
|
|
||||||
selector);
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
name = *argv;
|
|
||||||
}
|
|
||||||
name = *argv;
|
|
||||||
|
|
||||||
connection = nmc_find_connection (nmc->connections, selector, name, NULL);
|
|
||||||
if (!connection) {
|
if (!connection) {
|
||||||
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."), name);
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
nmc->return_value = error->code;
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = nm_client_get_connection_by_uuid (nmc->client,
|
rc = nm_client_get_connection_by_uuid (nmc->client,
|
||||||
nm_connection_get_uuid (connection));
|
nm_connection_get_uuid (connection));
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."), name);
|
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."),
|
||||||
|
nm_connection_get_uuid (connection));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
@ -8035,74 +8015,51 @@ do_connection_clone (NmCli *nmc, int argc, char **argv)
|
||||||
NMConnection *new_connection = NULL;
|
NMConnection *new_connection = NULL;
|
||||||
NMSettingConnection *s_con;
|
NMSettingConnection *s_con;
|
||||||
CloneConnectionInfo *info;
|
CloneConnectionInfo *info;
|
||||||
const char *name;
|
|
||||||
const char *new_name;
|
const char *new_name;
|
||||||
char *name_ask = NULL;
|
|
||||||
char *new_name_ask = NULL;
|
char *new_name_ask = NULL;
|
||||||
const char *selector = NULL;
|
|
||||||
char *uuid;
|
char *uuid;
|
||||||
gboolean temporary = FALSE;
|
gboolean temporary = FALSE;
|
||||||
|
char **arg_arr = NULL;
|
||||||
|
int arg_num;
|
||||||
|
char ***argv_ptr = &argv;
|
||||||
|
int *argc_ptr = &argc;
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
/* Not (yet?) supported */
|
/* Not (yet?) supported */
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return nmc->return_value;
|
||||||
|
|
||||||
if (argc == 0) {
|
if (argc == 0 && nmc->ask) {
|
||||||
if (nmc->ask) {
|
char *line = nmc_readline ("%s: ", PROMPT_CONNECTION);
|
||||||
name = name_ask = nmc_readline (PROMPT_CONNECTION);
|
nmc_string_to_arg_array (line, NULL, TRUE, &arg_arr, &arg_num);
|
||||||
new_name = new_name_ask = nmc_readline (_("New connection name: "));
|
g_free (line);
|
||||||
} else {
|
argv_ptr = &arg_arr;
|
||||||
g_string_printf (nmc->return_text, _("Error: No arguments provided."));
|
argc_ptr = &arg_num;
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
} else if (nmc_arg_is_option (*argv, "temporary")) {
|
||||||
goto finish;
|
temporary = TRUE;
|
||||||
}
|
next_arg (&argc, &argv);
|
||||||
} else {
|
|
||||||
if (nmc_arg_is_option (*argv, "temporary")) {
|
|
||||||
temporary = TRUE;
|
|
||||||
next_arg (&argc, &argv);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( strcmp (*argv, "id") == 0
|
|
||||||
|| strcmp (*argv, "uuid") == 0
|
|
||||||
|| strcmp (*argv, "path") == 0) {
|
|
||||||
|
|
||||||
selector = *argv;
|
|
||||||
if (next_arg (&argc, &argv) != 0) {
|
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."),
|
|
||||||
selector);
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
name = *argv;
|
|
||||||
if (next_arg (&argc, &argv) != 0) {
|
|
||||||
g_string_printf (nmc->return_text, _("Error: <new name> argument is missing."));
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
new_name = *argv;
|
|
||||||
if (next_arg (&argc, &argv) == 0) {
|
|
||||||
g_string_printf (nmc->return_text, _("Error: unexpected extra argument '%s'."), *argv);
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!name) {
|
connection = get_connection (nmc, argc_ptr, argv_ptr, NULL, &error);
|
||||||
g_string_printf (nmc->return_text, _("Error: connection ID is missing."));
|
if (!connection) {
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
|
nmc->return_value = error->code;
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
if (!new_name) {
|
|
||||||
|
if (next_arg (&argc, &argv) == 0)
|
||||||
|
new_name = *argv;
|
||||||
|
else if (nmc->ask)
|
||||||
|
new_name = new_name_ask = nmc_readline (_("New connection name: "));
|
||||||
|
else {
|
||||||
g_string_printf (nmc->return_text, _("Error: <new name> argument is missing."));
|
g_string_printf (nmc->return_text, _("Error: <new name> argument is missing."));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
connection = nmc_find_connection (nmc->connections, selector, name, NULL);
|
if (next_arg (argc_ptr, argv_ptr) == 0) {
|
||||||
if (!connection) {
|
g_string_printf (nmc->return_text, _("Error: unknown extra argument: '%s'."), *argv);
|
||||||
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."), name);
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -8138,7 +8095,6 @@ do_connection_clone (NmCli *nmc, int argc, char **argv)
|
||||||
finish:
|
finish:
|
||||||
if (new_connection)
|
if (new_connection)
|
||||||
g_object_unref (new_connection);
|
g_object_unref (new_connection);
|
||||||
g_free (name_ask);
|
|
||||||
g_free (new_name_ask);
|
g_free (new_name_ask);
|
||||||
|
|
||||||
return nmc->return_value;
|
return nmc->return_value;
|
||||||
|
|
@ -8174,6 +8130,7 @@ do_connection_delete (NmCli *nmc, int argc, char **argv)
|
||||||
int arg_num = argc;
|
int arg_num = argc;
|
||||||
GString *invalid_cons = NULL;
|
GString *invalid_cons = NULL;
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
/* Not (yet?) supported */
|
/* Not (yet?) supported */
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
|
|
@ -8184,33 +8141,20 @@ do_connection_delete (NmCli *nmc, int argc, char **argv)
|
||||||
|
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
if (nmc->ask) {
|
if (nmc->ask) {
|
||||||
char *line = nmc_readline (PROMPT_CONNECTIONS);
|
char *line = nmc_readline ("%s: ", PROMPT_CONNECTIONS);
|
||||||
nmc_string_to_arg_array (line, NULL, TRUE, &arg_arr, &arg_num);
|
nmc_string_to_arg_array (line, NULL, TRUE, &arg_arr, &arg_num);
|
||||||
g_free (line);
|
g_free (line);
|
||||||
arg_ptr = arg_arr;
|
arg_ptr = arg_arr;
|
||||||
}
|
}
|
||||||
if (arg_num == 0) {
|
if (arg_num == 0) {
|
||||||
g_string_printf (nmc->return_text, _("Error: No connection specified."));
|
g_string_printf (nmc->return_text, _("Error: No connection specified."));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (arg_num > 0) {
|
while (arg_num > 0) {
|
||||||
const char *selector = NULL;
|
connection = get_connection (nmc, &arg_num, &arg_ptr, &pos, &error);
|
||||||
|
|
||||||
if ( strcmp (*arg_ptr, "id") == 0
|
|
||||||
|| strcmp (*arg_ptr, "uuid") == 0
|
|
||||||
|| strcmp (*arg_ptr, "path") == 0) {
|
|
||||||
selector = *arg_ptr;
|
|
||||||
if (next_arg (&arg_num, &arg_ptr) != 0) {
|
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), selector);
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
connection = nmc_find_connection (nmc->connections, selector, *arg_ptr, &pos);
|
|
||||||
if (connection) {
|
if (connection) {
|
||||||
/* Check if the connection is unique. */
|
/* Check if the connection is unique. */
|
||||||
/* Calling delete for the same connection repeatedly would result in
|
/* Calling delete for the same connection repeatedly would result in
|
||||||
|
|
@ -8218,9 +8162,14 @@ do_connection_delete (NmCli *nmc, int argc, char **argv)
|
||||||
if (!g_slist_find (queue, connection))
|
if (!g_slist_find (queue, connection))
|
||||||
queue = g_slist_prepend (queue, g_object_ref (connection));
|
queue = g_slist_prepend (queue, g_object_ref (connection));
|
||||||
} else {
|
} else {
|
||||||
g_printerr (_("Error: unknown connection '%s'\n"), *arg_ptr);
|
g_printerr (_("Error: %s.\n"), error->message);
|
||||||
g_string_printf (nmc->return_text, _("Error: not all active connections found."));
|
g_string_printf (nmc->return_text, _("Error: not all connections found."));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
nmc->return_value = error->code;
|
||||||
|
g_clear_error (&error);
|
||||||
|
|
||||||
|
if (nmc->return_value != NMC_RESULT_ERROR_NOT_FOUND)
|
||||||
|
goto finish;
|
||||||
|
|
||||||
if (!invalid_cons)
|
if (!invalid_cons)
|
||||||
invalid_cons = g_string_new (NULL);
|
invalid_cons = g_string_new (NULL);
|
||||||
g_string_append_printf (invalid_cons, "'%s', ", *arg_ptr);
|
g_string_append_printf (invalid_cons, "'%s', ", *arg_ptr);
|
||||||
|
|
@ -8232,7 +8181,7 @@ do_connection_delete (NmCli *nmc, int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!queue) {
|
if (!queue) {
|
||||||
g_string_printf (nmc->return_text, _("Error: no connection provided."));
|
g_string_printf (nmc->return_text, _("Error: No connection specified."));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
@ -8311,6 +8260,7 @@ connection_removed (NMClient *client, NMRemoteConnection *con, NmCli *nmc)
|
||||||
static NMCResultCode
|
static NMCResultCode
|
||||||
do_connection_monitor (NmCli *nmc, int argc, char **argv)
|
do_connection_monitor (NmCli *nmc, int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
GError *error = NULL;
|
||||||
|
|
||||||
/* Not (yet?) supported */
|
/* Not (yet?) supported */
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
|
|
@ -8335,25 +8285,13 @@ do_connection_monitor (NmCli *nmc, int argc, char **argv)
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
const char *selector = NULL;
|
connection = get_connection (nmc, &arg_num, &arg_ptr, &pos, &error);
|
||||||
|
|
||||||
if ( strcmp (*arg_ptr, "id") == 0
|
|
||||||
|| strcmp (*arg_ptr, "uuid") == 0
|
|
||||||
|| strcmp (*arg_ptr, "path") == 0) {
|
|
||||||
selector = *arg_ptr;
|
|
||||||
if (next_arg (&arg_num, &arg_ptr) != 0) {
|
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), selector);
|
|
||||||
return NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
connection = nmc_find_connection (nmc->connections, selector, *arg_ptr, &pos);
|
|
||||||
if (connection) {
|
if (connection) {
|
||||||
connection_watch (nmc, connection);
|
connection_watch (nmc, connection);
|
||||||
} else {
|
} else {
|
||||||
g_printerr (_("Error: unknown connection '%s'\n"), *arg_ptr);
|
g_printerr (_("Error: %s.\n"), error->message);
|
||||||
g_string_printf (nmc->return_text, _("Error: not all connections found."));
|
g_string_printf (nmc->return_text, _("Error: not all connections found."));
|
||||||
return NMC_RESULT_ERROR_NOT_FOUND;
|
return error->code;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Take next argument (if there's no other connection of the same name) */
|
/* Take next argument (if there's no other connection of the same name) */
|
||||||
|
|
@ -8556,64 +8494,46 @@ static NMCResultCode
|
||||||
do_connection_export (NmCli *nmc, int argc, char **argv)
|
do_connection_export (NmCli *nmc, int argc, char **argv)
|
||||||
{
|
{
|
||||||
NMConnection *connection = NULL;
|
NMConnection *connection = NULL;
|
||||||
const char *name;
|
|
||||||
const char *out_name = NULL;
|
const char *out_name = NULL;
|
||||||
char *name_ask = NULL;
|
char *name_ask = NULL;
|
||||||
char *out_name_ask = NULL;
|
char *out_name_ask = NULL;
|
||||||
const char *path = NULL;
|
const char *path = NULL;
|
||||||
const char *selector = NULL;
|
|
||||||
const char *type = NULL;
|
const char *type = NULL;
|
||||||
NMVpnEditorPlugin *plugin;
|
NMVpnEditorPlugin *plugin;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
char tmpfile[] = "/tmp/nmcli-export-temp-XXXXXX";
|
char tmpfile[] = "/tmp/nmcli-export-temp-XXXXXX";
|
||||||
|
char **arg_arr = NULL;
|
||||||
|
int arg_num;
|
||||||
|
char ***argv_ptr = &argv;
|
||||||
|
int *argc_ptr = &argc;
|
||||||
|
|
||||||
/* Not (yet?) supported */
|
/* Not (yet?) supported */
|
||||||
if (nmc->complete)
|
if (nmc->complete)
|
||||||
return nmc->return_value;
|
return nmc->return_value;
|
||||||
|
|
||||||
if (argc == 0) {
|
if (argc == 0 && nmc->ask) {
|
||||||
if (nmc->ask) {
|
char *line = nmc_readline ("%s: ", PROMPT_VPN_CONNECTION);
|
||||||
name_ask = nmc_readline (PROMPT_VPN_CONNECTION);
|
nmc_string_to_arg_array (line, NULL, TRUE, &arg_arr, &arg_num);
|
||||||
name = name_ask = name_ask ? g_strstrip (name_ask) : NULL;
|
g_free (line);
|
||||||
out_name = out_name_ask = nmc_readline (_("Output file name: "));
|
argv_ptr = &arg_arr;
|
||||||
} else {
|
argc_ptr = &arg_num;
|
||||||
g_string_printf (nmc->return_text, _("Error: No arguments provided."));
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ( strcmp (*argv, "id") == 0
|
|
||||||
|| strcmp (*argv, "uuid") == 0
|
|
||||||
|| strcmp (*argv, "path") == 0) {
|
|
||||||
|
|
||||||
selector = *argv;
|
|
||||||
if (next_arg (&argc, &argv) != 0) {
|
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."),
|
|
||||||
selector);
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
name = *argv;
|
|
||||||
if (next_arg (&argc, &argv) == 0)
|
|
||||||
out_name = *argv;
|
|
||||||
|
|
||||||
if (next_arg (&argc, &argv) == 0) {
|
|
||||||
g_string_printf (nmc->return_text, _("Error: unknown extra argument: '%s'."), *argv);
|
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
|
||||||
goto finish;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!name) {
|
connection = get_connection (nmc, argc_ptr, argv_ptr, NULL, &error);
|
||||||
g_string_printf (nmc->return_text, _("Error: connection ID is missing."));
|
if (!connection) {
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||||
|
nmc->return_value = error->code;
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
connection = nmc_find_connection (nmc->connections, selector, name, NULL);
|
|
||||||
if (!connection) {
|
if (next_arg (&argc, &argv) == 0)
|
||||||
g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."), name);
|
out_name = *argv;
|
||||||
nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND;
|
else if (nmc->ask)
|
||||||
|
out_name = out_name_ask = nmc_readline (_("Output file name: "));
|
||||||
|
|
||||||
|
if (next_arg (argc_ptr, argv_ptr) == 0) {
|
||||||
|
g_string_printf (nmc->return_text, _("Error: unknown extra argument: '%s'."), *argv);
|
||||||
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue