From 4dd9aadf8a5a94346ba19f479fdb38dbe7e41370 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg <bensberg@justemail.net> Date: Tue, 20 Jun 2017 11:06:40 +0200 Subject: [PATCH] startup: allow positioning the cursor also when reading standard input A recent change (8dffb00f) removed this ability. This change restores it, and also allows reading from standard input multiple times -- maybe not useful, but it works. --- src/nano.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/nano.c b/src/nano.c index 25582a8e..0acd8479 100644 --- a/src/nano.c +++ b/src/nano.c @@ -2519,18 +2519,12 @@ int main(int argc, char **argv) fprintf(stderr, "Main: open file\n"); #endif - /* If one of the arguments is a dash, read text from standard input. */ - if (optind < argc && !strcmp(argv[optind], "-")) { - stdin_pager(); - optind++; - } - #ifdef ENABLE_MULTIBUFFER is_multibuffer = ISSET(MULTIBUFFER); SET(MULTIBUFFER); #endif - /* Read the named files on the command line into new buffers. */ + /* Read the files mentioned on the command line into new buffers. */ while (optind < argc && (!openfile || ISSET(MULTIBUFFER))) { ssize_t givenline = 0, givencol = 0; @@ -2540,8 +2534,12 @@ int main(int argc, char **argv) statusline(ALERT, _("Invalid line or column number")); } - /* If opening fails, don't try to position the cursor. */ - if (!open_buffer(argv[optind++], FALSE)) + /* If the filename is a dash, read from standard input. Otherwise, + * open the file, but skip positioning the cursor if it failed. */ + if (strcmp(argv[optind], "-") == 0) { + stdin_pager(); + optind++; + } else if (!open_buffer(argv[optind++], FALSE)) continue; /* If a position was given on the command line, go there. */ -- GitLab