aboutsummaryrefslogtreecommitdiffstats
path: root/src/confparser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/confparser.h')
-rw-r--r--src/confparser.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/confparser.h b/src/confparser.h
new file mode 100644
index 0000000..2ed8f82
--- /dev/null
+++ b/src/confparser.h
@@ -0,0 +1,45 @@
+/* confparser.h - Configuration file parser for ck -------------*- C -*-
+ *
+ * This file is part of ck, the config keeper
+ *
+ * ---------------------------------------------------------------------
+ * The code here and in confparser.c is responsible parsing
+ * the configuration and get the values set there
+ * ------------------------------------------------------------------ */
+#ifndef CONFPARSER_H
+#define CONFPARSER_H
+#define CONFIG_VARIABLES_TABLE \
+ X(VC_dir, " version_control_dir = %s ", "Version Control directory") \
+ X(SCRT_dir, " secret_dir = %s " , "Secret directory")
+
+
+typedef enum ConfingVariables ConfVar;
+#define X(var, str, name) CV_##var,
+enum ConfingVariables {
+ CV_NO_VAL_OR_COMMENT,
+ CONFIG_VARIABLES_TABLE
+};
+#undef X
+
+typedef enum ConfigParserResults ConfigParserResult;
+#define X(var, str, name) \
+ CPR_WRONG_##var,
+enum ConfigParserResults {
+ CPR_OK,
+ CPR_NO_CONFIG_FILE,
+ CPR_WRONG_CONFIG,
+ CONFIG_VARIABLES_TABLE
+};
+#undef X
+
+typedef struct ConfigValues Conf;
+#define X(var, str, name) char* var;
+struct ConfigValues {
+ ConfigParserResult result;
+ CONFIG_VARIABLES_TABLE
+};
+#undef X
+
+extern int config_file_parse(Conf *conf);
+
+#endif // CONFPARSER_H