aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/actionparser.c27
-rw-r--r--src/actions.c1
-rw-r--r--src/ckinfo.h.in18
3 files changed, 44 insertions, 2 deletions
diff --git a/src/actionparser.c b/src/actionparser.c
index 3e193ff..0057e7f 100644
--- a/src/actionparser.c
+++ b/src/actionparser.c
@@ -15,6 +15,7 @@
* -------------------------------------------------------------------------- */
#include "actionparser.h"
#include "ckutil.h"
+#include "ckinfo.h"
/* accepted commands */
/* [0] is the count */
@@ -26,6 +27,7 @@ const char* const strLIST[] = {"5", "list", "l", "ls", "-l", "-ls"};
const char* const strSEARCH[] = {"3", "search", "s", "-s"};
const char* const strHELP[] = {"5", "help", "h", "-?", "-h", "--help"};
const char* const strConfDir[] = {"4", "config", "conf", "c", "-c"};
+const char* const strVersion[] = {"4", "version", "--version", "-v", "-V"};
/* Number of opts */
static int optNum;
@@ -100,6 +102,7 @@ int parse_ADD(UserOpt *opt) {
int parse_DEL(UserOpt *opt) {
return -1;
}
+
int parse_EDIT(UserOpt *opt) {
/* EDIT expects 1 to 2 arguments */
if (optNum <= pos || optNum > pos + 2) {
@@ -111,9 +114,10 @@ int parse_EDIT(UserOpt *opt) {
fill_args_list(arg_num, opt);
return 1;
}
+
int parse_LIST(UserOpt *opt) {
/* List expects a maximum of than 3 arguments */
- if (optNum > pos + 4) {
+ if (optNum <= pos || optNum > pos + 4) {
opt->err = PERR_LIST_WRONG;
return -1;
}
@@ -122,6 +126,7 @@ int parse_LIST(UserOpt *opt) {
fill_args_list(arg_num, opt);
return 1;
}
+
int parse_SEARCH(UserOpt *opt) {
/* Search expects a maximum of 1 argument */
if (optNum > pos + 1) {
@@ -133,6 +138,7 @@ int parse_SEARCH(UserOpt *opt) {
fill_args_list(arg_num, opt);
return 1;
}
+
int parse_HELP(UserOpt *opt) {
return -1;
}
@@ -230,6 +236,22 @@ void get_config(UserOpt *opt) {
token = opts[pos];
}
+void version() {
+ /* get first token */
+ next_token();
+
+ for (int i = 1; i < atoi(strVersion[0]) + 1; i++) {
+ if (strcmp(token, strVersion[i]) == 0) {
+ print_version();
+ exit(0);
+ }
+ }
+
+ // rewind
+ pos = pos - 1;
+ token = opts[pos];
+}
+
void get_possible_action_strings(char *dest, CkAction ckAction) {
char buf[STR_S];
switch (ckAction) {
@@ -321,6 +343,9 @@ ActionParseResult parse_action(int argc, char* argv[], UserOpt *opt) {
/* skip the program name */
next_token();
+ /* handle version info */
+ version();
+
/* figure what is the config file */
get_config(opt);
diff --git a/src/actions.c b/src/actions.c
index b164779..54e781b 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -154,7 +154,6 @@ int run_LIST(UserOpt *opt, Conf *conf) {
list_free(list_type);
return 0;
case LT_NONE:
- printf("What should I list? (paths, configs)\n");
close_DB(&db);
list_free(list_type);
return 1;
diff --git a/src/ckinfo.h.in b/src/ckinfo.h.in
new file mode 100644
index 0000000..3b7f843
--- /dev/null
+++ b/src/ckinfo.h.in
@@ -0,0 +1,18 @@
+#ifndef CK_INFO_H
+#define CK_INFO_H
+
+#include <stdio.h>
+
+#define CK_MAJOR_VERSION @ck_MAJOR_VERSION@
+#define CK_MINOR_VERSION @ck_MINOR_VERSION@
+
+
+extern void print_version() {
+ printf("ck version %d.%d\n", CK_MAJOR_VERSION, CK_MINOR_VERSION);
+ printf("ck Copyright (C) 2018 gramanas\n\
+This program comes with ABSOLUTELY NO WARRANTY.\n\
+This is free software, and you are welcome to redistribute it under\n\
+certain condition. See the LICENCE file in the source tree for details.\n");
+}
+
+#endif /* CK_INFO_H */