uci: Allow setting the UCI config path on the command line
authorMatthias Schiffer <mschiffer@universe-factory.net>
Tue, 4 Mar 2014 17:37:03 +0000 (18:37 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 19 Mar 2014 14:19:56 +0000 (15:19 +0100)
Add a -c switch which allows setting an alternative UCI path instead of using
the libuci default.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
config.c
main.c
netifd.h

index 6784dda..4fe72dc 100644 (file)
--- a/config.c
+++ b/config.c
@@ -190,8 +190,10 @@ config_init_package(const char *config)
                ctx = uci_alloc_context();
                uci_ctx = ctx;
 
+               if (config_path)
+                       uci_set_confdir(ctx, config_path);
+
 #ifdef DUMMY_MODE
-               uci_set_confdir(ctx, "./config");
                uci_set_savedir(ctx, "./tmp");
 #endif
        } else {
diff --git a/main.c b/main.c
index f70db54..c5e8e67 100644 (file)
--- a/main.c
+++ b/main.c
@@ -29,6 +29,7 @@
 
 unsigned int debug_mask = 0;
 const char *main_path = DEFAULT_MAIN_PATH;
+const char *config_path = DEFAULT_CONFIG_PATH;
 const char *resolv_conf = DEFAULT_RESOLV_CONF;
 static char **global_argv;
 
@@ -237,6 +238,7 @@ static int usage(const char *progname)
                " -d <mask>:            Mask for debug messages\n"
                " -s <path>:            Path to the ubus socket\n"
                " -p <path>:            Path to netifd addons (default: %s)\n"
+               " -c <path>:            Path to UCI configuration\n"
                " -h <path>:            Path to the hotplug script\n"
                " -r <path>:            Path to resolv.conf\n"
                " -l <level>:           Log output level (default: %d)\n"
@@ -286,7 +288,7 @@ int main(int argc, char **argv)
 
        global_argv = argv;
 
-       while ((ch = getopt(argc, argv, "d:s:p:h:r:l:S")) != -1) {
+       while ((ch = getopt(argc, argv, "d:s:p:c:h:r:l:S")) != -1) {
                switch(ch) {
                case 'd':
                        debug_mask = strtoul(optarg, NULL, 0);
@@ -297,6 +299,9 @@ int main(int argc, char **argv)
                case 'p':
                        main_path = optarg;
                        break;
+               case 'c':
+                       config_path = optarg;
+                       break;
                case 'h':
                        hotplug_cmd_path = optarg;
                        break;
index 75e997c..5a90858 100644 (file)
--- a/netifd.h
+++ b/netifd.h
 
 #ifdef DUMMY_MODE
 #define DEFAULT_MAIN_PATH      "./examples"
+#define DEFAULT_CONFIG_PATH    "./config"
 #define DEFAULT_HOTPLUG_PATH   "./examples/hotplug-cmd"
 #define DEFAULT_RESOLV_CONF    "./tmp/resolv.conf"
 #else
 #define DEFAULT_MAIN_PATH      "/lib/netifd"
+#define DEFAULT_CONFIG_PATH    NULL /* use the default set in libuci */
 #define DEFAULT_HOTPLUG_PATH   "/sbin/hotplug-call"
 #define DEFAULT_RESOLV_CONF    "/tmp/resolv.conf.auto"
 #endif
@@ -94,6 +96,7 @@ struct device;
 struct interface;
 
 extern const char *main_path;
+extern const char *config_path;
 void netifd_restart(void);
 void netifd_reload(void);