diff options
author | Bert Münnich <ber.t@posteo.de> | 2014-03-17 20:01:53 +0100 |
---|---|---|
committer | Bert Münnich <ber.t@posteo.de> | 2014-03-17 20:01:53 +0100 |
commit | 6d7acac3d132c5be09a9a4e8d0f4ebd4972e9385 (patch) | |
tree | fdc879d53995a7ff4e8f49ab9810a5156e74d7e2 | |
parent | 653a6ee83b722e430ac3068f53650dd382d9209b (diff) |
Use real path of all files internally, requires _XOPEN_SOURCE>=500, fixes issue #137
-rw-r--r-- | Makefile | 13 | ||||
-rw-r--r-- | main.c | 18 |
2 files changed, 22 insertions, 9 deletions
@@ -1,12 +1,13 @@ -VERSION = git-20140218 +VERSION = git-20140317 PREFIX = /usr/local MANPREFIX = $(PREFIX)/share/man -CC = gcc -CFLAGS = -std=c99 -Wall -pedantic -O2 -I$(PREFIX)/include -DHAVE_GIFLIB -LDFLAGS = -L$(PREFIX)/lib -LIBS = -lX11 -lImlib2 -lgif +CC = gcc +CFLAGS = -std=c99 -Wall -pedantic -O2 +CPPFLAGS = -I$(PREFIX)/include -D_XOPEN_SOURCE=500 -DHAVE_GIFLIB +LDFLAGS = -L$(PREFIX)/lib +LIBS = -lX11 -lImlib2 -lgif SRC = commands.c exif.c image.c main.c options.c thumbs.c util.c window.c OBJ = $(SRC:.c=.o) @@ -16,7 +17,7 @@ all: sxiv $(OBJ): Makefile config.h .c.o: - $(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -c -o $@ $< + $(CC) $(CFLAGS) $(CPPFLAGS) -DVERSION=\"$(VERSION)\" -c -o $@ $< config.h: cp config.def.h $@ @@ -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; |