diff options
author | Michael Meissner <gnu@the-meissners.org> | 1998-02-23 18:21:13 +0000 |
---|---|---|
committer | Michael Meissner <gnu@the-meissners.org> | 1998-02-23 18:21:13 +0000 |
commit | 3aeca4624a9ccaaa084b3d7c619b60dcbcd915b7 (patch) | |
tree | 503d7cc7b0c04db31425e0b5631bc50f059e854b | |
parent | f33a8aa5677cf501739e196542c45bc46322a168 (diff) | |
download | gdb-3aeca4624a9ccaaa084b3d7c619b60dcbcd915b7.zip gdb-3aeca4624a9ccaaa084b3d7c619b60dcbcd915b7.tar.gz gdb-3aeca4624a9ccaaa084b3d7c619b60dcbcd915b7.tar.bz2 |
Handle short reads and EOF
-rw-r--r-- | sim/common/ChangeLog | 4 | ||||
-rw-r--r-- | sim/common/syscall.c | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 0bf3696..70af484 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,7 @@ +Mon Feb 23 13:19:58 1998 Michael Meissner <meissner@cygnus.com> + + * syscall.c (cb_syscall): Handle short reads, and EOF. + Tue Feb 24 00:29:57 1998 Andrew Cagney <cagney@b1.cygnus.com> * sim-trace.c (print_data): case trace_fmt_fp missing break. Use diff --git a/sim/common/syscall.c b/sim/common/syscall.c index b73cd99..0bd891e 100644 --- a/sim/common/syscall.c +++ b/sim/common/syscall.c @@ -279,6 +279,8 @@ cb_syscall (cb, sc) ? count : FILE_XFR_SIZE)); if (result == -1) goto ErrorFinish; + if (result == 0) /* EOF */ + break; bytes_written = (*sc->write_mem) (cb, sc, addr, buf, result); if (bytes_written != result) { @@ -289,6 +291,9 @@ cb_syscall (cb, sc) bytes_read += result; count -= result; addr += result; + /* If this is a short read, don't go back for more */ + if (result != FILE_XFR_SIZE) + break; } result = bytes_read; } @@ -322,7 +327,7 @@ cb_syscall (cb, sc) result = (int) (*cb->write_stdout) (cb, buf, bytes_read); (*cb->flush_stdout) (cb); } - if (fd == 2) + else if (fd == 2) { result = (int) (*cb->write_stderr) (cb, buf, bytes_read); (*cb->flush_stderr) (cb); |