diff options
author | Daniel Jacobowitz <drow@false.org> | 2007-10-11 18:44:07 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2007-10-11 18:44:07 +0000 |
commit | eb639c500494ee8c4ca8978c50451dca10112744 (patch) | |
tree | aea47081d1300f0357ab386bc139b3c53f2e31c5 /sim/common | |
parent | b981d7096356e3e92b66f0813881754fc69bf41d (diff) | |
download | gdb-eb639c500494ee8c4ca8978c50451dca10112744.zip gdb-eb639c500494ee8c4ca8978c50451dca10112744.tar.gz gdb-eb639c500494ee8c4ca8978c50451dca10112744.tar.bz2 |
2007-10-11 Jesper Nilsson <jesper.nilsson@axis.com>
* callback.c (cb_is_stdin, cb_is_stdout, cb_is_stderr): Add functions.
* syscall.c (cb_syscall): Test for stdin/out/err, not just fd 0/1/2.
2007-10-11 Jesper Nilsson <jesper.nilsson@axis.com>
* callback.h (cb_is_stdin, cb_is_stdout, cb_is_stderr): Add prototypes.
2007-10-11 Jesper Nilsson <jesper.nilsson@axis.com>
* sim/cris/c/freopen2.c: Added testcase.
Diffstat (limited to 'sim/common')
-rw-r--r-- | sim/common/ChangeLog | 4 | ||||
-rw-r--r-- | sim/common/callback.c | 11 | ||||
-rw-r--r-- | sim/common/syscall.c | 4 |
3 files changed, 15 insertions, 4 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index bd09a5c..87bc0ee 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,7 +1,7 @@ 2007-10-11 Jesper Nilsson <jesper.nilsson@axis.com> - * callback.c (cb_is_stdin): Add. - * syscall.c (cb_syscall): Test for stdin, not just fd 0. + * callback.c (cb_is_stdin, cb_is_stdout, cb_is_stderr): Add functions. + * syscall.c (cb_syscall): Test for stdin/out/err, not just fd 0/1/2. 2007-08-10 Nick Clifton <nickc@redhat.com> diff --git a/sim/common/callback.c b/sim/common/callback.c index f83dd54..18bcc80 100644 --- a/sim/common/callback.c +++ b/sim/common/callback.c @@ -1143,3 +1143,14 @@ cb_is_stdin (host_callback *cb, int fd) return fdbad (cb, fd) ? 0 : fdmap (cb, fd) == 0; } +int +cb_is_stdout (host_callback *cb, int fd) +{ + return fdbad (cb, fd) ? 0 : fdmap (cb, fd) == 1; +} + +int +cb_is_stderr (host_callback *cb, int fd) +{ + return fdbad (cb, fd) ? 0 : fdmap (cb, fd) == 2; +} diff --git a/sim/common/syscall.c b/sim/common/syscall.c index a3e7560..b002448 100644 --- a/sim/common/syscall.c +++ b/sim/common/syscall.c @@ -344,12 +344,12 @@ cb_syscall (cb, sc) errcode = EINVAL; goto FinishSyscall; } - if (fd == 1) + if (cb_is_stdout(cb, fd)) { result = (int) (*cb->write_stdout) (cb, buf, bytes_read); (*cb->flush_stdout) (cb); } - else if (fd == 2) + else if (cb_is_stderr(cb, fd)) { result = (int) (*cb->write_stderr) (cb, buf, bytes_read); (*cb->flush_stderr) (cb); |