--- ../socat-1.6.0.0.orig/test.sh	2007-03-06 21:06:20.000000000 +0000
+++ test.sh	2007-04-07 10:49:10.000000000 +0000
@@ -76,6 +76,7 @@
 # non-root users might miss ifconfig in their path
 case "$UNAME" in
 AIX)   IFCONFIG=/usr/sbin/ifconfig ;;
+GNU)   : ;; # We don't have such a command.
 FreeBSD) IFCONFIG=/sbin/ifconfig ;;
 HP-UX) IFCONFIG=/usr/sbin/ifconfig ;;
 Linux) IFCONFIG=/sbin/ifconfig ;;
@@ -93,6 +94,10 @@
     SECONDADDR=127.0.0.2
     BCADDR=127.255.255.255
     BCIFADDR=$($IFCONFIG $BROADCASTIF |grep 'inet ' |awk '{print($2);}' |cut -d: -f2) ;;
+GNU)
+    SECONDADDR=127.0.0.2
+    BCADDR=127.255.255.255
+    BCIFADDR=$(fsysopts -L /servers/socket/inet | sed 's/.*--address=\([^\ ]*\)\ .*/\1/') ;;
 FreeBSD|NetBSD|OpenBSD)
     MAINIF=$($IFCONFIG -a |grep '^[a-z]' |head -1 |cut -d: -f1)
     BROADCASTIF="$MAINIF"
@@ -118,6 +123,7 @@
 
 # for some tests we need a second local IPv6 address
 case "$UNAME" in
+GNU) SECONDIP6ADDR=;; # Not yet.
 *)
     SECONDIP6ADDR=$(expr "$($IFCONFIG -a |grep 'inet6 ' |fgrep -v ' ::1/128 '| head -n 1)" : '.*inet \([0-9.]*\) .*') 
     ;;
@@ -1535,6 +1541,7 @@
     case "$UNAME" in
     AIX)   l=$($IFCONFIG lo0 |fgrep 'inet 127.0.0.1 ') ;;
     FreeBSD) l=$($IFCONFIG lo0 |fgrep 'inet 127.0.0.1 ') ;;
+    GNU) l=$({ : < /servers/socket/inet; } 2> /dev/null && echo yes) ;;
     HP-UX) l=$($IFCONFIG lo0 |fgrep 'inet 127.0.0.1 ') ;;
     Linux) l=$($IFCONFIG |fgrep 'inet addr:127.0.0.1 ') ;;
     NetBSD)l=$($IFCONFIG -a |fgrep 'inet 127.0.0.1 ');;
@@ -1561,6 +1568,7 @@
     local l
     case "$UNAME" in
     AIX)   l=$(/usr/sbin/ifconfig lo0 |grep 'inet6 ::1/0') ;;
+    GNU)   l=$({ : < /servers/socket/inet6; } 2> /dev/null && echo yes) ;;
     HP-UX) l=$(/usr/sbin/ifconfig lo0 |grep ' inet6 ') ;;
     Linux) l=$(/sbin/ifconfig |grep 'inet6 addr: ::1/') ;;
     NetBSD)l=$(/sbin/ifconfig -a |grep 'inet6 ::1 ');;
@@ -1590,6 +1598,7 @@
     while [ $timeout -gt 0 ]; do
 	case "$UNAME" in
 	Linux)   l=$(netstat -n -w -l |grep '^raw .* .*[0-9*]:'$proto' [ ]*0\.0\.0\.0:\*') ;;
+#	GNU)     :;; # TODO.
 #	FreeBSD) l=$(netstat -an |grep '^raw4[6 ] .*[0-9*]\.'$proto' .* \*\.\*') ;;
 #	NetBSD)  l=$(netstat -an |grep '^raw .*[0-9*]\.'$proto' [ ]* \*\.\*') ;;
 #	OpenBSD) l=$(netstat -an |grep '^raw .*[0-9*]\.'$proto' [ ]* \*\.\*') ;;
@@ -1631,6 +1640,7 @@
     while [ $timeout -gt 0 ]; do
 	case "$UNAME" in
 	Linux)   l=$(netstat -n -w -l |grep '^raw .* .*:[0-9*]*:'$proto' [ ]*:::\*') ;;
