]> the.earth.li Git - onak.git/commitdiff
Parse pks_bin_dir / mail_dir in the C config handling
authorJonathan McDowell <noodles@earth.li>
Tue, 7 Jun 2016 07:37:07 +0000 (08:37 +0100)
committerJonathan McDowell <noodles@earth.li>
Tue, 7 Jun 2016 07:37:07 +0000 (08:37 +0100)
pks_bin_dir and mail_dir are only used by the Perl that handles
incoming keyserver email, but parse them in the C code rather than
just ignoring them. This helps pave the way for some config file format
changes and tightening up the parsing to complain about unused options.

onak-conf.c
onak-conf.h

index f97f2610053b5bbb8753f1fd8648eec78de44278..0af6a45458e2c708a87d8822c3286f48aec25f8d 100644 (file)
@@ -53,6 +53,9 @@ struct onak_config config = {
        .dbinit = DBINIT,
 
        .check_sighash = true,
+
+       .bin_dir = NULL,
+       .mail_dir = NULL,
 };
 
 bool parsebool(char *str, bool fallback)
@@ -178,12 +181,14 @@ void readconfig(const char *configfile) {
                } else if (!strncmp("this_site ", curline, 10)) {
                        config.thissite = strdup(&curline[10]);
                } else if (!strncmp("socket_name ", curline, 12) ||
-                               !strncmp("pks_bin_dir ", curline, 12) ||
-                               !strncmp("mail_dir ", curline, 9) ||
                                !strncmp("www_port ", curline, 9)) {
                        /*
                         * Not applicable; ignored for compatibility with pksd.
                         */
+               } else if (!strncmp("pks_bin_dir ", curline, 12)) {
+                       config.bin_dir = strdup(&curline[12]);
+               } else if (!strncmp("mail_dir ", curline, 9)) {
+                       config.mail_dir = strdup(&curline[9]);
                } else if (!strncmp("db_backend ", curline, 11)) {
                        backend->type = strdup(&curline[11]);
                        backend->name = strdup(&curline[11]);
@@ -280,4 +285,12 @@ void cleanupconfig(void) {
                free(config.backends_dir);
                config.backends_dir = NULL;
        }
+       if (config.bin_dir != NULL) {
+               free(config.bin_dir);
+               config.bin_dir = NULL;
+       }
+       if (config.mail_dir != NULL) {
+               free(config.mail_dir);
+               config.mail_dir = NULL;
+       }
 }
index 0d937c23d3578db380935a3dc6f322074718add3..d0495207af945f561e26d778f18a65c566fb845b 100644 (file)
@@ -89,6 +89,16 @@ struct onak_config {
 
        /** Should we verify signature hashes match? */
        bool check_sighash;
+
+       /*
+        * Options used by the email handling script.
+        * None of the C code uses this information, but we should be able
+        * to parse it.
+        */
+       /** Location of the onak binary, so the mail script can find it. */
+       char *bin_dir;
+       /** Where incoming mail gets queue, one file per mail. */
+       char *mail_dir;
 };
 
 /**