diff options
Diffstat (limited to 'lib/parse_ini.c')
| -rw-r--r-- | lib/parse_ini.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/lib/parse_ini.c b/lib/parse_ini.c index 004396fe..76953e9e 100644 --- a/lib/parse_ini.c +++ b/lib/parse_ini.c | |||
| @@ -1,9 +1,9 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * Nagios-plugins parse_ini library | 3 | * Monitoring Plugins parse_ini library |
| 4 | * | 4 | * |
| 5 | * License: GPL | 5 | * License: GPL |
| 6 | * Copyright (c) 2007 Nagios Plugins Development Team | 6 | * Copyright (c) 2007 Monitoring Plugins Development Team |
| 7 | * | 7 | * |
| 8 | * This program is free software: you can redistribute it and/or modify | 8 | * This program is free software: you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by | 9 | * it under the terms of the GNU General Public License as published by |
| @@ -49,7 +49,7 @@ static int read_defaults(FILE *f, const char *stanza, np_arg_list **opts); | |||
| 49 | static int add_option(FILE *f, np_arg_list **optlst); | 49 | static int add_option(FILE *f, np_arg_list **optlst); |
| 50 | /* internal function to find default file */ | 50 | /* internal function to find default file */ |
| 51 | static char* default_file(void); | 51 | static char* default_file(void); |
| 52 | /* internal function to stat() files */ | 52 | /* internal function to test files access */ |
| 53 | static int test_file(const char* env, int len, const char* file, char* temp_file); | 53 | static int test_file(const char* env, int len, const char* file, char* temp_file); |
| 54 | 54 | ||
| 55 | /* parse_locator decomposes a string of the form | 55 | /* parse_locator decomposes a string of the form |
| @@ -101,7 +101,7 @@ np_arg_list* np_get_defaults(const char *locator, const char *default_section){ | |||
| 101 | } else { | 101 | } else { |
| 102 | inifile=fopen(i.file, "r"); | 102 | inifile=fopen(i.file, "r"); |
| 103 | } | 103 | } |
| 104 | if(inifile==NULL) die(STATE_UNKNOWN, _("Can't read config file")); | 104 | if(inifile==NULL) die(STATE_UNKNOWN, "%s\n", _("Can't read config file")); |
| 105 | if(read_defaults(inifile, i.stanza, &defaults)==FALSE) | 105 | if(read_defaults(inifile, i.stanza, &defaults)==FALSE) |
| 106 | die(STATE_UNKNOWN, _("Invalid section '%s' in config file '%s'\n"), i.stanza, i.file); | 106 | die(STATE_UNKNOWN, _("Invalid section '%s' in config file '%s'\n"), i.stanza, i.file); |
| 107 | 107 | ||
| @@ -163,7 +163,7 @@ static int read_defaults(FILE *f, const char *stanza, np_arg_list **opts){ | |||
| 163 | * we're dealing with a config error | 163 | * we're dealing with a config error |
| 164 | */ | 164 | */ |
| 165 | case NOSTANZA: | 165 | case NOSTANZA: |
| 166 | die(STATE_UNKNOWN, _("Config file error")); | 166 | die(STATE_UNKNOWN, "%s\n", _("Config file error")); |
| 167 | break; | 167 | break; |
| 168 | /* we're in a stanza, but for a different plugin */ | 168 | /* we're in a stanza, but for a different plugin */ |
| 169 | case WRONGSTANZA: | 169 | case WRONGSTANZA: |
| @@ -173,7 +173,7 @@ static int read_defaults(FILE *f, const char *stanza, np_arg_list **opts){ | |||
| 173 | case RIGHTSTANZA: | 173 | case RIGHTSTANZA: |
| 174 | ungetc(c, f); | 174 | ungetc(c, f); |
| 175 | if(add_option(f, opts)){ | 175 | if(add_option(f, opts)){ |
| 176 | die(STATE_UNKNOWN, _("Config file error")); | 176 | die(STATE_UNKNOWN, "%s\n", _("Config file error")); |
| 177 | } | 177 | } |
| 178 | status=TRUE; | 178 | status=TRUE; |
| 179 | break; | 179 | break; |
| @@ -229,7 +229,7 @@ static int add_option(FILE *f, np_arg_list **optlst){ | |||
| 229 | if(optend==NULL) optend=eqptr; | 229 | if(optend==NULL) optend=eqptr; |
| 230 | --optend; | 230 | --optend; |
| 231 | /* ^[[:space:]]*=foo is a syntax error */ | 231 | /* ^[[:space:]]*=foo is a syntax error */ |
| 232 | if(optptr==eqptr) die(STATE_UNKNOWN, _("Config file error\n")); | 232 | if(optptr==eqptr) die(STATE_UNKNOWN, "%s\n", _("Config file error")); |
| 233 | /* continue from '=' to start of value or EOL */ | 233 | /* continue from '=' to start of value or EOL */ |
| 234 | for(valptr=eqptr+1; valptr<lineend && isspace(*valptr); valptr++); | 234 | for(valptr=eqptr+1; valptr<lineend && isspace(*valptr); valptr++); |
| 235 | /* continue to the end of value */ | 235 | /* continue to the end of value */ |
| @@ -256,7 +256,7 @@ static int add_option(FILE *f, np_arg_list **optlst){ | |||
| 256 | cfg_len+=1; | 256 | cfg_len+=1; |
| 257 | } | 257 | } |
| 258 | /* A line with no equal sign isn't valid */ | 258 | /* A line with no equal sign isn't valid */ |
| 259 | if(equals==0) die(STATE_UNKNOWN, _("Config file error\n")); | 259 | if(equals==0) die(STATE_UNKNOWN, "%s\n", _("Config file error")); |
| 260 | 260 | ||
| 261 | /* okay, now we have all the info we need, so we create a new np_arg_list | 261 | /* okay, now we have all the info we need, so we create a new np_arg_list |
| 262 | * element and set the argument... | 262 | * element and set the argument... |
| @@ -350,7 +350,6 @@ static char* default_file(void){ | |||
| 350 | * existence. Returns 1 if found, 0 if not and -1 if test wasn't performed. | 350 | * existence. Returns 1 if found, 0 if not and -1 if test wasn't performed. |
| 351 | */ | 351 | */ |
| 352 | static int test_file(const char* env, int len, const char* file, char* temp_file){ | 352 | static int test_file(const char* env, int len, const char* file, char* temp_file){ |
| 353 | struct stat sb; | ||
| 354 | 353 | ||
| 355 | /* test if len + filelen + '/' + '\0' fits in temp_file */ | 354 | /* test if len + filelen + '/' + '\0' fits in temp_file */ |
| 356 | if((len+strlen(file)+2)>MAX_INPUT_BUFFER) return -1; | 355 | if((len+strlen(file)+2)>MAX_INPUT_BUFFER) return -1; |
| @@ -360,7 +359,7 @@ static int test_file(const char* env, int len, const char* file, char* temp_file | |||
| 360 | strncat(temp_file,"/",len+1); | 359 | strncat(temp_file,"/",len+1); |
| 361 | strncat(temp_file,file,len+strlen(file)+1); | 360 | strncat(temp_file,file,len+strlen(file)+1); |
| 362 | 361 | ||
| 363 | if(stat(temp_file, &sb) != -1) return 1; | 362 | if(access(temp_file, F_OK) == 0) return 1; |
| 364 | return 0; | 363 | return 0; |
| 365 | } | 364 | } |
| 366 | 365 | ||
