|
@ -823,15 +823,14 @@ ttyread(void) |
|
|
{ |
|
|
{ |
|
|
static char buf[BUFSIZ]; |
|
|
static char buf[BUFSIZ]; |
|
|
static int buflen = 0; |
|
|
static int buflen = 0; |
|
|
int written; |
|
|
|
|
|
int ret; |
|
|
|
|
|
|
|
|
int ret, written; |
|
|
|
|
|
|
|
|
/* append read bytes to unprocessed bytes */ |
|
|
/* append read bytes to unprocessed bytes */ |
|
|
ret = read(cmdfd, buf+buflen, LEN(buf)-buflen); |
|
|
ret = read(cmdfd, buf+buflen, LEN(buf)-buflen); |
|
|
|
|
|
|
|
|
switch (ret) { |
|
|
switch (ret) { |
|
|
case 0: |
|
|
case 0: |
|
|
fputs("Found EOF in input\n", stderr); |
|
|
|
|
|
|
|
|
fputs("found EOF in input\n", stderr); |
|
|
exit(0); |
|
|
exit(0); |
|
|
case -1: |
|
|
case -1: |
|
|
die("couldn't read from shell: %s\n", strerror(errno)); |
|
|
die("couldn't read from shell: %s\n", strerror(errno)); |
|
@ -839,7 +838,7 @@ ttyread(void) |
|
|
buflen += ret; |
|
|
buflen += ret; |
|
|
written = twrite(buf, buflen, 0); |
|
|
written = twrite(buf, buflen, 0); |
|
|
buflen -= written; |
|
|
buflen -= written; |
|
|
/* keep any uncomplete utf8 char for the next call */ |
|
|
|
|
|
|
|
|
/* keep any incomplete UTF-8 byte sequence for the next call */ |
|
|
if (buflen > 0) |
|
|
if (buflen > 0) |
|
|
memmove(buf, buf + written, buflen); |
|
|
memmove(buf, buf + written, buflen); |
|
|
return ret; |
|
|
return ret; |
|
|