commit 1a90e43cf4c4a6578c2888a7a023d88ce82261a6
parent 774b230afec7f578c881c868aea4888fda2b2462
Author: MikoĊaj Lenczewski <mblenczewski@gmail.com>
Date: Sun, 12 Feb 2023 17:39:47 +0000
Added primitive argument parsing to brzeszczot
Diffstat:
3 files changed, 64 insertions(+), 1 deletion(-)
diff --git a/brzeszczot/include/brzeszczot/argparse.h b/brzeszczot/include/brzeszczot/argparse.h
@@ -0,0 +1,27 @@
+#ifndef BRZESZCZOT_ARGPARSE_H
+#define BRZESZCZOT_ARGPARSE_H
+
+#include "brzeszczot.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+enum brzeszczot_mode {
+ WAD_DUMP,
+ INIBIN_DUMP,
+};
+
+struct opts {
+ enum brzeszczot_mode mode;
+ char const *src, *dst;
+};
+
+extern b32
+argparse(s32 argc, char **argv, struct opts *out);
+
+#ifdef __cplusplus
+};
+#endif /* __cplusplus */
+
+#endif /* BRZESZCZOT_ARGPARSE_H */
diff --git a/brzeszczot/makefile.mk b/brzeszczot/makefile.mk
@@ -18,7 +18,8 @@ BRZESZCZOT_FLAGS := \
$(BRZESZCZOT_CFLAGS) \
$(LDFLAGS) -lriot
-BRZESZCZOT_SOURCES := brzeszczot/src/brzeszczot.c
+BRZESZCZOT_SOURCES := brzeszczot/src/brzeszczot.c \
+ brzeszczot/src/argparse.c
BRZESZCZOT_OBJECTS := $(BRZESZCZOT_SOURCES:%.c=$(OBJ)/%.c.o)
BRZESZCZOT_OBJDEPS := $(BRZESZCZOT_OBJECTS:%.o=%.d)
diff --git a/brzeszczot/src/argparse.c b/brzeszczot/src/argparse.c
@@ -0,0 +1,35 @@
+#include "brzeszczot/argparse.h"
+
+void
+usage(s32 argc, char **argv) {
+ (void) argc;
+
+ fprintf(stderr, "Usage: %s <src-file> <dst-file> <wad|inibin>\n", argv[0]);
+}
+
+b32
+argparse(s32 argc, char **argv, struct opts *out) {
+ assert(out);
+
+ (void) argc;
+ (void) argv;
+
+ if (argc < 4) {
+ usage(argc, argv);
+ return false;
+ }
+
+ out->src = argv[1];
+ out->dst = argv[2];
+
+ if (strcmp(argv[3], "wad") == 0) {
+ out->mode = WAD_DUMP;
+ } else if (strcmp(argv[3], "inibin") == 0) {
+ out->mode = INIBIN_DUMP;
+ } else {
+ usage(argc, argv);
+ return false;
+ }
+
+ return true;
+}