mirror of
https://github.com/neovim/neovim.git
synced 2025-11-26 04:00:45 +00:00
getchar: Use fileio instead of fdopen
Problem: as fileio is cached and reads blocks this is going to wait until either EOF or reading enough characters to fill rbuffer. This is not good when reading user input from stdin as script.
This commit is contained in:
@@ -1056,14 +1056,20 @@ scripterror:
|
||||
mch_errmsg("\"\n");
|
||||
mch_exit(2);
|
||||
}
|
||||
int error;
|
||||
if (STRCMP(argv[0], "-") == 0) {
|
||||
const int stdin_dup_fd = os_dup(STDIN_FILENO);
|
||||
FILE *const stdin_dup = fdopen(stdin_dup_fd, "r");
|
||||
const int stdin_dup_fd = os_dup(OS_STDIN_FILENO);
|
||||
FileDescriptor *const stdin_dup = file_open_fd_new(
|
||||
&error, stdin_dup_fd, false, 0);
|
||||
assert(stdin_dup != NULL);
|
||||
scriptin[0] = stdin_dup;
|
||||
} else if ((scriptin[0] = mch_fopen(argv[0], READBIN)) == NULL) {
|
||||
} else if ((scriptin[0] = file_open_new(
|
||||
&error, argv[0], kFileReadOnly, 0)) == NULL) {
|
||||
mch_errmsg(_("Cannot open for reading: \""));
|
||||
mch_errmsg(argv[0]);
|
||||
mch_errmsg("\"\n");
|
||||
mch_errmsg("\": ");
|
||||
mch_errmsg(os_strerror(error));
|
||||
mch_errmsg("\n");
|
||||
mch_exit(2);
|
||||
}
|
||||
save_typebuf();
|
||||
|
||||
Reference in New Issue
Block a user