2007-10-11 Jesper Nilsson <jesper.nilsson@axis.com>
authorDaniel Jacobowitz <drow@false.org>
Thu, 11 Oct 2007 18:40:29 +0000 (18:40 +0000)
committerDaniel Jacobowitz <drow@false.org>
Thu, 11 Oct 2007 18:40:29 +0000 (18:40 +0000)
* callback.c (cb_is_stdin): Add.
* syscall.c (cb_syscall): Test for stdin, not just fd 0.

2007-10-11  Jesper Nilsson  <jesper.nilsson@axis.com>

* callback.h (cb_is_stdin): Add prototype.

include/gdb/ChangeLog
include/gdb/callback.h
sim/common/ChangeLog
sim/common/callback.c
sim/common/syscall.c

index e3a3f51..70266e2 100644 (file)
@@ -1,3 +1,7 @@
+2007-10-11  Jesper Nilsson  <jesper.nilsson@axis.com>
+
+       * callback.h (cb_is_stdin): Add prototype.
+
 2007-08-23  Joel Brobecker  <brobecker@adacore.com>
 
        Switch the license of all .h files to GPLv3.
index f1e7d24..2245c87 100644 (file)
@@ -315,6 +315,9 @@ int cb_host_to_target_stat PARAMS ((host_callback *, const struct stat *, PTR));
 /* Translate a value to target endian.  */
 void cb_store_target_endian PARAMS ((host_callback *, char *, int, long));
 
+/* Test if the fd is stdin. */
+int cb_is_stdin PARAMS ((host_callback *, int));
+
 /* Perform a system call.  */
 CB_RC cb_syscall PARAMS ((host_callback *, CB_SYSCALL *));
 
index b31a19e..bd09a5c 100644 (file)
@@ -1,3 +1,8 @@
+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.
+
 2007-08-10  Nick Clifton  <nickc@redhat.com>
 
        * sim-memopt.c (memory_options): Mention that the
index fec1d14..f83dd54 100644 (file)
@@ -1136,3 +1136,10 @@ sim_cb_eprintf (host_callback *p, const char *fmt, ...)
   p->evprintf_filtered (p, fmt, ap);
   va_end (ap);
 }
+
+int
+cb_is_stdin (host_callback *cb, int fd)
+{
+  return fdbad (cb, fd) ? 0 : fdmap (cb, fd) == 0;
+}
+
index 379f7e1..a3e7560 100644 (file)
@@ -291,7 +291,7 @@ cb_syscall (cb, sc)
 
        while (count > 0)
          {
-           if (fd == 0)
+           if (cb_is_stdin (cb, fd))
              result = (int) (*cb->read_stdin) (cb, buf,
                                                (count < FILE_XFR_SIZE
                                                 ? count : FILE_XFR_SIZE));