Use real path of all files internally, requires _XOPEN_SOURCE>=500, fixes issue #137

This commit is contained in:
Bert Münnich
2014-03-17 20:01:53 +01:00
parent 653a6ee83b
commit 6d7acac3d1
2 changed files with 22 additions and 9 deletions

18
main.c
View File

@ -127,16 +127,28 @@ void check_add_file(char *filename)
filecnt *= 2;
files = (fileinfo_t*) s_realloc(files, filecnt * sizeof(fileinfo_t));
}
#if defined _BSD_SOURCE || defined _XOPEN_SOURCE && \
((_XOPEN_SOURCE - 0) >= 500 || defined _XOPEN_SOURCE_EXTENDED)
if ((files[fileidx].path = realpath(filename, NULL)) == NULL) {
warn("could not get real path of file: %s\n", filename);
return;
}
#else
if (*filename != '/') {
files[fileidx].path = absolute_path(filename);
if (files[fileidx].path == NULL) {
if ((files[fileidx].path = absolute_path(filename)) == NULL) {
warn("could not get absolute path of file: %s\n", filename);
return;
}
} else {
files[fileidx].path = NULL;
}
#endif
files[fileidx].loaded = false;
files[fileidx].name = s_strdup(filename);
if (*filename == '/')
if (files[fileidx].path == NULL)
files[fileidx].path = files[fileidx].name;
if ((bn = strrchr(files[fileidx].name , '/')) != NULL && bn[1] != '\0')
files[fileidx].base = ++bn;