]> Sergey Matveev's repositories - nnn.git/commitdiff
Exit curses mode while programs run
authorlostd <lostd@2f30.org>
Tue, 7 Oct 2014 11:37:23 +0000 (11:37 +0000)
committerlostd <>
Tue, 7 Oct 2014 11:37:23 +0000 (11:37 +0000)
noice.c

diff --git a/noice.c b/noice.c
index 062e26b78c44b38ae24956945a6c0d3576cd1224..91a6a891607a931a9790eb096119f722ae48f1f2 100644 (file)
--- a/noice.c
+++ b/noice.c
@@ -42,8 +42,8 @@
 int die = 0;
 
 struct assoc {
-       char *ext;
-       char *bin;
+       char *ext; /* Extension */
+       char *bin; /* Program */
 } assocs[] = {
        { "avi", "mplayer" },
        { "mp4", "mplayer" },
@@ -88,6 +88,25 @@ dentcmp(const void *va, const void *vb)
        return strcmp(a->d_name, b->d_name);
 }
 
+void
+initcurses(void)
+{
+       initscr();
+       cbreak();
+       noecho();
+       nonl();
+       intrflush(stdscr, FALSE);
+       keypad(stdscr, TRUE);
+       curs_set(FALSE); /* Hide cursor */
+}
+
+void
+exitcurses(void)
+{
+       endwin(); /* Restore terminal */
+}
+
+
 /* Warning shows up at the bottom */
 void
 printwarn(char *prefix)
@@ -318,6 +337,8 @@ nochange:
                                DPRINTF_S(ext);
                                DPRINTF_S(bin);
 
+                               exitcurses();
+
                                /* Run program */
                                pid = fork();
                                if (pid == 0)
@@ -325,6 +346,8 @@ nochange:
                                else
                                        waitpid(pid, NULL, 0);
 
+                               initcurses();
+
                                free(file);
 
                                /* Screen may be messed up */
@@ -360,18 +383,11 @@ main(int argc, char *argv[])
        /* Set locale before curses setup */
        setlocale(LC_ALL, "");
 
-       /* Init curses */
-       initscr();
-       cbreak();
-       noecho();
-       nonl();
-       intrflush(stdscr, FALSE);
-       keypad(stdscr, TRUE);
-       curs_set(FALSE); /* Hide cursor */
+       initcurses();
 
        browse(ipath);
 
-       endwin(); /* Restore terminal */
+       exitcurses();
 
        return 0;
 }