+#	GNU)     :;; # TODO.
 #	FreeBSD) l=$(netstat -an |grep '^raw4[6 ] .*[0-9*]\.'$proto' .* \*\.\*') ;;
 #	NetBSD)  l=$(netstat -an |grep '^raw .*[0-9*]\.'$proto' [ ]* \*\.\*') ;;
 #	OpenBSD) l=$(netstat -an |grep '^raw .*[0-9*]\.'$proto' [ ]* \*\.\*') ;;
@@ -1672,6 +1682,7 @@
     while [ $timeout -gt 0 ]; do
 	case "$UNAME" in
 	Linux)   l=$(netstat -n -t -l |grep '^tcp .* .*[0-9*]:'$port' .* LISTEN') ;;
+	GNU)     :;; # TODO.
 	FreeBSD) l=$(netstat -an |grep '^tcp4.* .*[0-9*]\.'$port' .* \*\.\* .* LISTEN') ;;
 	NetBSD)  l=$(netstat -an |grep '^tcp .* .*[0-9*]\.'$port' [ ]* \*\.\* [ ]* LISTEN.*') ;;
 	Darwin) case "$(uname -r)" in
@@ -1706,6 +1717,7 @@
     while [ $timeout -gt 0 ]; do
 	case "$UNAME" in
 	Linux)   l=$(netstat -n -u -l |grep '^udp .* .*[0-9*]:'$port' [ ]*0\.0\.0\.0:\*') ;;
+	GNU)     :;; # TODO.
 	FreeBSD) l=$(netstat -an |grep '^udp4[6 ] .*[0-9*]\.'$port' .* \*\.\*') ;;
 	NetBSD)  l=$(netstat -an |grep '^udp .*[0-9*]\.'$port' [ ]* \*\.\*') ;;
 	OpenBSD) l=$(netstat -an |grep '^udp .*[0-9*]\.'$port' [ ]* \*\.\*') ;;
@@ -1740,6 +1752,7 @@
     while [ $timeout -gt 0 ]; do
 	case "$UNAME" in
 	Linux)   l=$(netstat -an |grep '^tcp[6 ] .* [0-9a-f:]*:'$port' .* LISTEN') ;;
+	GNU)     :;; # TODO.
 	FreeBSD) l=$(netstat -an |grep -i 'tcp[46][6 ] .*[0-9*][:.]'$port' .* listen') ;;
 	NetBSD)  l=$(netstat -an |grep '^tcp6 .*[0-9*]\.'$port' [ ]* \*\.\*') ;;
 	OpenBSD) l=$(netstat -an |grep -i 'tcp6 .*[0-9*][:.]'$port' .* listen') ;;
@@ -1769,6 +1782,7 @@
     while [ $timeout -gt 0 ]; do
 	case "$UNAME" in
 	Linux)   l=$(netstat -an |grep '^udp[6 ] .* .*[0-9*:]:'$port' [ ]*:::\*') ;;
+	GNU)     :;; # TODO.
 	FreeBSD) l=$(netstat -an |egrep '^udp(6|46) .*[0-9*]\.'$port' .* \*\.\*') ;;
 	NetBSD)  l=$(netstat -an |grep '^udp6 .* \*\.'$port' [ ]* \*\.\*') ;;
     	OpenBSD) l=$(netstat -an |grep '^udp6 .*[0-9*]\.'$port' [ ]* \*\.\*') ;;
@@ -1990,6 +2004,8 @@
 N=$((N+1))
 
 
+# TODO.  This test currently hangs on GNU.
+if [ x"$UNAME" != xGNU ]; then
 NAME=DUALSYSTEMFDS
 case "$TESTS" in
 *%functions%*|*%system%*|*%$NAME%*)
@@ -1997,6 +2013,7 @@
 testecho "$N" "$TEST" "system:$CAT>&6,fdout=6!!system:$CAT<&7,fdin=7" "" "$opts"
 esac
 N=$((N+1))
+fi
 
 
 NAME=EXECSOCKETFLUSH
