This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Max gerrit-no-reply at lists.osmocom.org
Review at https://gerrit.osmocom.org/2462
Simplify ctrl cmd lookup
Replace if-else ladder & gotos with single switch statement to make
reading code easier.
Change-Id: Ida1b389b571c60c26813cd29e61b3e4423c5df0f
---
M src/ctrl/control_if.c
1 file changed, 19 insertions(+), 21 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/62/2462/1
diff --git a/src/ctrl/control_if.c b/src/ctrl/control_if.c
index 7d3edd2..cdcccc7 100644
--- a/src/ctrl/control_if.c
+++ b/src/ctrl/control_if.c
@@ -192,7 +192,7 @@
{
char *request;
int i, j, ret, node;
-
+ bool break_cycle = false;
vector vline, cmdvec, cmds_vec;
if (cmd->type == CTRL_TYPE_SET_REPLY ||
@@ -247,14 +247,20 @@
}
}
- if (rc == 1) {
- /* do nothing */
- } else if (rc == -ENODEV)
- goto err_missing;
- else if (rc == -ERANGE)
- goto err_index;
- else {
- /* If we're here the rest must be the command */
+ switch (rc) {
+ case 1: /* do nothing */
+ break;
+ case -ENODEV:
+ cmd_free_strvec(vline);
+ cmd->type = CTRL_TYPE_ERROR;
+ cmd->reply = "Error while resolving object";
+ return ret;
+ case -ERANGE:
+ cmd_free_strvec(vline);
+ cmd->type = CTRL_TYPE_ERROR;
+ cmd->reply = "Error while parsing the index.";
+ return ret;
+ default: /* If we're here the rest must be the command */
cmdvec = vector_init(vector_active(vline)-i);
for (j=i; j<vector_active(vline); j++) {
vector_set(cmdvec, vector_slot(vline, j));
@@ -270,10 +276,13 @@
}
ret = ctrl_cmd_exec(cmdvec, cmd, cmds_vec, data);
-
vector_free(cmdvec);
+ break_cycle = true;
break;
}
+
+ if (break_cycle)
+ break;
if (i+1 == vector_active(vline))
cmd->reply = "Command not present.";
@@ -300,17 +309,6 @@
if (ret == CTRL_CMD_ERROR)
cmd->type = CTRL_TYPE_ERROR;
- return ret;
-
-err_missing:
- cmd_free_strvec(vline);
- cmd->type = CTRL_TYPE_ERROR;
- cmd->reply = "Error while resolving object";
- return ret;
-err_index:
- cmd_free_strvec(vline);
- cmd->type = CTRL_TYPE_ERROR;
- cmd->reply = "Error while parsing the index.";
return ret;
}
--
To view, visit https://gerrit.osmocom.org/2462
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ida1b389b571c60c26813cd29e61b3e4423c5df0f
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Max <msuraev at sysmocom.de>