mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-03-23 20:10:50 +01:00
cli: convert 'dev list' to new format; checking options validity for terse
This commit is contained in:
parent
6ab52b33ee
commit
21638ff470
7 changed files with 278 additions and 118 deletions
|
|
@ -154,7 +154,7 @@ show_connection (NMConnection *data, gpointer user_data)
|
|||
nmc->allowed_fields[6].value = nm_setting_connection_get_autoconnect (s_con) ? _("yes") : _("no");
|
||||
nmc->allowed_fields[7].value = nm_setting_connection_get_read_only (s_con) ? _("yes") : _("no");
|
||||
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_HEADER; /* Clear HEADER flag */
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields);
|
||||
|
||||
g_free (timestamp_str);
|
||||
|
|
@ -227,12 +227,12 @@ do_connections_list (NmCli *nmc, int argc, char **argv)
|
|||
if (argc == 0) {
|
||||
valid_param_specified = TRUE;
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("System connections");
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields);
|
||||
g_slist_foreach (nmc->system_connections, (GFunc) show_connection, nmc);
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("User connections");
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields);
|
||||
g_slist_foreach (nmc->user_connections, (GFunc) show_connection, nmc);
|
||||
|
|
@ -264,7 +264,7 @@ do_connections_list (NmCli *nmc, int argc, char **argv)
|
|||
else if (strcmp (*argv, "system") == 0) {
|
||||
valid_param_specified = TRUE;
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("System connections");
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields);
|
||||
g_slist_foreach (nmc->system_connections, (GFunc) show_connection, nmc);
|
||||
|
|
@ -273,7 +273,7 @@ do_connections_list (NmCli *nmc, int argc, char **argv)
|
|||
else if (strcmp (*argv, "user") == 0) {
|
||||
valid_param_specified = TRUE;
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("User connections");
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields);
|
||||
g_slist_foreach (nmc->user_connections, (GFunc) show_connection, nmc);
|
||||
|
|
@ -353,7 +353,7 @@ show_active_connection (gpointer data, gpointer user_data)
|
|||
info->nmc->allowed_fields[6].value = nm_active_connection_get_specific_object (active);
|
||||
info->nmc->allowed_fields[7].value = NM_IS_VPN_CONNECTION (active) ? _("yes") : _("no");
|
||||
|
||||
info->nmc->print_fields.flags &= ~NMC_PF_FLAG_HEADER; /* Clear HEADER flag */
|
||||
info->nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */
|
||||
print_fields (info->nmc->print_fields, info->nmc->allowed_fields);
|
||||
break;
|
||||
}
|
||||
|
|
@ -403,7 +403,7 @@ do_connections_status (NmCli *nmc, int argc, char **argv)
|
|||
goto error;
|
||||
}
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("Active connections");
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields);
|
||||
|
||||
|
|
@ -1266,6 +1266,7 @@ get_connections_cb (NMSettingsInterface *settings, gpointer user_data)
|
|||
ArgsInfo *args = (ArgsInfo *) user_data;
|
||||
static gboolean system_cb_called = FALSE;
|
||||
static gboolean user_cb_called = FALSE;
|
||||
GError *error = NULL;
|
||||
|
||||
if (NM_IS_REMOTE_SETTINGS_SYSTEM (settings)) {
|
||||
system_cb_called = TRUE;
|
||||
|
|
@ -1282,13 +1283,19 @@ get_connections_cb (NMSettingsInterface *settings, gpointer user_data)
|
|||
return;
|
||||
|
||||
if (args->argc == 0) {
|
||||
if (!nmc_terse_option_check (args->nmc->print_output, args->nmc->required_fields, &error))
|
||||
goto error;
|
||||
args->nmc->return_value = do_connections_list (args->nmc, args->argc, args->argv);
|
||||
} else {
|
||||
|
||||
if (matches (*args->argv, "list") == 0) {
|
||||
if (!nmc_terse_option_check (args->nmc->print_output, args->nmc->required_fields, &error))
|
||||
goto error;
|
||||
args->nmc->return_value = do_connections_list (args->nmc, args->argc-1, args->argv+1);
|
||||
}
|
||||
else if (matches(*args->argv, "status") == 0) {
|
||||
if (!nmc_terse_option_check (args->nmc->print_output, args->nmc->required_fields, &error))
|
||||
goto error;
|
||||
args->nmc->return_value = do_connections_status (args->nmc, args->argc-1, args->argv+1);
|
||||
}
|
||||
else if (matches(*args->argv, "up") == 0) {
|
||||
|
|
@ -1310,6 +1317,15 @@ get_connections_cb (NMSettingsInterface *settings, gpointer user_data)
|
|||
|
||||
if (!args->nmc->should_wait)
|
||||
quit ();
|
||||
return;
|
||||
|
||||
error:
|
||||
g_string_printf (args->nmc->return_text, _("Error: %s."), error->message);
|
||||
args->nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||
args->nmc->should_wait = FALSE;
|
||||
g_error_free (error);
|
||||
quit ();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,73 @@ static NmcOutputField nmc_fields_dev_status[] = {
|
|||
#define NMC_FIELDS_DEV_STATUS_ALL "DEVICE,TYPE,STATE"
|
||||
#define NMC_FIELDS_DEV_STATUS_COMMON "DEVICE,TYPE,STATE"
|
||||
|
||||
/* Available field for 'dev list' - general part */
|
||||
static NmcOutputField nmc_fields_dev_list_general[] = {
|
||||
{"NAME", N_("NAME"), 10, NULL, 0}, /* 0 */
|
||||
{"DEVICE", N_("DEVICE"), 10, NULL, 0}, /* 1 */
|
||||
{"TYPE", N_("TYPE"), 17, NULL, 0}, /* 2 */
|
||||
{"DRIVER", N_("DRIVER"), 10, NULL, 0}, /* 3 */
|
||||
{"HWADDR", N_("HWADDR"), 19, NULL, 0}, /* 4 */
|
||||
{"STATE", N_("STATE"), 14, NULL, 0}, /* 5 */
|
||||
{NULL, NULL, 0, NULL, 0}
|
||||
};
|
||||
#define NMC_FIELDS_DEV_LIST_GENERAL_ALL "NAME,DEVICE,TYPE,DRIVER,HWADDR,STATE"
|
||||
#define NMC_FIELDS_DEV_LIST_GENERAL_COMMON "NAME,DEVICE,TYPE,DRIVER,HWADDR,STATE"
|
||||
|
||||
/* Available field for 'dev list' - capabilities part */
|
||||
static NmcOutputField nmc_fields_dev_list_cap[] = {
|
||||
{"NAME", N_("NAME"), 13, NULL, 0}, /* 0 */
|
||||
{"CARRIER-DETECT", N_("CARRIER-DETECT"), 16, NULL, 0}, /* 1 */
|
||||
{"SPEED", N_("SPEED"), 10, NULL, 0}, /* 2 */
|
||||
{NULL, NULL, 0, NULL, 0}
|
||||
};
|
||||
#define NMC_FIELDS_DEV_LIST_CAP_ALL "NAME,CARRIER-DETECT,SPEED"
|
||||
#define NMC_FIELDS_DEV_LIST_CAP_COMMON "NAME,CARRIER-DETECT,SPEED"
|
||||
|
||||
/* Available field for 'dev list' - wired properties part */
|
||||
static NmcOutputField nmc_fields_dev_list_wired_prop[] = {
|
||||
{"NAME", N_("NAME"), 18, NULL, 0}, /* 0 */
|
||||
{"CARRIER", N_("CARRIER"), 10, NULL, 0}, /* 1 */
|
||||
{NULL, NULL, 0, NULL, 0}
|
||||
};
|
||||
#define NMC_FIELDS_DEV_LIST_WIRED_PROP_ALL "NAME,CARRIER"
|
||||
#define NMC_FIELDS_DEV_LIST_WIRED_PROP_COMMON "NAME,CARRIER"
|
||||
|
||||
|
||||
/* Available field for 'dev list' - wireless properties part */
|
||||
static NmcOutputField nmc_fields_dev_list_wifi_prop[] = {
|
||||
{"NAME", N_("NAME"), 18, NULL, 0}, /* 0 */
|
||||
{"WEP", N_("WEP"), 5, NULL, 0}, /* 1 */
|
||||
{"WPA", N_("WPA"), 5, NULL, 0}, /* 2 */
|
||||
{"WPA2", N_("WPA2"), 6, NULL, 0}, /* 3 */
|
||||
{"TKIP", N_("TKIP"), 6, NULL, 0}, /* 4 */
|
||||
{"CCMP", N_("CCMP"), 6, NULL, 0}, /* 5 */
|
||||
{NULL, NULL, 0, NULL, 0}
|
||||
};
|
||||
#define NMC_FIELDS_DEV_LIST_WIFI_PROP_ALL "NAME,WEP,WPA,WPA2,TKIP,CCMP"
|
||||
#define NMC_FIELDS_DEV_LIST_WIFI_PROP_COMMON "NAME,WEP,WPA,WPA2,TKIP,CCMP"
|
||||
|
||||
/* Available field for 'dev list' - IPv4 settings part */
|
||||
static NmcOutputField nmc_fields_dev_list_ip4_settings[] = {
|
||||
{"NAME", N_("NAME"), 15, NULL, 0}, /* 0 */
|
||||
{"ADDRESS", N_("ADDRESS"), 15, NULL, 0}, /* 1 */
|
||||
{"PREFIX", N_("PREFIX"), 20, NULL, 0}, /* 2 */
|
||||
{"GATEWAY", N_("GATEWAY"), 20, NULL, 0}, /* 3 */
|
||||
{NULL, NULL, 0, NULL, 0}
|
||||
};
|
||||
#define NMC_FIELDS_DEV_LIST_IP4_SETTINGS_ALL "NAME,ADDRESS,PREFIX,GATEWAY"
|
||||
#define NMC_FIELDS_DEV_LIST_IP4_SETTINGS_COMMON "NAME,ADDRESS,PREFIX,GATEWAY"
|
||||
|
||||
/* Available field for 'dev list' - IPv4 settings DNS part */
|
||||
static NmcOutputField nmc_fields_dev_list_ip4_dns[] = {
|
||||
{"NAME", N_("NAME"), 15, NULL, 0}, /* 0 */
|
||||
{"DNS", N_("DNS"), 17, NULL, 0}, /* 1 */
|
||||
{NULL, NULL, 0, NULL, 0}
|
||||
};
|
||||
#define NMC_FIELDS_DEV_LIST_IP4_DNS_ALL "NAME,DNS"
|
||||
#define NMC_FIELDS_DEV_LIST_IP4_DNS_COMMON "NAME,DNS"
|
||||
|
||||
|
||||
/* Available field for 'dev wifi list' */
|
||||
static NmcOutputField nmc_fields_dev_wifi_list[] = {
|
||||
{"SSID", N_("SSID"), 33, NULL, 0}, /* 0 */
|
||||
|
|
@ -78,10 +145,12 @@ static NmcOutputField nmc_fields_dev_wifi_list[] = {
|
|||
{"RSN-FLAGS", N_("RSN-FLAGS"), 25, NULL, 0}, /* 8 */
|
||||
{"DEVICE", N_("DEVICE"), 10, NULL, 0}, /* 9 */
|
||||
{"ACTIVE", N_("ACTIVE"), 8, NULL, 0}, /* 10 */
|
||||
{"NAME", N_("NAME"), 8, NULL, 0}, /* 11 */ /* For WiFi scan in nm dev list */
|
||||
{NULL, NULL, 0, NULL, 0}
|
||||
};
|
||||
#define NMC_FIELDS_DEV_WIFI_LIST_ALL "SSID,BSSID,MODE,FREQ,RATE,SIGNAL,SECURITY,WPA-FLAGS,RSN-FLAGS,DEVICE,ACTIVE"
|
||||
#define NMC_FIELDS_DEV_WIFI_LIST_COMMON "SSID,BSSID,MODE,FREQ,RATE,SIGNAL,SECURITY,ACTIVE"
|
||||
#define NMC_FIELDS_DEV_WIFI_LIST_FOR_DEV_LIST "NAME,"NMC_FIELDS_DEV_WIFI_LIST_COMMON
|
||||
|
||||
|
||||
/* static function prototypes */
|
||||
|
|
@ -203,6 +272,7 @@ ap_wpa_rsn_flags_to_string (guint32 flags)
|
|||
return ret_str;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void
|
||||
print_header (const char *label, const char *iface, const char *connection)
|
||||
{
|
||||
|
|
@ -222,6 +292,7 @@ print_header (const char *label, const char *iface, const char *connection)
|
|||
|
||||
g_string_free (string, TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
static gchar *
|
||||
ip4_address_as_string (guint32 ip)
|
||||
|
|
@ -318,8 +389,9 @@ detail_access_point (gpointer data, gpointer user_data)
|
|||
info->nmc->allowed_fields[8].value = rsn_flags_str;
|
||||
info->nmc->allowed_fields[9].value = info->device;
|
||||
info->nmc->allowed_fields[10].value = active ? _("yes") : _("no");
|
||||
info->nmc->allowed_fields[11].value = "AP";
|
||||
|
||||
info->nmc->print_fields.flags &= ~NMC_PF_FLAG_HEADER; /* Clear HEADER flag */
|
||||
info->nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */
|
||||
print_fields (info->nmc->print_fields, info->nmc->allowed_fields);
|
||||
|
||||
g_free (ssid_str);
|
||||
|
|
@ -343,44 +415,48 @@ show_device_info (gpointer data, gpointer user_data)
|
|||
NmCli *nmc = (NmCli *) user_data;
|
||||
APInfo *info;
|
||||
char *tmp;
|
||||
const char *hwaddr = NULL;
|
||||
NMDeviceState state;
|
||||
const char *dev_type;
|
||||
guint32 caps;
|
||||
guint32 speed;
|
||||
char *speed_str = NULL;
|
||||
const GArray *array;
|
||||
gboolean is_default = FALSE;
|
||||
const char *id = NULL;
|
||||
|
||||
state = nm_device_get_state (device);
|
||||
print_header (_("Device"), nm_device_get_iface (device), id);
|
||||
guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0;
|
||||
guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0;
|
||||
guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0;
|
||||
|
||||
/* General information */
|
||||
dev_type = get_device_type (device);
|
||||
print_table_line (0, _("Type"), 25, dev_type, 0, NULL);
|
||||
print_table_line (0, _("Driver"), 25, nm_device_get_driver (device) ? nm_device_get_driver (device) : _("(unknown)"), 0, NULL);
|
||||
print_table_line (0, _("State"), 25, device_state_to_string (state), 0, NULL);
|
||||
if (is_default)
|
||||
print_table_line (0, _("Default"), 25, _("yes"), 0, NULL);
|
||||
else
|
||||
print_table_line (0, _("Default"), 25, _("no"), 0, NULL);
|
||||
nmc->allowed_fields = nmc_fields_dev_list_general;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("Device details");
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_LIST_GENERAL_ALL, nmc->allowed_fields, NULL);
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
|
||||
tmp = NULL;
|
||||
state = nm_device_get_state (device);
|
||||
if (NM_IS_DEVICE_ETHERNET (device))
|
||||
tmp = g_strdup (nm_device_ethernet_get_hw_address (NM_DEVICE_ETHERNET (device)));
|
||||
hwaddr = nm_device_ethernet_get_hw_address (NM_DEVICE_ETHERNET (device));
|
||||
else if (NM_IS_DEVICE_WIFI (device))
|
||||
tmp = g_strdup (nm_device_wifi_get_hw_address (NM_DEVICE_WIFI (device)));
|
||||
hwaddr = nm_device_wifi_get_hw_address (NM_DEVICE_WIFI (device));
|
||||
|
||||
if (tmp) {
|
||||
print_table_line (0, _("HW Address"), 25, tmp, 0, NULL);
|
||||
g_free (tmp);
|
||||
}
|
||||
nmc->allowed_fields[0].value = "GENERAL";
|
||||
nmc->allowed_fields[1].value = nm_device_get_iface (device);
|
||||
nmc->allowed_fields[2].value = get_device_type (device);
|
||||
nmc->allowed_fields[3].value = nm_device_get_driver (device) ? nm_device_get_driver (device) : _("(unknown)");
|
||||
nmc->allowed_fields[4].value = hwaddr ? hwaddr : _("unknown)");
|
||||
nmc->allowed_fields[5].value = device_state_to_string (state);
|
||||
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */
|
||||
|
||||
printf ("\n"); /* empty line */
|
||||
|
||||
/* Capabilities */
|
||||
caps = nm_device_get_capabilities (device);
|
||||
printf (_("\n Capabilities:\n"));
|
||||
if (caps & NM_DEVICE_CAP_CARRIER_DETECT)
|
||||
print_table_line (2, _("Carrier Detect"), 23, _("yes"), 0, NULL);
|
||||
nmc->allowed_fields = nmc_fields_dev_list_cap;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_LIST_CAP_ALL, nmc->allowed_fields, NULL);
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
|
||||
caps = nm_device_get_capabilities (device);
|
||||
speed = 0;
|
||||
if (NM_IS_DEVICE_ETHERNET (device)) {
|
||||
/* Speed in Mb/s */
|
||||
|
|
@ -390,14 +466,16 @@ show_device_info (gpointer data, gpointer user_data)
|
|||
speed = nm_device_wifi_get_bitrate (NM_DEVICE_WIFI (device));
|
||||
speed /= 1000;
|
||||
}
|
||||
if (speed)
|
||||
speed_str = g_strdup_printf (_("%u Mb/s"), speed);
|
||||
|
||||
if (speed) {
|
||||
char *speed_string;
|
||||
nmc->allowed_fields[0].value = "CAPABILITIES";
|
||||
nmc->allowed_fields[1].value = (caps & NM_DEVICE_CAP_CARRIER_DETECT) ? _("yes") : _("no");
|
||||
nmc->allowed_fields[2].value = speed_str ? speed_str : _("unknown");
|
||||
|
||||
speed_string = g_strdup_printf (_("%u Mb/s"), speed);
|
||||
print_table_line (2, _("Speed"), 23, speed_string, 0, NULL);
|
||||
g_free (speed_string);
|
||||
}
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag;
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */
|
||||
g_free (speed_str);
|
||||
|
||||
/* Wireless specific information */
|
||||
if ((NM_IS_DEVICE_WIFI (device))) {
|
||||
|
|
@ -406,31 +484,36 @@ show_device_info (gpointer data, gpointer user_data)
|
|||
const char *active_bssid = NULL;
|
||||
const GPtrArray *aps;
|
||||
|
||||
printf (_("\n Wireless Properties\n"));
|
||||
printf ("\n"); /* empty line */
|
||||
|
||||
wcaps = nm_device_wifi_get_capabilities (NM_DEVICE_WIFI (device));
|
||||
|
||||
if (wcaps & (NM_WIFI_DEVICE_CAP_CIPHER_WEP40 | NM_WIFI_DEVICE_CAP_CIPHER_WEP104))
|
||||
print_table_line (2, _("WEP Encryption"), 23, _("yes"), 0, NULL);
|
||||
if (wcaps & NM_WIFI_DEVICE_CAP_WPA)
|
||||
print_table_line (2, _("WPA Encryption"), 23, _("yes"), 0, NULL);
|
||||
if (wcaps & NM_WIFI_DEVICE_CAP_RSN)
|
||||
print_table_line (2, _("WPA2 Encryption"), 23, _("yes"), 0, NULL);
|
||||
if (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP)
|
||||
print_table_line (2, _("TKIP cipher"), 23, _("yes"), 0, NULL);
|
||||
if (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP)
|
||||
print_table_line (2, _("CCMP cipher"), 23, _("yes"), 0, NULL);
|
||||
nmc->allowed_fields = nmc_fields_dev_list_wifi_prop;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_LIST_WIFI_PROP_ALL, nmc->allowed_fields, NULL);
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
|
||||
nmc->allowed_fields[0].value = "WIFI-PROPERTIES";
|
||||
nmc->allowed_fields[1].value = (wcaps & (NM_WIFI_DEVICE_CAP_CIPHER_WEP40 | NM_WIFI_DEVICE_CAP_CIPHER_WEP104)) ? _("yes") : _("no");
|
||||
nmc->allowed_fields[2].value = (wcaps & NM_WIFI_DEVICE_CAP_WPA) ? _("yes") : _("no");
|
||||
nmc->allowed_fields[3].value = (wcaps & NM_WIFI_DEVICE_CAP_RSN) ? _("yes") : _("no");
|
||||
nmc->allowed_fields[4].value = (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP) ? _("yes") : _("no");
|
||||
nmc->allowed_fields[5].value = (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP) ? _("yes") : _("no");
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag;
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */
|
||||
|
||||
printf ("\n"); /* empty line */
|
||||
|
||||
/* Wireless access points */
|
||||
if (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) {
|
||||
active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (device));
|
||||
active_bssid = active_ap ? nm_access_point_get_hw_address (active_ap) : NULL;
|
||||
}
|
||||
|
||||
printf (_("\n Wireless Access Points\n"));
|
||||
|
||||
nmc->print_fields.flags = NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.indent = 2; /* Indent by 2 spaces */
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_WIFI_LIST_COMMON, nmc->allowed_fields, NULL);
|
||||
nmc->allowed_fields = nmc_fields_dev_wifi_list;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_WIFI_LIST_FOR_DEV_LIST, nmc->allowed_fields, NULL);
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
|
||||
info = g_malloc0 (sizeof (APInfo));
|
||||
|
|
@ -442,12 +525,18 @@ show_device_info (gpointer data, gpointer user_data)
|
|||
g_ptr_array_foreach ((GPtrArray *) aps, detail_access_point, (gpointer) info);
|
||||
g_free (info);
|
||||
} else if (NM_IS_DEVICE_ETHERNET (device)) {
|
||||
printf (_("\n Wired Properties\n"));
|
||||
printf ("\n"); /* empty line */
|
||||
/* Wired properties */
|
||||
nmc->allowed_fields = nmc_fields_dev_list_wired_prop;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_LIST_WIRED_PROP_ALL, nmc->allowed_fields, NULL);
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
|
||||
if (nm_device_ethernet_get_carrier (NM_DEVICE_ETHERNET (device)))
|
||||
print_table_line (2, _("Carrier"), 23, _("on"), 0, NULL);
|
||||
else
|
||||
print_table_line (2, _("Carrier"), 23, _("off"), 0, NULL);
|
||||
nmc->allowed_fields[0].value = "WIRED-PROPERTIES";
|
||||
nmc->allowed_fields[1].value = (nm_device_ethernet_get_carrier (NM_DEVICE_ETHERNET (device))) ? _("on") : _("off");
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag;
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */
|
||||
}
|
||||
|
||||
/* IP Setup info */
|
||||
|
|
@ -455,42 +544,62 @@ show_device_info (gpointer data, gpointer user_data)
|
|||
NMIP4Config *cfg = nm_device_get_ip4_config (device);
|
||||
GSList *iter;
|
||||
|
||||
printf (_("\n IPv4 Settings:\n"));
|
||||
printf ("\n"); /* empty line */
|
||||
|
||||
nmc->allowed_fields = nmc_fields_dev_list_ip4_settings;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_LIST_IP4_SETTINGS_ALL, nmc->allowed_fields, NULL);
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
|
||||
for (iter = (GSList *) nm_ip4_config_get_addresses (cfg); iter; iter = g_slist_next (iter)) {
|
||||
NMIP4Address *addr = (NMIP4Address *) iter->data;
|
||||
guint32 prefix = nm_ip4_address_get_prefix (addr);
|
||||
char *tmp2;
|
||||
char *addr_str, *prefix_str, *gateway_str;
|
||||
|
||||
tmp = ip4_address_as_string (nm_ip4_address_get_address (addr));
|
||||
print_table_line (2, _("Address"), 23, tmp, 0, NULL);
|
||||
g_free (tmp);
|
||||
addr_str = ip4_address_as_string (nm_ip4_address_get_address (addr));
|
||||
|
||||
tmp2 = ip4_address_as_string (nm_utils_ip4_prefix_to_netmask (prefix));
|
||||
tmp = g_strdup_printf ("%d (%s)", prefix, tmp2);
|
||||
prefix_str = g_strdup_printf ("%d (%s)", prefix, tmp2);
|
||||
g_free (tmp2);
|
||||
print_table_line (2, _("Prefix"), 23, tmp, 0, NULL);
|
||||
g_free (tmp);
|
||||
|
||||
tmp = ip4_address_as_string (nm_ip4_address_get_gateway (addr));
|
||||
print_table_line (2, _("Gateway"), 23, tmp, 0, NULL);
|
||||
g_free (tmp);
|
||||
printf ("\n");
|
||||
gateway_str = ip4_address_as_string (nm_ip4_address_get_gateway (addr));
|
||||
|
||||
nmc->allowed_fields[0].value = "IPv4-SETTINGS";
|
||||
nmc->allowed_fields[1].value = addr_str;
|
||||
nmc->allowed_fields[2].value = prefix_str;
|
||||
nmc->allowed_fields[3].value = gateway_str;
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag;
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */
|
||||
g_free (addr_str);
|
||||
g_free (prefix_str);
|
||||
g_free (gateway_str);
|
||||
}
|
||||
|
||||
array = nm_ip4_config_get_nameservers (cfg);
|
||||
if (array) {
|
||||
int i;
|
||||
|
||||
printf ("\n"); /* empty line */
|
||||
|
||||
nmc->allowed_fields = nmc_fields_dev_list_ip4_dns;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_LIST_IP4_DNS_ALL, nmc->allowed_fields, NULL);
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
|
||||
for (i = 0; i < array->len; i++) {
|
||||
tmp = ip4_address_as_string (g_array_index (array, guint32, i));
|
||||
print_table_line (2, _("DNS"), 23, tmp, 0, NULL);
|
||||
nmc->allowed_fields[0].value = "IPv4-DNS";
|
||||
nmc->allowed_fields[1].value = tmp;
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag;
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */
|
||||
g_free (tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf ("\n\n");
|
||||
printf ("\n");
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -500,7 +609,7 @@ show_device_status (NMDevice *device, NmCli *nmc)
|
|||
nmc->allowed_fields[1].value = get_device_type (device);
|
||||
nmc->allowed_fields[2].value = device_state_to_string (nm_device_get_state (device));
|
||||
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_HEADER; /* Clear HEADER flag */
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields);
|
||||
}
|
||||
|
||||
|
|
@ -549,7 +658,7 @@ do_devices_status (NmCli *nmc, int argc, char **argv)
|
|||
goto error;
|
||||
}
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("Status of devices");
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields);
|
||||
|
||||
|
|
@ -598,9 +707,6 @@ do_devices_list (NmCli *nmc, int argc, char **argv)
|
|||
|
||||
devices = nm_client_get_devices (nmc->client);
|
||||
|
||||
/* Set allowed fields for use while printing in detail_access_point() */
|
||||
nmc->allowed_fields = nmc_fields_dev_wifi_list;
|
||||
|
||||
if (iface_specified) {
|
||||
for (i = 0; devices && (i < devices->len); i++) {
|
||||
NMDevice *candidate = g_ptr_array_index (devices, i);
|
||||
|
|
@ -852,7 +958,7 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
|
|||
goto error;
|
||||
}
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("WiFi scan list");
|
||||
|
||||
if (iface) {
|
||||
|
|
@ -979,15 +1085,22 @@ do_device_wifi (NmCli *nmc, int argc, char **argv)
|
|||
NMCResultCode
|
||||
do_devices (NmCli *nmc, int argc, char **argv)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
/* create NMClient */
|
||||
if (!nmc->get_client (nmc))
|
||||
goto error;
|
||||
goto end;
|
||||
|
||||
if (argc == 0)
|
||||
nmc->return_value = do_devices_status (nmc, argc-1, argv+1);
|
||||
if (argc == 0) {
|
||||
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
|
||||
goto error;
|
||||
nmc->return_value = do_devices_status (nmc, 0, NULL);
|
||||
}
|
||||
|
||||
if (argc > 0) {
|
||||
if (matches (*argv, "status") == 0) {
|
||||
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
|
||||
goto error;
|
||||
nmc->return_value = do_devices_status (nmc, argc-1, argv+1);
|
||||
}
|
||||
else if (matches (*argv, "list") == 0) {
|
||||
|
|
@ -997,6 +1110,8 @@ do_devices (NmCli *nmc, int argc, char **argv)
|
|||
nmc->return_value = do_device_disconnect (nmc, argc-1, argv+1);
|
||||
}
|
||||
else if (matches (*argv, "wifi") == 0) {
|
||||
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
|
||||
goto error;
|
||||
nmc->return_value = do_device_wifi (nmc, argc-1, argv+1);
|
||||
}
|
||||
else if (strcmp (*argv, "help") == 0) {
|
||||
|
|
@ -1008,6 +1123,12 @@ do_devices (NmCli *nmc, int argc, char **argv)
|
|||
}
|
||||
}
|
||||
|
||||
end:
|
||||
return nmc->return_value;
|
||||
|
||||
error:
|
||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||
g_error_free (error);
|
||||
return nmc->return_value;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ show_nm_status (NmCli *nmc)
|
|||
return nmc->return_value;
|
||||
}
|
||||
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("NetworkManager status");
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
|
||||
|
|
@ -152,7 +152,7 @@ show_nm_status (NmCli *nmc)
|
|||
nmc->allowed_fields[4].value = wwan_hw_enabled_str;
|
||||
nmc->allowed_fields[5].value = wwan_enabled_str;
|
||||
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_HEADER; /* Clear HEADER flag */
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */
|
||||
|
||||
return NMC_RESULT_SUCCESS;
|
||||
|
|
@ -163,6 +163,7 @@ show_nm_status (NmCli *nmc)
|
|||
NMCResultCode
|
||||
do_network_manager (NmCli *nmc, int argc, char **argv)
|
||||
{
|
||||
GError *error = NULL;
|
||||
gboolean enable_wifi;
|
||||
gboolean enable_wwan;
|
||||
guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0;
|
||||
|
|
@ -174,11 +175,15 @@ do_network_manager (NmCli *nmc, int argc, char **argv)
|
|||
goto end;
|
||||
|
||||
if (argc == 0) {
|
||||
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
|
||||
goto error;
|
||||
nmc->return_value = show_nm_status (nmc);
|
||||
}
|
||||
|
||||
if (argc > 0) {
|
||||
if (matches (*argv, "status") == 0) {
|
||||
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
|
||||
goto error;
|
||||
nmc->return_value = show_nm_status (nmc);
|
||||
}
|
||||
else if (matches (*argv, "sleep") == 0) {
|
||||
|
|
@ -190,6 +195,8 @@ do_network_manager (NmCli *nmc, int argc, char **argv)
|
|||
else if (matches (*argv, "wifi") == 0) {
|
||||
if (next_arg (&argc, &argv) != 0) {
|
||||
/* no argument, show current WiFi state */
|
||||
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
|
||||
goto error;
|
||||
if (nmc->required_fields && strcasecmp (nmc->required_fields, "WIFI")) {
|
||||
g_string_printf (nmc->return_text, _("Error: '--fields' value '%s' is not valid here; allowed fields: %s"),
|
||||
nmc->required_fields, NMC_FIELDS_NM_WIFI);
|
||||
|
|
@ -198,11 +205,11 @@ do_network_manager (NmCli *nmc, int argc, char **argv)
|
|||
}
|
||||
nmc->allowed_fields = nmc_fields_nm_status;
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_NM_WIFI, nmc->allowed_fields, NULL);
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("WiFi enabled");
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
nmc->allowed_fields[3].value = nm_client_wireless_get_enabled (nmc->client) ? _("enabled") : _("disabled");
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_HEADER; /* Clear HEADER flag */
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
} else {
|
||||
if (!strcmp (*argv, "on"))
|
||||
|
|
@ -219,6 +226,8 @@ do_network_manager (NmCli *nmc, int argc, char **argv)
|
|||
}
|
||||
else if (matches (*argv, "wwan") == 0) {
|
||||
if (next_arg (&argc, &argv) != 0) {
|
||||
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
|
||||
goto error;
|
||||
/* no argument, show current WWAN state */
|
||||
if (nmc->required_fields && strcasecmp (nmc->required_fields, "WWAN")) {
|
||||
g_string_printf (nmc->return_text, _("Error: '--fields' value '%s' is not valid here; allowed fields: %s"),
|
||||
|
|
@ -228,11 +237,11 @@ do_network_manager (NmCli *nmc, int argc, char **argv)
|
|||
}
|
||||
nmc->allowed_fields = nmc_fields_nm_status;
|
||||
nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_NM_WWAN, nmc->allowed_fields, NULL);
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_HEADER;
|
||||
nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER | NMC_PF_FLAG_FIELD_NAMES;
|
||||
nmc->print_fields.header_name = _("WWAN enabled");
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
nmc->allowed_fields[5].value = nm_client_wwan_get_enabled (nmc->client) ? _("enabled") : _("disabled");
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_HEADER; /* Clear HEADER flag */
|
||||
nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */
|
||||
print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */
|
||||
} else {
|
||||
if (!strcmp (*argv, "on"))
|
||||
|
|
@ -259,4 +268,11 @@ do_network_manager (NmCli *nmc, int argc, char **argv)
|
|||
end:
|
||||
quit ();
|
||||
return nmc->return_value;
|
||||
|
||||
error:
|
||||
quit ();
|
||||
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
|
||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||
g_error_free (error);
|
||||
return nmc->return_value;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -201,20 +201,6 @@ parse_command_line (NmCli *nmc, int argc, char **argv)
|
|||
argv++;
|
||||
}
|
||||
|
||||
/* Some validity options checks */
|
||||
if (nmc->print_output == NMC_PRINT_TERSE) {
|
||||
if (!nmc->required_fields) {
|
||||
g_string_printf (nmc->return_text, _("Option '--terse' requires specifying '--fields'."));
|
||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||
return nmc->return_value;
|
||||
} else if ( !strcasecmp (nmc->required_fields, "all")
|
||||
|| !strcasecmp (nmc->required_fields, "common")) {
|
||||
g_string_printf (nmc->return_text, _("Option '--terse' requires specific '--fields' option, not 'all' or 'common'."));
|
||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
||||
return nmc->return_value;
|
||||
}
|
||||
}
|
||||
|
||||
if (argc > 1)
|
||||
return do_cmd (nmc, argv[1], argc-1, argv+1);
|
||||
|
||||
|
|
|
|||
|
|
@ -63,11 +63,12 @@ typedef struct {
|
|||
} NmcOutputField;
|
||||
|
||||
/* Flags for NmcPrintFields */
|
||||
#define NMC_PF_FLAG_MULTILINE 0x00000001 /* Multiline output instead of tabular*/
|
||||
#define NMC_PF_FLAG_TERSE 0x00000002 /* Terse outpud mode */
|
||||
#define NMC_PF_FLAG_PRETTY 0x00000004 /* Pretty output mode */
|
||||
#define NMC_PF_FLAG_HEADER 0x00000008 /* Print headers instead of values */
|
||||
#define NMC_PF_FLAG_ESCAPE 0x00000010 /* Escape column separator and '\' */
|
||||
#define NMC_PF_FLAG_MULTILINE 0x00000001 /* Multiline output instead of tabular*/
|
||||
#define NMC_PF_FLAG_TERSE 0x00000002 /* Terse outpud mode */
|
||||
#define NMC_PF_FLAG_PRETTY 0x00000004 /* Pretty output mode */
|
||||
#define NMC_PF_FLAG_MAIN_HEADER 0x00000008 /* Print main header */
|
||||
#define NMC_PF_FLAG_FIELD_NAMES 0x00000010 /* Print field names instead of values */
|
||||
#define NMC_PF_FLAG_ESCAPE 0x00000020 /* Escape column separator and '\' */
|
||||
|
||||
typedef struct {
|
||||
GArray *indices; /* Array of field indices to the array of allowed fields */
|
||||
|
|
|
|||
|
|
@ -91,6 +91,24 @@ done:
|
|||
return array;
|
||||
}
|
||||
|
||||
gboolean
|
||||
nmc_terse_option_check (NMCPrintOutput print_output, const char *fields, GError **error)
|
||||
{
|
||||
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
||||
|
||||
if (print_output == NMC_PRINT_TERSE) {
|
||||
if (!fields) {
|
||||
g_set_error (error, 0, 0, _("Option '--terse' requires specifying '--fields'"));
|
||||
return FALSE;
|
||||
} else if ( !strcasecmp (fields, "all")
|
||||
|| !strcasecmp (fields, "common")) {
|
||||
g_set_error (error, 0, 0, _("Option '--terse' requires specific '--fields' option values , not '%s'"), fields);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Print both headers or values of 'field_values' array.
|
||||
* Entries to print and their order are specified via indices
|
||||
|
|
@ -110,20 +128,21 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[])
|
|||
gboolean multiline = fields.flags & NMC_PF_FLAG_MULTILINE;
|
||||
gboolean terse = fields.flags & NMC_PF_FLAG_TERSE;
|
||||
gboolean pretty = fields.flags & NMC_PF_FLAG_PRETTY;
|
||||
gboolean header = fields.flags & NMC_PF_FLAG_HEADER;
|
||||
gboolean main_header = fields.flags & NMC_PF_FLAG_MAIN_HEADER;
|
||||
gboolean field_names = fields.flags & NMC_PF_FLAG_FIELD_NAMES;
|
||||
gboolean escape = fields.flags & NMC_PF_FLAG_ESCAPE;
|
||||
|
||||
/* No headers are printed in terse mode:
|
||||
* - neither whole name header nor field (column) names
|
||||
* - neither main header nor field (column) names
|
||||
*/
|
||||
if (header && terse)
|
||||
if ((main_header || field_names) && terse)
|
||||
return;
|
||||
|
||||
if (multiline) {
|
||||
/* --- Multiline mode --- */
|
||||
enum { ML_HEADER_WIDTH = 79 };
|
||||
if (header && pretty) {
|
||||
/* Print the table header */
|
||||
if (main_header && pretty) {
|
||||
/* Print the main header */
|
||||
int header_width = g_utf8_strlen (fields.header_name, -1) + 4;
|
||||
table_width = header_width < ML_HEADER_WIDTH ? ML_HEADER_WIDTH : header_width;
|
||||
|
||||
|
|
@ -137,7 +156,7 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[])
|
|||
}
|
||||
|
||||
/* Print values */
|
||||
if (!header) {
|
||||
if (!field_names) {
|
||||
for (i = 0; i < fields.indices->len; i++) {
|
||||
char *tmp;
|
||||
idx = g_array_index (fields.indices, int, i);
|
||||
|
|
@ -159,7 +178,7 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[])
|
|||
|
||||
for (i = 0; i < fields.indices->len; i++) {
|
||||
idx = g_array_index (fields.indices, int, i);
|
||||
if (header)
|
||||
if (field_names)
|
||||
value = _(field_values[idx].name_l10n);
|
||||
else
|
||||
value = field_values[idx].value;
|
||||
|
|
@ -187,8 +206,8 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[])
|
|||
}
|
||||
}
|
||||
|
||||
/* Print the table header */
|
||||
if (header && pretty) {
|
||||
/* Print the main table header */
|
||||
if (main_header && pretty) {
|
||||
int header_width = g_utf8_strlen (fields.header_name, -1) + 4;
|
||||
table_width = table_width < header_width ? header_width : table_width;
|
||||
|
||||
|
|
@ -213,7 +232,7 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[])
|
|||
}
|
||||
|
||||
/* Print horizontal separator */
|
||||
if (header && pretty) {
|
||||
if (field_names && pretty) {
|
||||
if (str->len > 0) {
|
||||
line = g_strnfill (table_width, '-');
|
||||
printf ("%s\n", line);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
int matches (const char *cmd, const char *pattern);
|
||||
int next_arg (int *argc, char ***argv);
|
||||
GArray *parse_output_fields (const char *fields_str, const NmcOutputField fields_array[], GError **error);
|
||||
gboolean nmc_terse_option_check (NMCPrintOutput print_output, const char *fields, GError **error);
|
||||
void print_fields (const NmcPrintFields fields, const NmcOutputField field_values[]);
|
||||
void print_table_header (const char *name, ...);
|
||||
void print_table_line (int indent, ...);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue