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