summaryrefslogtreecommitdiffstats
path: root/nserver/src
diff options
context:
space:
mode:
Diffstat (limited to 'nserver/src')
-rw-r--r--nserver/src/ncmd.c53
-rw-r--r--nserver/src/ncmd.h12
2 files changed, 65 insertions, 0 deletions
diff --git a/nserver/src/ncmd.c b/nserver/src/ncmd.c
index 8c90831..ad57e2b 100644
--- a/nserver/src/ncmd.c
+++ b/nserver/src/ncmd.c
@@ -98,3 +98,56 @@ struct bstrList *cmd_parts(char *cmd)
return NULL;
}
+int find_function(struct bstrList *cmd_parts)
+{
+ // functions.
+ struct tagbstring fcreate = bsStatic("/create");
+ struct tagbstring fsample = bsStatic("/sample");
+ struct tagbstring fmean = bsStatic("/mean");
+ struct tagbstring fdump = bsStatic("/dump");
+ struct tagbstring fdelete = bsStatic("/delete");
+ struct tagbstring flist = bsStatic("/list");
+
+ check(cmd_parts != NULL, "cmd_parts is NULL");
+ check(cmd_parts->qty > 0, "qty check failed");
+
+ bstring cmd_name = cmd_parts->entry[0];
+ check(blength(cmd_name) > 0, "cmd_name check failed");
+
+ // trim cmd name
+ int rc = btrimws(cmd_name);
+ check(rc == BSTR_OK, "cmd name trim failed");
+
+ // find function for cmd_name
+ if (bstricmp(cmd_name, &fcreate) == 0) {
+ check(cmd_parts->qty == 2, "cmd invalid");
+
+ return NS_CREATE;
+ } else if (bstricmp(cmd_name, &fsample) == 0) {
+ check(cmd_parts->qty == 3, "cmd invalid");
+
+ return NS_SAMPLE;
+ } else if (bstricmp(cmd_name, &fmean) == 0) {
+ check(cmd_parts->qty == 2, "cmd invalid");
+
+ return NS_MEAN;
+ } else if (bstricmp(cmd_name, &fdump) == 0) {
+ check(cmd_parts->qty == 2, "cmd invalid");
+
+ return NS_DUMP;
+ } else if (bstricmp(cmd_name, &fdelete) == 0) {
+ check(cmd_parts->qty == 2, "cmd invalid");
+
+ return NS_DELETE;
+ } else if (bstricmp(cmd_name, &flist) == 0) {
+ check(cmd_parts->qty == 1, "cmd invalid");
+
+ return NS_LIST;
+ } else {
+ return NS_NOP;
+ }
+
+ error:
+ return NS_NOP;
+}
+
diff --git a/nserver/src/ncmd.h b/nserver/src/ncmd.h
index c1cf9a0..80ca45a 100644
--- a/nserver/src/ncmd.h
+++ b/nserver/src/ncmd.h
@@ -9,9 +9,21 @@
#define CMD_MIN_SIZE 5
#define CMD_MAX_SIZE 120
+enum FUNCTIONS {
+ NS_CREATE,
+ NS_SAMPLE,
+ NS_MEAN,
+ NS_DUMP,
+ NS_DELETE,
+ NS_LIST,
+ NS_NOP = -1
+};
+
int sanitize(char *cmd);
char *check_cmd(char *cmd);
struct bstrList *cmd_parts(char *cmd);
+int find_function(struct bstrList *cmd_parts);
+
#endif