aboutsummaryrefslogtreecommitdiffstats
path: root/service/src
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2021-04-28 10:51:50 +0200
committerLouis Burda <quent.burda@gmail.com>2021-04-28 10:51:50 +0200
commit8aac44bb98af5442e29c8cb9a5a4acbe40d96bb2 (patch)
treeb5cea78af979ad734edf5835f1917b172e09cfd7 /service/src
parent53156862fa68b130c9a57f2824275f99017929ac (diff)
downloadenowars5-service-stldoctor-8aac44bb98af5442e29c8cb9a5a4acbe40d96bb2.tar.gz
enowars5-service-stldoctor-8aac44bb98af5442e29c8cb9a5a4acbe40d96bb2.zip
added sample service templates, basic service outline and moved service info to documentation dir
Diffstat (limited to 'service/src')
-rw-r--r--service/src/.gitignore2
-rw-r--r--service/src/Makefile6
-rw-r--r--service/src/cat5
-rw-r--r--service/src/printdoc.c134
-rw-r--r--service/src/stlfile.c4
-rw-r--r--service/src/stlfile.h10
6 files changed, 161 insertions, 0 deletions
diff --git a/service/src/.gitignore b/service/src/.gitignore
new file mode 100644
index 0000000..4620e7e
--- /dev/null
+++ b/service/src/.gitignore
@@ -0,0 +1,2 @@
+printdoc
+*.o
diff --git a/service/src/Makefile b/service/src/Makefile
new file mode 100644
index 0000000..d3c81bc
--- /dev/null
+++ b/service/src/Makefile
@@ -0,0 +1,6 @@
+
+%.o: %.c %.h
+ $(CC) -c -o $@ $< -I .
+
+printdoc: printdoc.c stlfile.o
+ $(CC) -o $@ $< $(CFLAGS) $(LDLIBS)
diff --git a/service/src/cat b/service/src/cat
new file mode 100644
index 0000000..aab4a8b
--- /dev/null
+++ b/service/src/cat
@@ -0,0 +1,5 @@
+
+ /\_/\ [ENO] _
+ = u u =_______| \\ < GET THE FLAG! ;)
+ _ w __( \__))
+ c_____>__(_____)__,
diff --git a/service/src/printdoc.c b/service/src/printdoc.c
new file mode 100644
index 0000000..93b1f97
--- /dev/null
+++ b/service/src/printdoc.c
@@ -0,0 +1,134 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <unistd.h>
+
+#include "stlfile.h"
+
+#define ARRSIZE(x) (sizeof(x)/sizeof((x)[0]))
+
+struct command {
+ const char *name;
+ void (*func)();
+};
+
+void request_info();
+void parse_file();
+void cat_flag();
+void list_commands();
+
+struct command commands[] = {
+ { "request", request_info },
+ { "info", parse_file },
+ { "cat", cat_flag },
+ { "ls", list_commands },
+};
+
+const char*
+ask(const char *fmtstr, ...)
+{
+ static char linebuf[256];
+ va_list ap;
+
+ va_start(ap, fmtstr);
+ vprintf(fmtstr, ap);
+ va_end(ap);
+
+ fgets(linebuf, sizeof(linebuf), stdin);
+
+ return linebuf;
+}
+
+void*
+die(const char *fmtstr, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmtstr);
+ vfprintf(stderr, fmtstr, ap);
+ va_end(ap);
+
+ exit(EXIT_FAILURE);
+}
+
+void
+request_info()
+{
+ const char *bufp;
+ char *end, *contents;
+ int len;
+
+ bufp = ask("How large is your file?\n");
+ len = strtoul(bufp, &end, 10);
+ if (!len || *end || len < 7000)
+ die("Invalid file length!\n");
+
+ printf("Ok! Im listening..\n");
+ contents = malloc(len);
+ read(STDIN_FILENO, contents, len);
+
+ printf("I got: %s\n", contents);
+
+ free(contents);
+}
+
+void
+parse_file()
+{
+ printf("hi\n");
+}
+
+void
+cat_flag()
+{
+ FILE *f;
+ char catbuf[256];
+ int nb;
+
+ f = fopen("cat", "r");
+ nb = fread(catbuf, 1, sizeof(catbuf), f);
+ fclose(f);
+
+ printf("%.*s\n", nb, catbuf);
+}
+
+void
+list_commands()
+{
+ int i;
+
+ printf("Available commands:\n");
+ for (i = 0; i < ARRSIZE(commands); i++)
+ printf("%s%s", i ? " " : "", commands[i].name);
+ printf("\n");
+}
+
+int
+main()
+{
+ char linebuf[256], *cp;
+ int exit, i;
+
+ exit = 0;
+ while (!exit) {
+ memset(linebuf, ' ', sizeof(linebuf));
+
+ printf("$ ");
+ exit = !fgets(linebuf, sizeof(linebuf), stdin);
+ if (exit || !*linebuf) break;
+
+ if (*linebuf == '\n') continue;
+ linebuf[strlen(linebuf) - 1] = '\0';
+
+ cp = strchr(linebuf, ' ');
+ if (cp) *cp = 0;
+ for (i = 0; i < ARRSIZE(commands); i++) {
+ if (!strcmp(commands[i].name, linebuf)) {
+ commands[i].func();
+ break;
+ }
+ }
+ }
+
+ printf("see you later!\n");
+}
diff --git a/service/src/stlfile.c b/service/src/stlfile.c
new file mode 100644
index 0000000..37a3a0a
--- /dev/null
+++ b/service/src/stlfile.c
@@ -0,0 +1,4 @@
+#include "stlfile.h"
+
+
+
diff --git a/service/src/stlfile.h b/service/src/stlfile.h
new file mode 100644
index 0000000..307c7c4
--- /dev/null
+++ b/service/src/stlfile.h
@@ -0,0 +1,10 @@
+#ifndef STLFILE_H
+#define STLFILE_H
+
+#include <stdlib.h>
+#include <string.h>
+
+
+
+
+#endif // STLFILE_H