fixed stdio write

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1072 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2004-09-18 19:34:39 +00:00
parent 99679ececc
commit 1d96905d76

22
vl.c
View File

@ -1030,10 +1030,30 @@ typedef struct {
static int stdio_nb_clients;
static CharDriverState *stdio_clients[STDIO_MAX_CLIENTS];
static int unix_write(int fd, const uint8_t *buf, int len1)
{
int ret, len;
len = len1;
while (len > 0) {
ret = write(fd, buf, len);
if (ret < 0) {
if (errno != EINTR && errno != EAGAIN)
return -1;
} else if (ret == 0) {
break;
} else {
buf += ret;
len -= ret;
}
}
return len1 - len;
}
static int fd_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
{
FDCharDriver *s = chr->opaque;
return write(s->fd_out, buf, len);
return unix_write(s->fd_out, buf, len);
}
static void fd_chr_add_read_handler(CharDriverState *chr,