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:
parent
a3fdbc6802
commit
5127457319
1
Build.sh
1
Build.sh
@ -1668,6 +1668,7 @@ ac_header sys/select.h sys/types.h
|
|||||||
ac_header sys/sysmacros.h
|
ac_header sys/sysmacros.h
|
||||||
ac_header bstring.h
|
ac_header bstring.h
|
||||||
ac_header grp.h sys/types.h
|
ac_header grp.h sys/types.h
|
||||||
|
ac_header io.h
|
||||||
ac_header libgen.h
|
ac_header libgen.h
|
||||||
ac_header libutil.h sys/types.h
|
ac_header libutil.h sys/types.h
|
||||||
ac_header paths.h
|
ac_header paths.h
|
||||||
|
3
exec.c
3
exec.c
@ -901,6 +901,9 @@ scriptexec(struct op *tp, const char **ap)
|
|||||||
unsigned short m;
|
unsigned short m;
|
||||||
ssize_t n;
|
ssize_t n;
|
||||||
|
|
||||||
|
#ifdef __OS2__
|
||||||
|
setmode(fd, O_TEXT);
|
||||||
|
#endif
|
||||||
/* read first couple of octets from file */
|
/* read first couple of octets from file */
|
||||||
n = read(fd, buf, sizeof(buf) - 1);
|
n = read(fd, buf, sizeof(buf) - 1);
|
||||||
close(fd);
|
close(fd);
|
||||||
|
4
main.c
4
main.c
@ -1438,6 +1438,10 @@ openpipe(int *pv)
|
|||||||
pv[1] = savefd(lpv[1]);
|
pv[1] = savefd(lpv[1]);
|
||||||
if (pv[1] != lpv[1])
|
if (pv[1] != lpv[1])
|
||||||
close(lpv[1]);
|
close(lpv[1]);
|
||||||
|
#ifdef __OS2__
|
||||||
|
setmode(pv[0], O_TEXT);
|
||||||
|
setmode(pv[1], O_BINARY);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
9
misc.c
9
misc.c
@ -1329,6 +1329,10 @@ blocking_read(int fd, char *buf, size_t nbytes)
|
|||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
bool tried_reset = false;
|
bool tried_reset = false;
|
||||||
|
|
||||||
|
#ifdef __OS2__
|
||||||
|
int saved_mode = setmode(fd, O_TEXT);
|
||||||
|
int saved_errno;
|
||||||
|
#endif
|
||||||
while ((ret = read(fd, buf, nbytes)) < 0) {
|
while ((ret = read(fd, buf, nbytes)) < 0) {
|
||||||
if (!tried_reset && errno == EAGAIN) {
|
if (!tried_reset && errno == EAGAIN) {
|
||||||
if (reset_nonblock(fd) > 0) {
|
if (reset_nonblock(fd) > 0) {
|
||||||
@ -1339,6 +1343,11 @@ blocking_read(int fd, char *buf, size_t nbytes)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#ifdef __OS2__
|
||||||
|
saved_errno = errno;
|
||||||
|
setmode(fd, saved_mode);
|
||||||
|
errno = saved_errno;
|
||||||
|
#endif
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user