aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gen.c0
-rw-r--r--src/gen.h0
-rw-r--r--src/main.c16
-rw-r--r--src/opt.c62
-rw-r--r--src/opt.h9
-rw-r--r--src/parse.c0
-rw-r--r--src/parse.h0
7 files changed, 87 insertions, 0 deletions
diff --git a/src/gen.c b/src/gen.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/gen.c
diff --git a/src/gen.h b/src/gen.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/gen.h
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..cd5eb3a
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,16 @@
+#include "opt.h"
+
+#include <stdio.h>
+
+int main(int argc, char **argv)
+{
+ opt_parse(argc, argv);
+
+ if (opt_infile_str())
+ puts(opt_infile_str());
+
+ if (opt_outfile_str())
+ puts(opt_outfile_str());
+
+ return 0;
+}
diff --git a/src/opt.c b/src/opt.c
new file mode 100644
index 0000000..f4a1969
--- /dev/null
+++ b/src/opt.c
@@ -0,0 +1,62 @@
+#include "opt.h"
+
+#include "../reqs/simple-opt/simple-opt.h"
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+static struct simple_opt options[] = {
+ { SIMPLE_OPT_FLAG, 'h', "help", false,
+ "print this help message and exit" },
+ { SIMPLE_OPT_FLAG, 'v', "version", false,
+ "print the version of confconf in use and exit" },
+ { SIMPLE_OPT_STRING, 'i', "input", true,
+ "specify file to read from (default is stdin)", "<file>" },
+ { SIMPLE_OPT_STRING, 'o', "output", true,
+ "specify file to write to (default is stdout)", "<file>" },
+ { SIMPLE_OPT_END }
+};
+
+void opt_parse(int argc, char **argv)
+{
+ struct simple_opt_result result;
+ const char version[] = "confconf develop";
+
+ result = simple_opt_parse(argc, argv, options);
+
+ /* parse err */
+ if (result.result_type != SIMPLE_OPT_RESULT_SUCCESS) {
+ simple_opt_print_error(stderr, 80, argv[0], result);
+ exit(EXIT_FAILURE);
+ }
+
+ /* help */
+ if (options[0].was_seen) {
+ simple_opt_print_usage(stdout, 70, argv[0],
+ "[-i input] [-o output]",
+ "confconf is a config file parser generator for C",
+ options);
+ exit(EXIT_SUCCESS);
+ }
+
+ /* version */
+ if (options[1].was_seen) {
+ puts(version);
+ exit(EXIT_SUCCESS);
+ }
+}
+
+const char* opt_infile_str(void)
+{
+ return (options[2].was_seen
+ ? options[2].val_string
+ : NULL);
+}
+
+const char* opt_outfile_str(void)
+{
+ return (options[3].was_seen
+ ? options[3].val_string
+ : NULL);
+}
diff --git a/src/opt.h b/src/opt.h
new file mode 100644
index 0000000..ec328e6
--- /dev/null
+++ b/src/opt.h
@@ -0,0 +1,9 @@
+#ifndef CONFCONF_OPT_H
+#define CONFCONF_OPT_H
+
+void opt_parse(int argc, char **argv);
+
+const char* opt_infile_str(void);
+const char* opt_outfile_str(void);
+
+#endif
diff --git a/src/parse.c b/src/parse.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/parse.c
diff --git a/src/parse.h b/src/parse.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/parse.h