]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- unbound-checkconf -f prints chroot with pidfile path.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 16 Jan 2015 14:31:02 +0000 (14:31 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 16 Jan 2015 14:31:02 +0000 (14:31 +0000)
git-svn-id: file:///svn/unbound/trunk@3316 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
doc/unbound-checkconf.8.in
smallapp/unbound-checkconf.c

index db5ad8cdee8d6691cd1c0bb536af67e8ff697e1d..80d0f7181580c1e96e798f25da340c7bc831f250 100644 (file)
@@ -1,6 +1,7 @@
 16 January 2015: Wouter
        - unit test for local unix connection.  Documentation and log_addr
          does not inspect port for AF_LOCAL.
+       - unbound-checkconf -f prints chroot with pidfile path.
 
 13 January 2015: Wouter
        - iana portlist update.
index 6d0e54516bc9a3dc6eec0b6e2aff6d561a465b33..6f35812b34ba85597f40472f67f5ab50ea76cc15 100644 (file)
@@ -13,6 +13,7 @@ unbound\-checkconf
 .SH "SYNOPSIS"
 .B unbound\-checkconf
 .RB [ \-h ]
+.RB [ \-f ]
 .RB [ \-o
 .IR option ]
 .RI [ cfgfile ]
@@ -29,6 +30,9 @@ The available options are:
 .B \-h
 Show the version and commandline option help.
 .TP
+.B \-f
+Print full pathname, with chroot applied to it.  Use with the -o option.
+.TP
 .B \-o\fI option
 If given, after checking the config file the value of this option is 
 printed to stdout.  For "" (disabled) options an empty line is printed.
index 7723c33576957fda57e4135ce4e7cf41eb1a7ffe..b5d7b9f44419c3ec20fb46bd4a9f9ffe8e8b237a 100644 (file)
@@ -78,6 +78,7 @@ usage()
        printf("        Checks unbound configuration file for errors.\n");
        printf("file    if omitted %s is used.\n", CONFIGFILE);
        printf("-o option       print value of option to stdout.\n");
+       printf("-f              output full pathname with chroot applied, eg. with -o pidfile.\n");
        printf("-h              show this usage help.\n");
        printf("Version %s\n", PACKAGE_VERSION);
        printf("BSD licensed, see LICENSE in source package for details.\n");
@@ -90,10 +91,15 @@ usage()
  * @param cfg: config
  * @param opt: option name without trailing :. 
  *     This is different from config_set_option.
+ * @param final: if final pathname with chroot applied has to be printed.
  */
 static void
-print_option(struct config_file* cfg, const char* opt)
+print_option(struct config_file* cfg, const char* opt, int final)
 {
+       if(strcmp(opt, "pidfile") == 0 && final) {
+               printf("%s\n", fname_after_chroot(cfg->pidfile, cfg, 1));
+               return;
+       }
        if(!config_get_option(cfg, opt, config_print_func, stdout))
                fatal_exit("cannot print option '%s'", opt);
 }
@@ -456,7 +462,7 @@ check_hints(struct config_file* cfg)
 
 /** check config file */
 static void
-checkconf(const char* cfgfile, const char* opt)
+checkconf(const char* cfgfile, const char* opt, int final)
 {
        struct config_file* cfg = config_create();
        if(!cfg)
@@ -467,7 +473,7 @@ checkconf(const char* cfgfile, const char* opt)
                exit(1);
        }
        if(opt) {
-               print_option(cfg, opt);
+               print_option(cfg, opt, final);
                config_delete(cfg);
                return;
        }
@@ -493,6 +499,7 @@ extern char* optarg;
 int main(int argc, char* argv[])
 {
        int c;
+       int final = 0;
        const char* f;
        const char* opt = NULL;
        const char* cfgfile = CONFIGFILE;
@@ -505,8 +512,11 @@ int main(int argc, char* argv[])
                cfgfile = CONFIGFILE;
 #endif /* USE_WINSOCK */
        /* parse the options */
-       while( (c=getopt(argc, argv, "ho:")) != -1) {
+       while( (c=getopt(argc, argv, "fho:")) != -1) {
                switch(c) {
+               case 'f':
+                       final = 1;
+                       break;
                case 'o':
                        opt = optarg;
                        break;
@@ -523,7 +533,7 @@ int main(int argc, char* argv[])
        if(argc == 1)
                f = argv[0];
        else    f = cfgfile;
-       checkconf(f, opt);
+       checkconf(f, opt, final);
        checklock_stop();
        return 0;
 }