summaryrefslogtreecommitdiff
path: root/devel/ORBit/files/patch-src::ORBitutil::compat.c
diff options
context:
space:
mode:
Diffstat (limited to 'devel/ORBit/files/patch-src::ORBitutil::compat.c')
-rw-r--r--devel/ORBit/files/patch-src::ORBitutil::compat.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/devel/ORBit/files/patch-src::ORBitutil::compat.c b/devel/ORBit/files/patch-src::ORBitutil::compat.c
new file mode 100644
index 000000000000..823471b2b622
--- /dev/null
+++ b/devel/ORBit/files/patch-src::ORBitutil::compat.c
@@ -0,0 +1,41 @@
+
+$FreeBSD$
+
+--- src/ORBitutil/compat.c.orig Wed Sep 9 07:08:14 1998
++++ src/ORBitutil/compat.c Sat Oct 27 15:49:13 2001
+@@ -1,18 +1,28 @@
++#include <errno.h>
++
+ #include "config.h"
+ #include "util.h"
+
+-#define MAX_IOVS 16
+-
+ int g_writev(int fd, const struct iovec * vector, size_t count)
+ {
+- int retval = 0;
++ int retval, wcur;
++ int sum = 0;
+
+- while(count > MAX_IOVS) {
+- retval += writev(fd, vector, MAX_IOVS);
+- vector += MAX_IOVS; count -= MAX_IOVS;
++ for (wcur = MAXIOV; wcur == MAXIOV && count != 0; count -= MAXIOV) {
++ if (wcur > count)
++ wcur = count;
++ do {
++ retval = writev(fd, vector, wcur);
++ } while (retval < 0 && errno == EAGAIN);
++ if (retval < 0) {
++ sum = retval;
++ break;
++ }
++ vector = &(vector[wcur]);
++ sum += retval;
+ }
+
+- return writev(fd, vector, count) + retval;
++ return sum;
+ }
+
+ #ifndef HAVE_INET_ATON