default the conffile variable to the default file name instead of NULL.
authordlg <dlg@openbsd.org>
Mon, 21 Mar 2022 04:35:41 +0000 (04:35 +0000)
committerdlg <dlg@openbsd.org>
Mon, 21 Mar 2022 04:35:41 +0000 (04:35 +0000)
this avoids having to test for NULL and swap the right name in place
in a bunch of places. it also avoids having NULL passed to format
strings in the parser.

the only place where it actually matters if we're using the default
or not is when we're parsing the config. if you don't specify a
config, and the default file doesnt exist, that's ok.

ok florian@

sbin/dhcpleased/dhcpleased.c
sbin/dhcpleased/dhcpleased.h
sbin/dhcpleased/parse.y

index 3972d2a..f57dda5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: dhcpleased.c,v 1.23 2022/01/04 06:20:37 florian Exp $ */
+/*     $OpenBSD: dhcpleased.c,v 1.24 2022/03/21 04:35:41 dlg Exp $     */
 
 /*
  * Copyright (c) 2017, 2021 Florian Obser <florian@openbsd.org>
@@ -97,7 +97,8 @@ static struct imsgev  *iev_engine;
 #ifndef SMALL
 struct dhcpleased_conf *main_conf;
 #endif
-char                   *conffile;
+const char              default_conffile[] = _PATH_CONF_FILE;
+const char             *conffile = default_conffile;
 pid_t                   frontend_pid;
 pid_t                   engine_pid;
 
@@ -308,13 +309,8 @@ main(int argc, char *argv[])
                warnx("control socket setup failed");
 #endif /* SMALL */
 
-       if (conffile != NULL) {
-               if (unveil(conffile, "r") == -1)
-                       fatal("unveil %s", conffile);
-       } else {
-               if (unveil(_PATH_CONF_FILE, "r") == -1)
-                       fatal("unveil %s", _PATH_CONF_FILE);
-       }
+       if (unveil(conffile, "r") == -1)
+               fatal("unveil %s", conffile);
        if (unveil("/dev/bpf", "rw") == -1)
                fatal("unveil /dev/bpf");
 
index a987b02..c5d7e20 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: dhcpleased.h,v 1.13 2022/01/04 06:20:37 florian Exp $ */
+/*     $OpenBSD: dhcpleased.h,v 1.14 2022/03/21 04:35:41 dlg Exp $     */
 
 /*
  * Copyright (c) 2017, 2021 Florian Obser <florian@openbsd.org>
@@ -318,7 +318,7 @@ int                 *changed_ifaces(struct dhcpleased_conf *, struct
 void   print_config(struct dhcpleased_conf *);
 
 /* parse.y */
-struct dhcpleased_conf *parse_config(char *);
+struct dhcpleased_conf *parse_config(const char *);
 int                     cmdline_symset(char *);
 #else
 #define        sin_to_str(x...)        ""
index 0031dcd..e3a6895 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: parse.y,v 1.6 2022/01/04 06:20:37 florian Exp $       */
+/*     $OpenBSD: parse.y,v 1.7 2022/03/21 04:35:41 dlg Exp $   */
 
 /*
  * Copyright (c) 2018 Florian Obser <florian@openbsd.org>
@@ -720,16 +720,17 @@ popfile(void)
 }
 
 struct dhcpleased_conf *
-parse_config(char *filename)
+parse_config(const char *filename)
 {
+       extern const char        default_conffile[];
        struct sym              *sym, *next;
 
        conf = config_new_empty();
 
-       file = pushfile(filename != NULL ? filename : _PATH_CONF_FILE, 0);
+       file = pushfile(filename, 0);
        if (file == NULL) {
                /* no default config file is fine */
-               if (errno == ENOENT && filename == NULL)
+               if (errno == ENOENT && filename == default_conffile)
                        return (conf);
                log_warn("%s", filename);
                free(conf);