ports/devel/ORBit/files/patch-ae
Maxim Sobolev 128ab3ea69 Reimplement fix for an imcompatibility between ORBit and FreeBSD properly.
Instead of replacing writev(2) with loop based on write(2), test system
limit on the number of vectors writev(2) accepts and split call to writev(2)
to several calls in such a way that number of vectors in each call doesn't
exceed this limit (aka UIO_MAXIOV). Bump PORTREVISION.
2001-10-29 08:19:24 +00:00

118 lines
2.8 KiB
Plaintext

$FreeBSD$
--- configure 2001/10/27 12:43:19 1.1
+++ configure 2001/10/27 12:43:58
@@ -5747,9 +5747,9 @@
rm -f conf.glibtest
-GMODULE_CFLAGS=`glib-config --cflags gmodule`
+GMODULE_CFLAGS=`$GLIB_CONFIG --cflags gmodule`
-GMODULE_LIBS=`glib-config --libs gmodule`
+GMODULE_LIBS=`$GLIB_CONFIG --libs gmodule`
for ac_prog in 'bison -y' byacc
@@ -7273,57 +7273,47 @@
fi
+echo $ac_n "checking how many vectors writev is capable to handle""... $ac_c" 1>&6
+echo "configure:7278: checking how many vectors writev is capable to handle" >&5
if test "$cross_compiling" = yes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_LIMITED_WRITEV 1
-EOF
-
+ MAXIOV=16
else
cat > conftest.$ac_ext <<EOF
-#line 7284 "configure"
+#line 7283 "configure"
#include "confdefs.h"
-#include <fcntl.h>
+#include <sys/types.h>
#include <sys/uio.h>
-#define NIOVECS 50
-int main(int argc, char *argv[])
+#include <fcntl.h>
+#include <stdio.h>
+int main()
{
- char dumbuf[20] = "\n";
- struct iovec iovecs[NIOVECS];
- int i,fd;
-
- for(i = 0; i < NIOVECS; i++) {
- iovecs[i].iov_base = dumbuf;
- iovecs[i].iov_len = 1;
- }
-
- fd=open("/dev/null", O_WRONLY);
- if(fd==-1)
- return(1);
-
- if(writev(fd, iovecs, NIOVECS) < 0)
- return 1;
-
+ FILE *f;
+ int fd, i;
+ static struct iovec iovecs[4097];
+ if ((f = fopen("conftestval", "w")) == NULL || \
+ (fd = open("/dev/null", O_WRONLY)) < 0)
+ exit(1);
+ for (i = 1; i < 4098 && writev(fd, iovecs, i) >= 0; i++);
+ fprintf(f, "%d\n", i - 1);
+ fclose(f);
close(fd);
- return 0;
+ exit(0);
}
EOF
-if { (eval echo configure:7313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
- :
+ MAXIOV=`cat conftestval`
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -fr conftest*
- cat >> confdefs.h <<\EOF
-#define HAVE_LIMITED_WRITEV 1
-EOF
-
+ MAXIOV=16
fi
rm -fr conftest*
fi
-
+echo "$ac_t""$MAXIOV" 1>&6
#######################
@@ -8260,7 +8250,7 @@
s%@LIB_WRAP@%$LIB_WRAP%g
s%@HAVE_HOSTS_ACCESS_TRUE@%$HAVE_HOSTS_ACCESS_TRUE%g
s%@HAVE_HOSTS_ACCESS_FALSE@%$HAVE_HOSTS_ACCESS_FALSE%g
-s%@HAVE_LIMITED_WRITEV@%$HAVE_LIMITED_WRITEV%g
+s%@MAXIOV@%$MAXIOV%g
s%@subdirs@%$subdirs%g
s%@pkglibdir@%$pkglibdir%g
@@ -8584,10 +8574,6 @@
*) # Relative path.
ac_sub_cache_file="$ac_dots$cache_file" ;;
esac
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
# The eval makes quoting arguments work.