Code

check_procs captures stderr and adds to plugin output. This is
[nagiosplug.git] / lib / parse_ini.c
index 67d8367f5503c21a7fd5cd3217bcdd60f055ac6b..96551cfe881a459daf196ce34ce45c9fe8655577 100644 (file)
 *****************************************************************************/
 
 #include "common.h"
-#include "parse_ini.h"
 #include "utils_base.h"
+#include "parse_ini.h"
 #include <ctype.h>
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
 
-/* FIXME: N::P dies if section is not found */
-/* FIXME: N::P dies if config file is not found */
+/* TODO: die like N::P if config file is not found */
 
 /* np_ini_info contains the result of parsing a "locator" in the format
  * [stanza_name][@config_filename] (check_foo@/etc/foo.ini, for example)
@@ -99,19 +98,16 @@ np_arg_list* np_get_defaults(const char *locator, const char *default_section){
        /* if a file was specified or if we're using the default file */
        if(i.file != NULL && strlen(i.file) > 0){
                if(strcmp(i.file, "-")==0){
-                       inifile=stdout; /* FIXME: Shouldn't it be 'stdin' ??? */
+                       inifile=stdin;
                } else {
                        inifile=fopen(i.file, "r");
                }
                if(inifile==NULL) die(STATE_UNKNOWN, _("Can't read config file"));
-               if(read_defaults(inifile, i.stanza, &defaults)==FALSE && strcmp(i.stanza, default_section) && inifile!=stdout) { /* FIXME: Shouldn't it be 'stdin' ??? */
-                       /* We got nothing, try the default section */
-                       rewind(inifile);
-                       read_defaults(inifile, default_section, &defaults);
-               }
+               if(read_defaults(inifile, i.stanza, &defaults)==FALSE)
+                       die(STATE_UNKNOWN, _("Invalid section '%s' in config file '%s'\n"), i.stanza, i.file);
 
                free(i.file);
-               if(inifile!=stdout) fclose(inifile); /* FIXME: Shouldn't it be 'stdin' ??? */
+               if(inifile!=stdin) fclose(inifile);
        }
        free(i.stanza);
        return defaults;