diff options
Diffstat (limited to 'service/src/printdoc.c')
| -rw-r--r-- | service/src/printdoc.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/service/src/printdoc.c b/service/src/printdoc.c index 0eb3127..1e549c9 100644 --- a/service/src/printdoc.c +++ b/service/src/printdoc.c @@ -21,18 +21,23 @@ int save_submission(struct parseinfo *info, char *data, int len); void cat_cmd(char *arg); void list_cmd(char *arg); +void exit_cmd(char *arg); +void echo_cmd(char *arg); void submit_cmd(char *arg); void query_cmd(char *arg); struct command commands[] = { { "cat", cat_cmd }, { "help", list_cmd }, + { "exit", exit_cmd }, + { "echo", echo_cmd }, { "submit", submit_cmd }, { "query", query_cmd }, }; struct parseinfo cached; const char *resultdir; +int echo = 0; int save_submission(struct parseinfo *info, char *stldata, int stlsize) @@ -97,6 +102,19 @@ list_cmd(char *arg) } void +exit_cmd(char *arg) +{ + exit(0); +} + +void +echo_cmd(char *arg) +{ + echo ^= 1; + printf("Echo is %s\n", echo ? "enabled" : "disabled"); +} + +void submit_cmd(char *arg) { const char *bufp; @@ -212,6 +230,7 @@ cleanup: void cleanexit() { + printf("see you later!\n"); free_info(&cached); } @@ -244,6 +263,8 @@ main() if (linebuf[strlen(linebuf) - 1] == '\n') linebuf[strlen(linebuf) - 1] = '\0'; + if (echo) printf("%s\n", linebuf); + cp = strchr(linebuf, ' '); arg = cp ? cp + 1 : NULL; if (cp) *cp = 0; @@ -258,7 +279,4 @@ main() if (i == ARRSIZE(commands) && strlen(linebuf) != 0) fprintf(stderr, "No such command!\n"); } - - printf("see you later!\n"); - free_info(&cached); } |
