]> git.wh0rd.org Git - nano.git/commitdiff
2009-01-29 Chris Allegretta <chrisa@asty.org>
authorChris Allegretta <chrisa@asty.org>
Fri, 30 Jan 2009 08:34:27 +0000 (08:34 +0000)
committerChris Allegretta <chrisa@asty.org>
Fri, 30 Jan 2009 08:34:27 +0000 (08:34 +0000)
        * nano.c (main): Add support for nano acting like a pager when invoked with - as first
          file argument.  Not yet perfect (garbles screen state on exit) but it's something.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4356 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/color.c
src/nano.c

index b787dae3e1194bef03111ce542014b3f7853c9cb..191ad58add5e1e2daa678d1ae6f80964763409e3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-01-29 Chris Allegretta <chrisa@asty.org>
+       * nano.c (main): Add support for nano acting like a pager when invoked with - as first
+         file argument.  Not yet perfect (garbles screen state on exit) but it's something.
+
 2009-01-28 Davide Pesavento <davidepesa@gmail.com>
        * doc/syntax/gentoo.nanorc: Updates from David and Mike Frysinger.
 
index d59c3d5dc145d2229564049f80056d1263719f4d..4babe482473b97e19fc6ec57cfea3a32167a249f 100644 (file)
@@ -260,6 +260,9 @@ void reset_multis(filestruct *fileptr)
     int i;
     filestruct *oof;
 
+    if (!openfile->syntax)
+       return;
+
     for (i = 0; i < openfile->syntax->nmultis; i++) {
        for (oof = fileptr->next; oof != NULL; oof = oof->next) {
            if (oof->multiswatching == NULL)
index e7a1978d86a1bcac7554595f727ac04e597a3402..f1812697a52bdbe8fe853dfaabbafff800bd734b 100644 (file)
@@ -2239,6 +2239,30 @@ int main(int argc, char **argv)
        optind++;
     }
 
+    if (optind < argc && !strcmp(argv[optind], "-")) {
+       FILE *f;
+       int ttystdin;
+       struct termios term;
+
+       enable_signals();
+       open_buffer("", FALSE);
+       endwin();
+
+       f = fopen("/dev/stdin", "rb");
+       if (f == NULL)
+           nperror("fopen");
+
+       read_file(f, "stdin", TRUE);
+       ttystdin = open("/dev/tty", O_RDONLY);
+       if (!ttystdin)
+           die(_("Couldn't reopen stdin from keyboard, sorry\n"));
+
+       dup2(ttystdin,0);
+       close(ttystdin);
+       set_modified();
+       optind++;
+    }
+
 #ifdef ENABLE_MULTIBUFFER
     old_multibuffer = ISSET(MULTIBUFFER);
     SET(MULTIBUFFER);