Fix missing path concatination
This commit is contained in:
parent
0c13c03a73
commit
ce59bb364f
1 changed files with 19 additions and 5 deletions
24
src/config.c
24
src/config.c
|
@ -348,20 +348,34 @@ config_load_directory(config_t *config, const char *directory_name)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
// Process each entry.
|
||||
|
||||
while((directory_entry = readdir(directory)) != NULL)
|
||||
{
|
||||
struct stat sb;
|
||||
const char *entry_name = directory_entry->d_name;
|
||||
if(stat(entry_name, &sb))
|
||||
|
||||
size_t copied = 0;
|
||||
|
||||
// Add 2 for '/' and '\0'.
|
||||
size_t path_size = strlen(directory_name) + strlen(entry_name) + 2;
|
||||
char *path = malloc(sizeof(char) * path_size);
|
||||
path[0] = '\0';
|
||||
|
||||
copied += strlcat(path + copied, directory_name, path_size - copied);
|
||||
if(path[copied - 1] != '/')
|
||||
{
|
||||
LOGGER_WARNING("failed to get info for '%s': %s\n", entry_name, strerror(errno));
|
||||
copied += strlcat(path + copied, "/", path_size - copied);
|
||||
}
|
||||
copied += strlcat(path + copied, entry_name, path_size - copied);
|
||||
|
||||
if(stat(path, &sb))
|
||||
{
|
||||
LOGGER_WARNING("failed to get info for '%s': %s\n", path, strerror(errno));
|
||||
}
|
||||
if(S_ISREG(sb.st_mode))
|
||||
{
|
||||
config_load_file(config, entry_name);
|
||||
config_load_file(config, path);
|
||||
}
|
||||
free(path);
|
||||
}
|
||||
|
||||
// Close directory and exit.
|
||||
|
|
Loading…
Reference in a new issue