compat.sh: factor code into run_client() function
diff --git a/tests/compat.sh b/tests/compat.sh
index 77cd389..c961640 100755
--- a/tests/compat.sh
+++ b/tests/compat.sh
@@ -463,6 +463,68 @@
     sleep 1
 }
 
+# run_client <name> <cipher>
+run_client() {
+    # run the command and interpret result
+    case $1 in
+        [Oo]pen*)
+            CLIENT_CMD="$OPENSSL s_client $O_CLIENT_ARGS -cipher $2"
+            log "$CLIENT_CMD"
+            OUTPUT="$( ( echo -e 'GET HTTP/1.0'; echo; sleep 1 ) | $CLIENT_CMD 2>&1 )"
+            EXIT=$?
+
+            if [ "$EXIT" == "0" ]; then
+                RESULT=0
+            else
+                SUPPORTED="$( echo $OUTPUT | grep 'Cipher is (NONE)' )"
+                if [ "X$SUPPORTED" != "X" ]; then
+                    RESULT=1
+                else
+                    RESULT=2
+                fi
+            fi
+            ;;
+
+        [Pp]olar*)
+            CLIENT_CMD="../programs/ssl/ssl_client2 $P_CLIENT_ARGS force_ciphersuite=$2"
+            log "$CLIENT_CMD"
+            OUTPUT="$( $CLIENT_CMD )"
+            EXIT=$?
+
+            case $EXIT in
+                "0")    RESULT=0    ;;
+                "2")    RESULT=1    ;;
+                *)      RESULT=2    ;;
+            esac
+            ;;
+
+        *)
+            echo "error: invalid client name: $1" >&2
+            exit 1
+            ;;
+    esac
+
+    # report and count result
+    let "tests++"
+    echo -n "$SERVER_NAME Server - $1 Client - $2 : $EXIT - "
+    case $RESULT in
+        "0")
+            echo Success
+            ;;
+        "1")
+            echo "Ciphersuite not supported"
+            let "skipped++"
+            ;;
+        "2")
+            echo Failed
+            echo "$SERVER_CMD"
+            echo "$CLIENT_CMD"
+            echo "$OUTPUT"
+            let "failed++"
+            ;;
+    esac
+}
+
 for VERIFY in $VERIFIES;
 do
 
@@ -480,84 +542,26 @@
 
 start_server "OpenSSL"
 
-for i in $P_CIPHERS;
-do
-    let "tests++"
-    log "../programs/ssl/ssl_client2 $P_CLIENT_ARGS force_ciphersuite=$i"
-    RESULT="$( ../programs/ssl/ssl_client2 $P_CLIENT_ARGS force_ciphersuite=$i )"
-    EXIT=$?
-    echo -n "$SERVER_NAME Server - PolarSSL Client - $i : $EXIT - "
-    if [ "$EXIT" = "2" ];
-    then
-        echo Ciphersuite not supported in client
-        let "skipped++"
-    elif [ "$EXIT" != "0" ];
-    then
-        echo Failed
-        echo "$SERVER_CMD"
-        echo "ssl_client2 force_ciphersuite=$i $P_CLIENT_ARGS"
-        echo $RESULT
-        let "failed++"
-    else
-        echo Success
-    fi
+for i in $P_CIPHERS; do
+    run_client PolarSSL $i
 done
+
 kill $PROCESS_ID 2>/dev/null
 wait $PROCESS_ID 2>/dev/null
 
 start_server "PolarSSL"
 
-for i in $O_CIPHERS;
-do
-    let "tests++"
-    log "$OPENSSL s_client $O_CLIENT_ARGS -cipher $i"
-    RESULT="$( ( echo -e 'GET HTTP/1.0'; echo; sleep 1 ) | $OPENSSL s_client $O_CLIENT_ARGS -cipher $i 2>&1 )"
-    EXIT=$?
-    echo -n "$SERVER_NAME Server - OpenSSL Client - $i : $EXIT - "
-
-    if [ "$EXIT" != "0" ];
-    then
-        SUPPORTED="$( echo $RESULT | grep 'Cipher is (NONE)' )"
-        if [ "X$SUPPORTED" != "X" ]
-        then
-            echo "Ciphersuite not supported in server"
-            let "skipped++"
-        else
-            echo Failed
-            echo "$SERVER_CMD"
-            echo "$OPENSSL s_client $O_CLIENT_ARGS -cipher $i"
-            echo $RESULT
-            let "failed++"
-        fi
-    else
-        echo Success
-    fi
+for i in $O_CIPHERS; do
+    run_client OpenSSL $i
 done
 
+echo "-----------"
 add_polarssl_ciphersuites
 
-for i in $P_CIPHERS;
-do
-    let "tests++"
-    log "../programs/ssl/ssl_client2 force_ciphersuite=$i $P_CLIENT_ARGS"
-    RESULT="$( ../programs/ssl/ssl_client2 force_ciphersuite=$i $P_CLIENT_ARGS )"
-    EXIT=$?
-    echo -n "$SERVER_NAME Server - PolarSSL Client - $i : $EXIT - "
-    if [ "$EXIT" = "2" ];
-    then
-        echo Ciphersuite not supported in client
-        let "skipped++"
-    elif [ "$EXIT" != "0" ];
-    then
-        echo Failed
-        echo "$SERVER_CMD"
-        echo "ssl_client2 force_ciphersuite=$i $P_CLIENT_ARGS"
-        echo $RESULT
-        let "failed++"
-    else
-        echo Success
-    fi
+for i in $P_CIPHERS; do
+    run_client PolarSSL $i
 done
+
 kill $PROCESS_ID 2>/dev/null
 wait $PROCESS_ID 2>/dev/null