diff options
Diffstat (limited to 'src/nvim/main.c')
| -rw-r--r-- | src/nvim/main.c | 29 | 
1 files changed, 19 insertions, 10 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c index ce9feedd16..067184c8c7 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -789,7 +789,8 @@ static void command_line_scan(mparm_T *parmp)              mch_exit(0);            } else if (STRICMP(argv[0] + argv_idx, "api-info") == 0) {              FileDescriptor fp; -            const int fof_ret = file_open_fd(&fp, STDOUT_FILENO, true); +            const int fof_ret = file_open_fd(&fp, STDOUT_FILENO, +                                             kFileWriteOnly);              msgpack_packer *p = msgpack_packer_new(&fp, msgpack_file_write);              if (fof_ret != 0) { @@ -1086,17 +1087,25 @@ static void command_line_scan(mparm_T *parmp)            case 's':               /* "-s {scriptin}" read from script file */              if (scriptin[0] != NULL) {  scripterror: -              mch_errmsg(_("Attempt to open script file again: \"")); -              mch_errmsg(argv[-1]); -              mch_errmsg(" "); -              mch_errmsg(argv[0]); -              mch_errmsg("\"\n"); +              vim_snprintf((char *)IObuff, IOSIZE, +                           _("Attempt to open script file again: \"%s %s\"\n"), +                           argv[-1], argv[0]); +              mch_errmsg((const char *)IObuff);                mch_exit(2);              } -            if ((scriptin[0] = mch_fopen(argv[0], READBIN)) == NULL) { -              mch_errmsg(_("Cannot open for reading: \"")); -              mch_errmsg(argv[0]); -              mch_errmsg("\"\n"); +            int error; +            if (STRCMP(argv[0], "-") == 0) { +              const int stdin_dup_fd = os_dup(STDIN_FILENO); +              FileDescriptor *const stdin_dup = file_open_fd_new( +                  &error, stdin_dup_fd, kFileReadOnly|kFileNonBlocking); +              assert(stdin_dup != NULL); +              scriptin[0] = stdin_dup; +            } else if ((scriptin[0] = file_open_new( +                &error, argv[0], kFileReadOnly|kFileNonBlocking, 0)) == NULL) { +              vim_snprintf((char *)IObuff, IOSIZE, +                           _("Cannot open for reading: \"%s\": %s\n"), +                           argv[0], os_strerror(error)); +              mch_errmsg((const char *)IObuff);                mch_exit(2);              }              save_typebuf();  | 
