From c6053a7e8e8d37dbab3926cfaf4e04a1d136c87a Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 4 May 2018 06:31:46 -0700 Subject: More reasonable fallback for self path. * Makefile (opt/txr.o, dbg/txr.o): Set up TXR_REL_PATH preprocessor symbol on command line which specifies the hard installation path derived from the configure prefix. * txr.c (get_self_path): The fallback implementation simply returns TXR_REL_PATH. This will work if in fact the executable is installed at that path. What it means is that the build of TXR which uses this fallback get_self_path will not support relocation: the installation cannot be moved to another directory, yet still find its supporting files. This is better than what we are replacing: not working even in the original installation directory, if not invoked by an absolute path. --- Makefile | 6 ++++-- txr.c | 10 +--------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index c9d0f99d..64c2f02a 100644 --- a/Makefile +++ b/Makefile @@ -325,9 +325,11 @@ dbg/ffi.o: TXR_CFLAGS += $(LIBFFI_CFLAGS) # calculations. opt/txr.o: TXR_CFLAGS += -DPROG_NAME=\"$(PROG)\" \ - -DTXR_REL_PATH=\"$(bindir_rel)/$(PROG)$(EXE)\" + -DTXR_REL_PATH=\"$(bindir_rel)/$(PROG)$(EXE)\" \ + -DTXR_INST_PATH=\"$(bindir)/$(PROG)$(EXE)\" dbg/txr.o: TXR_CFLAGS += -DPROG_NAME=\"$(PROG)-dbg\" \ - -DTXR_REL_PATH=\"$(bindir_rel)/$(PROG)-dbg$(EXE)\" + -DTXR_REL_PATH=\"$(bindir_rel)/$(PROG)-dbg$(EXE)\" \ + -DTXR_INST_PATH=\"$(bindir)/$(PROG)$(EXE)\" opt/txr-win.o: TXR_CFLAGS += -DPROG_NAME=\"$(PROG)-win\" \ -DTXR_REL_PATH=\"$(bindir_rel)/$(PROG)-win$(EXE)\" dbg/txr-win.o: TXR_CFLAGS += -DPROG_NAME=\"$(PROG)-win-dbg\" \ diff --git a/txr.c b/txr.c index 197f6515..a77c53c9 100644 --- a/txr.c +++ b/txr.c @@ -254,15 +254,7 @@ static val get_self_path(void) #else static val get_self_path(void) { - char self[PATH_MAX]; - - if (!progname_u8) - return nil; - - if (realpath(progname_u8, self)) - return string_utf8(self); - - return nil; + return lit(TXR_INST_PATH); } #endif -- cgit v1.2.3