diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2017-06-19 22:21:08 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2017-06-20 00:50:19 +0530 |
commit | 370ed32a28f2ef3a8b875a208749ab8172f87d0c (patch) | |
tree | 74614e53bacfe843e55a1634e64f6ecc396a5197 | |
parent | b66fa0325d59ce8639877c939327cf1b9d58134d (diff) | |
download | nnn-370ed32a28f2ef3a8b875a208749ab8172f87d0c.tar.gz |
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`.
-rw-r--r-- | Makefile | 7 | ||||
-rw-r--r-- | nnn.c | 37 |
2 files changed, 39 insertions, 5 deletions
@@ -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 @@ -39,7 +39,9 @@ #endif #include <ftw.h> -#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); } |