From 370ed32a28f2ef3a8b875a208749ab8172f87d0c Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Mon, 19 Jun 2017 22:21:08 +0530 Subject: [PATCH] An undocumented debug mode 1. The debug file is located at /tmp/nnn_debug. 2. Debug mode is completely disabled by default. The debug binary `nnndbg` can be built by running `make debug`. --- Makefile | 7 +++++-- nnn.c | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 5 deletions(-) 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); }