Read in text mode, write in binary mode on OS/2

This enables to convert CR+LF to LF when reading, but disables to
convert LF to CR+LF when writing.

Instead, however, CR+LF are not passed into mksh as is.
This commit is contained in:
KO Myung-Hun
2015-05-16 13:20:53 +09:00
parent a3fdbc6802
commit 5127457319
5 changed files with 20 additions and 0 deletions

9
misc.c
View File

@ -1329,6 +1329,10 @@ blocking_read(int fd, char *buf, size_t nbytes)
ssize_t ret;
bool tried_reset = false;
#ifdef __OS2__
int saved_mode = setmode(fd, O_TEXT);
int saved_errno;
#endif
while ((ret = read(fd, buf, nbytes)) < 0) {
if (!tried_reset && errno == EAGAIN) {
if (reset_nonblock(fd) > 0) {
@ -1339,6 +1343,11 @@ blocking_read(int fd, char *buf, size_t nbytes)
}
break;
}
#ifdef __OS2__
saved_errno = errno;
setmode(fd, saved_mode);
errno = saved_errno;
#endif
return (ret);
}