diff --git a/client/advertising.c b/client/advertising.c
index 8f03601..f0fd359 100644
--- a/client/advertising.c
+++ b/client/advertising.c
ad.uuids = NULL;
ad.uuids_len = 0;
- if (!argc || !strlen(argv[0]))
+ if (argc < 2 || !strlen(argv[1]))
return;
- ad.uuids = g_strdupv(argv);
+ ad.uuids = g_strdupv(&argv[1]);
if (!ad.uuids) {
bt_shell_printf("Failed to parse input\n");
return;
ad_clear_service();
- if (!argc)
+ if (argc < 2)
return;
- ad.service.uuid = g_strdup(argv[0]);
+ ad.service.uuid = g_strdup(argv[1]);
data = &ad.service.data;
for (i = 1; i < (unsigned int) argc; i++) {
ad_clear_manufacturer();
- if (argc == 0)
+ if (argc < 2)
return;
- val = strtol(argv[0], &endptr, 0);
+ val = strtol(argv[1], &endptr, 0);
if (!endptr || *endptr != '\0' || val > UINT16_MAX) {
bt_shell_printf("Invalid manufacture id\n");
return;
ad.manufacturer.id = val;
data = &ad.manufacturer.data;
- for (i = 1; i < (unsigned int) argc; i++) {
+ for (i = 2; i < (unsigned int) argc; i++) {
if (i >= G_N_ELEMENTS(data->data)) {
bt_shell_printf("Too much data\n");
ad_clear_manufacturer();
diff --git a/client/gatt.c b/client/gatt.c
index 4335d52..059cae8 100644
--- a/client/gatt.c
+++ b/client/gatt.c
service = g_new0(struct service, 1);
service->conn = conn;
- service->uuid = g_strdup(argv[0]);
+ service->uuid = g_strdup(argv[1]);
service->path = g_strdup_printf("%s/service%p", APP_PATH, service);
service->primary = primary;
{
struct service *service;
- service = service_find(argv[0]);
+ service = service_find(argv[1]);
if (!service) {
bt_shell_printf("Failed to unregister service object\n");
return;
chrc = g_new0(struct chrc, 1);
chrc->service = service;
- chrc->uuid = g_strdup(argv[0]);
+ chrc->uuid = g_strdup(argv[1]);
chrc->path = g_strdup_printf("%s/chrc%p", service->path, chrc);
chrc->flags = g_strsplit(argv[1], ",", -1);
{
struct chrc *chrc;
- chrc = chrc_find(argv[0]);
+ chrc = chrc_find(argv[1]);
if (!chrc) {
bt_shell_printf("Failed to unregister characteristic object\n");
return;
desc = g_new0(struct desc, 1);
desc->chrc = g_list_last(service->chrcs)->data;
- desc->uuid = g_strdup(argv[0]);
+ desc->uuid = g_strdup(argv[1]);
desc->path = g_strdup_printf("%s/desc%p", desc->chrc->path, desc);
desc->flags = g_strsplit(argv[1], ",", -1);
{
struct desc *desc;
- desc = desc_find(argv[0]);
+ desc = desc_find(argv[1]);
if (!desc) {
bt_shell_printf("Failed to unregister descriptor object\n");
return;
diff --git a/client/main.c b/client/main.c
index 98123d5..3534bd3 100644
--- a/client/main.c
+++ b/client/main.c
{
const char **opt;
- if (!strcmp(argv[0], "on") || !strcmp(argv[0], "yes")) {
+ if (!strcmp(argv[1], "on") || !strcmp(argv[1], "yes")) {
*value = TRUE;
if (option)
*option = "";
return TRUE;
}
- if (!strcmp(argv[0], "off") || !strcmp(argv[0], "no")) {
+ if (!strcmp(argv[1], "off") || !strcmp(argv[1], "no")) {
*value = FALSE;
return TRUE;
}
for (opt = arg_table; opt && *opt; opt++) {
- if (strcmp(argv[0], *opt) == 0) {
+ if (strcmp(argv[1], *opt) == 0) {
*value = TRUE;
*option = *opt;
return TRUE;
}
}
- bt_shell_printf("Invalid argument %s\n", argv[0]);
+ bt_shell_printf("Invalid argument %s\n", argv[1]);
return FALSE;
}
DBusMessageIter iter;
const char *address;
- if (!argc || !strlen(argv[0])) {
+ if (argc < 2 || !strlen(argv[1])) {
if (check_default_ctrl() == FALSE)
return;
proxy = default_ctrl->proxy;
} else {
- adapter = find_ctrl_by_address(ctrl_list, argv[0]);
+ adapter = find_ctrl_by_address(ctrl_list, argv[1]);
if (!adapter) {
bt_shell_printf("Controller %s not available\n",
- argv[0]);
+ argv[1]);
return;
}
proxy = adapter->proxy;
{
struct adapter *adapter;
- adapter = find_ctrl_by_address(ctrl_list, argv[0]);
+ adapter = find_ctrl_by_address(ctrl_list, argv[1]);
if (!adapter) {
- bt_shell_printf("Controller %s not available\n", argv[0]);
+ bt_shell_printf("Controller %s not available\n", argv[1]);
return;
}
if (check_default_ctrl() == FALSE)
return;
- name = g_strdup(argv[0]);
+ name = g_strdup(argv[1]);
if (g_dbus_proxy_set_property_basic(default_ctrl->proxy, "Alias",
DBUS_TYPE_STRING, &name,
filtered_scan_uuids = NULL;
filtered_scan_uuids_len = 0;
- if (!argc || !strlen(argv[0]))
+ if (argc < 2 || !strlen(argv[1]))
goto commit;
- filtered_scan_uuids = g_strdupv(argv);
+ filtered_scan_uuids = g_strdupv(&argv[1]);
if (!filtered_scan_uuids) {
bt_shell_printf("Failed to parse input\n");
return;
{
filtered_scan_pathloss = DISTANCE_VAL_INVALID;
- if (!argc || !strlen(argv[0]))
+ if (argc < 2 || !strlen(argv[1]))
filtered_scan_rssi = DISTANCE_VAL_INVALID;
else
- filtered_scan_rssi = atoi(argv[0]);
+ filtered_scan_rssi = atoi(argv[1]);
cmd_set_scan_filter_commit();
}
{
filtered_scan_rssi = DISTANCE_VAL_INVALID;
- if (!argc || !strlen(argv[0]))
+ if (argc < 2 || !strlen(argv[1]))
filtered_scan_pathloss = DISTANCE_VAL_INVALID;
else
- filtered_scan_pathloss = atoi(argv[0]);
+ filtered_scan_pathloss = atoi(argv[1]);
cmd_set_scan_filter_commit();
}
{
g_free(filtered_scan_transport);
- if (!argc || !strlen(argv[0]))
+ if (argc < 2 || !strlen(argv[1]))
filtered_scan_transport = NULL;
else
- filtered_scan_transport = g_strdup(argv[0]);
+ filtered_scan_transport = g_strdup(argv[1]);
cmd_set_scan_filter_commit();
}
static void cmd_set_scan_filter_duplicate_data(int argc, char *argv[])
{
- if (!argc || !strlen(argv[0]))
+ if (argc < 2 || !strlen(argv[1]))
filtered_scan_duplicate_data = false;
- else if (!strcmp(argv[0], "on"))
+ else if (!strcmp(argv[1], "on"))
filtered_scan_duplicate_data = true;
- else if (!strcmp(argv[0], "off"))
+ else if (!strcmp(argv[1], "off"))
filtered_scan_duplicate_data = false;
else {
- bt_shell_printf("Invalid option: %s\n", argv[0]);
+ bt_shell_printf("Invalid option: %s\n", argv[1]);
return;
}
{
GDBusProxy *proxy;
- if (!argc || !strlen(argv[0])) {
+ if (argc < 2 || !strlen(argv[1])) {
if (default_dev)
return default_dev;
bt_shell_printf("Missing device address argument\n");
if (check_default_ctrl() == FALSE)
return NULL;
- proxy = find_proxy_by_address(default_ctrl->devices, argv[0]);
+ proxy = find_proxy_by_address(default_ctrl->devices, argv[1]);
if (!proxy) {
- bt_shell_printf("Device %s not available\n", argv[0]);
+ bt_shell_printf("Device %s not available\n", argv[1]);
return NULL;
}
return;
}
- bt_shell_printf("Attempting to pair with %s\n", argv[0]);
+ bt_shell_printf("Attempting to pair with %s\n", argv[1]);
}
static void cmd_trust(int argc, char *argv[])
trusted = TRUE;
- str = g_strdup_printf("%s trust", argv[0]);
+ str = g_strdup_printf("%s trust", argv[1]);
if (g_dbus_proxy_set_property_basic(proxy, "Trusted",
DBUS_TYPE_BOOLEAN, &trusted,
trusted = FALSE;
- str = g_strdup_printf("%s untrust", argv[0]);
+ str = g_strdup_printf("%s untrust", argv[1]);
if (g_dbus_proxy_set_property_basic(proxy, "Trusted",
DBUS_TYPE_BOOLEAN, &trusted,
blocked = TRUE;
- str = g_strdup_printf("%s block", argv[0]);
+ str = g_strdup_printf("%s block", argv[1]);
if (g_dbus_proxy_set_property_basic(proxy, "Blocked",
DBUS_TYPE_BOOLEAN, &blocked,
blocked = FALSE;
- str = g_strdup_printf("%s unblock", argv[0]);
+ str = g_strdup_printf("%s unblock", argv[1]);
if (g_dbus_proxy_set_property_basic(proxy, "Blocked",
DBUS_TYPE_BOOLEAN, &blocked,
if (check_default_ctrl() == FALSE)
return;
- if (strcmp(argv[0], "*") == 0) {
+ if (strcmp(argv[1], "*") == 0) {
GList *list;
for (list = default_ctrl->devices; list;
return;
}
- proxy = find_proxy_by_address(default_ctrl->devices, argv[0]);
+ proxy = find_proxy_by_address(default_ctrl->devices, argv[1]);
if (!proxy) {
- bt_shell_printf("Device %s not available\n", argv[0]);
+ bt_shell_printf("Device %s not available\n", argv[1]);
return;
}
if (check_default_ctrl() == FALSE)
return;
- proxy = find_proxy_by_address(default_ctrl->devices, argv[0]);
+ proxy = find_proxy_by_address(default_ctrl->devices, argv[1]);
if (!proxy) {
- bt_shell_printf("Device %s not available\n", argv[0]);
+ bt_shell_printf("Device %s not available\n", argv[1]);
return;
}
return;
}
- bt_shell_printf("Attempting to connect to %s\n", argv[0]);
+ bt_shell_printf("Attempting to connect to %s\n", argv[1]);
}
static void disconn_reply(DBusMessage *message, void *user_data)
return;
}
- if (!argc || strlen(argv[0]) == 0) {
+ if (argc < 2 || strlen(argv[1]) == 0) {
DBusMessageIter iter;
const char *addr;
bt_shell_printf("Attempting to disconnect from %s\n", addr);
} else
- bt_shell_printf("Attempting to disconnect from %s\n", argv[0]);
+ bt_shell_printf("Attempting to disconnect from %s\n", argv[1]);
}
static void cmd_list_attributes(int argc, char *argv[])
return;
}
- name = g_strdup(argv[0]);
+ name = g_strdup(argv[1]);
if (g_dbus_proxy_set_property_basic(default_dev, "Alias",
DBUS_TYPE_STRING, &name,
return;
}
- proxy = gatt_select_attribute(default_attr, argv[0]);
+ proxy = gatt_select_attribute(default_attr, argv[1]);
if (proxy)
set_default_attribute(proxy);
}
{
GDBusProxy *proxy;
- if (!argc || !strlen(argv[0])) {
+ if (argc < 2 || !strlen(argv[1])) {
if (default_attr)
return default_attr;
bt_shell_printf("Missing attribute argument\n");
return NULL;
}
- proxy = gatt_select_attribute(default_attr, argv[0]);
+ proxy = gatt_select_attribute(default_attr, argv[1]);
if (!proxy) {
- bt_shell_printf("Attribute %s not available\n", argv[0]);
+ bt_shell_printf("Attribute %s not available\n", argv[1]);
return NULL;
}
return;
}
- gatt_write_attribute(default_attr, argv[0]);
+ gatt_write_attribute(default_attr, argv[1]);
}
static void cmd_acquire_write(int argc, char *argv[])
return;
}
- gatt_acquire_write(default_attr, argv[0]);
+ gatt_acquire_write(default_attr, argv[1]);
}
static void cmd_release_write(int argc, char *argv[])
return;
}
- gatt_release_write(default_attr, argv[0]);
+ gatt_release_write(default_attr, argv[1]);
}
static void cmd_acquire_notify(int argc, char *argv[])
return;
}
- gatt_acquire_notify(default_attr, argv[0]);
+ gatt_acquire_notify(default_attr, argv[1]);
}
static void cmd_release_notify(int argc, char *argv[])
return;
}
- gatt_release_notify(default_attr, argv[0]);
+ gatt_release_notify(default_attr, argv[1]);
}
static void cmd_notify(int argc, char *argv[])
static void cmd_set_advertise_name(int argc, char *argv[])
{
- if (strcmp(argv[0], "on") == 0 || strcmp(argv[0], "yes") == 0) {
+ if (strcmp(argv[1], "on") == 0 || strcmp(argv[1], "yes") == 0) {
ad_advertise_name(dbus_conn, true);
return;
}
- if (strcmp(argv[0], "off") == 0 || strcmp(argv[0], "no") == 0) {
+ if (strcmp(argv[1], "off") == 0 || strcmp(argv[1], "no") == 0) {
ad_advertise_name(dbus_conn, false);
return;
}
- ad_advertise_local_name(dbus_conn, argv[0]);
+ ad_advertise_local_name(dbus_conn, argv[1]);
}
static void cmd_set_advertise_appearance(int argc, char *argv[])
long int value;
char *endptr = NULL;
- if (strcmp(argv[0], "on") == 0 || strcmp(argv[0], "yes") == 0) {
+ if (strcmp(argv[1], "on") == 0 || strcmp(argv[1], "yes") == 0) {
ad_advertise_appearance(dbus_conn, true);
return;
}
- if (strcmp(argv[0], "off") == 0 || strcmp(argv[0], "no") == 0) {
+ if (strcmp(argv[1], "off") == 0 || strcmp(argv[1], "no") == 0) {
ad_advertise_appearance(dbus_conn, false);
return;
}
- value = strtol(argv[0], &endptr, 0);
+ value = strtol(argv[1], &endptr, 0);
if (!endptr || *endptr != '\0' || value > UINT16_MAX) {
bt_shell_printf("Invalid argument\n");
return;
long int value;
char *endptr = NULL;
- value = strtol(argv[0], &endptr, 0);
+ value = strtol(argv[1], &endptr, 0);
if (!endptr || *endptr != '\0' || value > UINT16_MAX) {
bt_shell_printf("Invalid argument\n");
return;
long int value;
char *endptr = NULL;
- value = strtol(argv[0], &endptr, 0);
+ value = strtol(argv[1], &endptr, 0);
if (!endptr || *endptr != '\0' || value > UINT16_MAX) {
bt_shell_printf("Invalid argument\n");
return;
diff --git a/src/shared/shell.c b/src/shared/shell.c
index d262f53..7e639cc 100644
--- a/src/shared/shell.c
+++ b/src/shared/shell.c
{
const struct bt_shell_menu *menu;
- if (!argc || !strlen(argv[0])) {
+ if (argc < 2 || !strlen(argv[1])) {
bt_shell_printf("Missing name argument\n");
return;
}
- menu = find_menu(argv[0]);
+ menu = find_menu(argv[1]);
if (!menu) {
- bt_shell_printf("Unable find menu with name: %s\n", argv[0]);
+ bt_shell_printf("Unable find menu with name: %s\n", argv[1]);
return;
}
int flags = WRDE_NOCMD;
if (!entry->arg || entry->arg[0] == '\0') {
- if (argc) {
+ if (argc > 1) {
print_text(COLOR_HIGHLIGHT, "Too many arguments");
return -EINVAL;
}
}
/* Check if there are enough arguments */
- if ((unsigned) argc < w.we_wordc && !w.we_offs) {
+ if ((unsigned) argc - 1 < w.we_wordc && !w.we_offs) {
print_text(COLOR_HIGHLIGHT, "Missing %s argument",
- w.we_wordv[argc]);
+ w.we_wordv[argc - 1]);
goto fail;
}
}
/* Check if there are too many arguments */
- if ((unsigned) argc > w.we_wordc && !w.we_offs) {
+ if ((unsigned) argc - 1 > w.we_wordc && !w.we_offs) {
print_text(COLOR_HIGHLIGHT, "Too many arguments: %d > %zu",
- argc, w.we_wordc);
+ argc - 1, w.we_wordc);
goto fail;
}
if (data.menu == data.main && !strcmp(entry->cmd, "back"))
continue;
- return cmd_exec(entry, --argc, ++argv);
+ return cmd_exec(entry, argc, argv);
}
return -ENOENT;