aboutsummaryrefslogtreecommitdiff
path: root/gdb/ui-file.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2009-11-13 22:54:42 +0000
committerDaniel Jacobowitz <drow@false.org>2009-11-13 22:54:42 +0000
commitad960ed22e5c049c6e700a2f04c0231534e35177 (patch)
treec122880043c7496bfa2a5b33748e82ff34cbf4db /gdb/ui-file.c
parentf6838f814769c627c1d61f6905f69f704b334af6 (diff)
downloadgdb-ad960ed22e5c049c6e700a2f04c0231534e35177.zip
gdb-ad960ed22e5c049c6e700a2f04c0231534e35177.tar.gz
gdb-ad960ed22e5c049c6e700a2f04c0231534e35177.tar.bz2
* ui-file.c (stdio_file_read): Call gdb_select before read.
Diffstat (limited to 'gdb/ui-file.c')
-rw-r--r--gdb/ui-file.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gdb/ui-file.c b/gdb/ui-file.c
index 527917c..b9ddbb5 100644
--- a/gdb/ui-file.c
+++ b/gdb/ui-file.c
@@ -23,6 +23,7 @@
#include "defs.h"
#include "ui-file.h"
#include "gdb_string.h"
+#include "gdb_select.h"
#include <errno.h>
@@ -471,6 +472,19 @@ stdio_file_read (struct ui_file *file, char *buf, long length_buf)
if (stdio->magic != &stdio_file_magic)
internal_error (__FILE__, __LINE__,
_("stdio_file_read: bad magic number"));
+
+ /* For the benefit of Windows, call gdb_select before reading from
+ the file. Wait until at least one byte of data is available.
+ Control-C can interrupt gdb_select, but not read. */
+ {
+ int fd = fileno (stdio->file);
+ fd_set readfds;
+ FD_ZERO (&readfds);
+ FD_SET (fd, &readfds);
+ if (gdb_select (fd + 1, &readfds, NULL, NULL, NULL) == -1)
+ return -1;
+ }
+
return read (fileno (stdio->file), buf, length_buf);
}