base: Do support /dev/null as a config file
This commit is contained in:
		| @@ -535,6 +535,22 @@ heim_config_parse_dir_multi(heim_context context, | |||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static int | ||||||
|  | is_devnull(struct stat *st) | ||||||
|  | { | ||||||
|  | #ifdef WIN32 | ||||||
|  |     return 0; | ||||||
|  | #else | ||||||
|  |     struct stat devnullst; | ||||||
|  |  | ||||||
|  |     if (stat("/dev/null", &devnullst) == -1) | ||||||
|  |         return 0; | ||||||
|  |     return st->st_dev == devnullst.st_dev && st->st_ino == devnullst.st_ino; | ||||||
|  | #endif | ||||||
|  | } | ||||||
|  |  | ||||||
|  | HEIMDAL_THREAD_LOCAL int config_include_depth = 0; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Parse a configuration file and add the result into res. This |  * Parse a configuration file and add the result into res. This | ||||||
|  * interface can be used to parse several configuration files into one |  * interface can be used to parse several configuration files into one | ||||||
| @@ -548,8 +564,6 @@ heim_config_parse_dir_multi(heim_context context, | |||||||
|  * @ingroup heim_support |  * @ingroup heim_support | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| HEIMDAL_THREAD_LOCAL int config_include_depth = 0; |  | ||||||
|  |  | ||||||
| heim_error_code | heim_error_code | ||||||
| heim_config_parse_file_multi(heim_context context, | heim_config_parse_file_multi(heim_context context, | ||||||
|                              const char *fname, |                              const char *fname, | ||||||
| @@ -630,7 +644,7 @@ heim_config_parse_file_multi(heim_context context, | |||||||
|             goto out; |             goto out; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!S_ISREG(st.st_mode)) { |         if (!S_ISREG(st.st_mode) && !is_devnull(&st)) { | ||||||
|             (void) fclose(f.f); |             (void) fclose(f.f); | ||||||
|             heim_set_error_message(context, EISDIR, "not a regular file %s: %s", |             heim_set_error_message(context, EISDIR, "not a regular file %s: %s", | ||||||
|                                    fname, strerror(EISDIR)); |                                    fname, strerror(EISDIR)); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Nicolas Williams
					Nicolas Williams