diff --git a/Makefile b/Makefile index 2394a477..dd562ad9 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ VERSION = 1.1 -PREFIX = /usr/local +PREFIX ?= /usr/local MANPREFIX = $(PREFIX)/share/man CFLAGS += -O2 -Wall -Wextra -Wno-unused-parameter @@ -27,9 +27,12 @@ $(LOCALCONFIG): config.def.h $(SRC): $(LOCALCONFIG) $(BIN): $(SRC) - $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS) + $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS) strip $@ +debug: $(SRC) + $(CC) -DDEBUGMODE -g $(CFLAGS) -o nnndbg $^ $(LDFLAGS) $(LDLIBS) + install: all mkdir -p $(DESTDIR)$(PREFIX)/bin cp -f $(BIN) $(DESTDIR)$(PREFIX)/bin diff --git a/nnn.c b/nnn.c index 2ab39d6f..89c0f0f0 100644 --- a/nnn.c +++ b/nnn.c @@ -39,7 +39,9 @@ #endif #include -#ifdef DEBUG +#ifdef DEBUGMODE +static int DEBUG_FD; + static int xprintf(int fd, const char *fmt, ...) { @@ -55,7 +57,29 @@ xprintf(int fd, const char *fmt, ...) return r; } -#define DEBUG_FD 8 +static int enabledbg() +{ + FILE *fp = fopen("/tmp/nnn_debug", "w"); + + if (!fp) { + fprintf(stderr, "Cannot open debug file\n"); + return -1; + } + + DEBUG_FD = fileno(fp); + if (DEBUG_FD == -1) { + fprintf(stderr, "Cannot open debug file descriptor\n"); + return -1; + } + + return 0; +} + +static void disabledbg() +{ + close(DEBUG_FD); +} + #define DPRINTF_D(x) xprintf(DEBUG_FD, #x "=%d\n", x) #define DPRINTF_U(x) xprintf(DEBUG_FD, #x "=%u\n", x) #define DPRINTF_S(x) xprintf(DEBUG_FD, #x "=%s\n", x) @@ -82,7 +106,7 @@ xprintf(int fd, const char *fmt, ...) struct assoc { char *regex; /* Regex to match on filename */ - char *mime; /* File type */ + char *mime; /* File type */ }; /* Supported actions */ @@ -2398,11 +2422,18 @@ main(int argc, char *argv[]) exit(1); } +#ifdef DEBUGMODE + enabledbg(); +#endif + /* Set locale */ setlocale(LC_ALL, ""); initcurses(); browse(ipath, ifilter); exitcurses(); +#ifdef DEBUGMODE + disabledbg(); +#endif exit(0); }