aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);
}