diff options
author | Benoît Dejean <benoit@placenet.org> | 2007-02-14 22:19:01 +0000 |
---|---|---|
committer | Benoît Dejean <bdejean@src.gnome.org> | 2007-02-14 22:19:01 +0000 |
commit | 09f8aaec1ed8363b494582b7431792c796772380 (patch) | |
tree | f00987f9d037bdfe04a61b5ae5b409aefd866381 /lib/write.c | |
parent | 9f509067d46c9091127ea72f4f4576eebc375093 (diff) | |
download | libgtop-09f8aaec1ed8363b494582b7431792c796772380.tar.gz |
Handle EINTR.
2007-02-14 Benoît Dejean <benoit@placenet.org>
* lib/read.c: (glibtop_read_l):
* lib/write.c: (glibtop_write_l):
Handle EINTR.
* configure.in:
Post release version bump.
svn path=/trunk/; revision=2554
Diffstat (limited to 'lib/write.c')
-rw-r--r-- | lib/write.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/write.c b/lib/write.c index 2d301b3e..55f527a1 100644 --- a/lib/write.c +++ b/lib/write.c @@ -22,7 +22,7 @@ */ #include <config.h> - +#include <errno.h> #include <glibtop/write.h> #include <glibtop/error.h> #include <glib/gi18n-lib.h> @@ -33,6 +33,7 @@ void glibtop_write_l (glibtop *server, size_t size, void *buf) { int ret; + int fd; glibtop_init_r (&server, 0, 0); @@ -42,11 +43,10 @@ glibtop_write_l (glibtop *server, size_t size, void *buf) fprintf (stderr, "LIBRARY: really writing %d bytes.\n", (int)size); #endif - if (server->socket) { - ret = send (server->socket, buf, size, 0); - } else { - ret = write (server->output [1], buf, size); - } + fd = server->socket ? server->socket : server->output[1]; + + while ((ret = write(fd, buf, size)) < 0 && errno == EINTR) + ; if (ret < 0) glibtop_error_io_r (server, |