aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-06-19 22:21:08 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-06-20 00:50:19 +0530
commit370ed32a28f2ef3a8b875a208749ab8172f87d0c (patch)
tree74614e53bacfe843e55a1634e64f6ecc396a5197
parentb66fa0325d59ce8639877c939327cf1b9d58134d (diff)
downloadnnn-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--Makefile7
-rw-r--r--nnn.c37
2 files changed, 39 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index 2394a47..dd562ad 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 2ab39d6..89c0f0f 100644
--- a/nnn.c
+++ b/nnn.c
@@ -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);
}