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`.
This commit is contained in:
Arun Prakash Jana 2017-06-19 22:21:08 +05:30
parent b66fa0325d
commit 370ed32a28
No known key found for this signature in database
GPG key ID: A75979F35C080412
2 changed files with 39 additions and 5 deletions

View file

@ -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

37
nnn.c
View file

@ -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);
}