Makefile | 7 +++++-- nnn.c | 37 ++++++++++++++++++++++++++++++++++--- diff --git a/Makefile b/Makefile index 2394a4772975a147d72fdc45db995447963ce4eb..dd562ad9099bd3b553461eff71682a63d349e8ae 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,8 +27,11 @@ $(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 diff --git a/nnn.c b/nnn.c index 2ab39d6f00d09fb7830eaac65d94852f2f74c677..89c0f0f09090b42f1e04c16208d8337354b52191 100644 --- a/nnn.c +++ b/nnn.c @@ -39,7 +39,9 @@ #define __USE_XOPEN_EXTENDED 1 #endif #include -#ifdef DEBUG +#ifdef DEBUGMODE +static int DEBUG_FD; + static int xprintf(int fd, const char *fmt, ...) { @@ -55,7 +57,29 @@ va_end(ap); 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 @@ #define MAX_BM 10 struct assoc { char *regex; /* Regex to match on filename */ - char *mime; /* File type */ + char *mime; /* File type */ }; /* Supported actions */ @@ -2398,11 +2422,18 @@ fprintf(stderr, "%s: %s\n", ipath, strerror(errno)); exit(1); } +#ifdef DEBUGMODE + enabledbg(); +#endif + /* Set locale */ setlocale(LC_ALL, ""); initcurses(); browse(ipath, ifilter); exitcurses(); +#ifdef DEBUGMODE + disabledbg(); +#endif exit(0); }