diff --git a/ChangeLog b/ChangeLog
index 515da23e3..ffccd4a63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-03-13 Paolo Nenzi
+
+ * tests/bin/check.sh: Changed the previous check script with the one
+ supplied by Dietmar warning . This new script
+ adds support for different architectures (MINGW32, Linux, SunOS).
+
2005-03-07 Paolo Nenzi
* src/spicelib/devices/bsim4/b4ld.c: commented out NEWCONV section.
diff --git a/tests/bin/check.sh b/tests/bin/check.sh
index 6d78e26bd..060a34fc9 100644
--- a/tests/bin/check.sh
+++ b/tests/bin/check.sh
@@ -1,15 +1,48 @@
-#! /bin/sh
+#!/bin/sh
-NGSPICE=$1
+SPICE=$1
TEST=$2
-DIFFPIPE="Added|Got|Reference|Analysis|CPU|memory|Date|Note|Sun|Mon|Tue|Wed|Thu|Fri|Sat|Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Oct|Nov|Dec"
+FILTER="Note|Circuit|Trying|Reference|Date|Doing|---|v-sweep|time|Error|Warning|Data|Index|transfer|transient|acan|Transient|Noise|Analysis|Total|memory|Current"
testname=`basename $TEST .cir`
testdir=`dirname $TEST`
-$NGSPICE --batch $testdir/$testname.cir 2>&1 | egrep -v $DIFFPIPE > $testname.test
-if diff -u $testdir/$testname.out $testname.test; then
- rm $testname.test
- exit 0
-fi
+
+HOST_TYPE=`/bin/uname -srvm`
+
+case $HOST_TYPE in
+ MINGW32*)
+ $SPICE --batch $testdir/$testname.cir -o $testname.test &&\
+ sed -e 's/e-000/e+000/g' $testname.test | sed 's/e-0/e-/g' | sed 's/e+0/e+/g' | egrep -v $FILTER > $testname.test_tmp &&\
+ sed -e 's/-0$/ 0/g' $testdir/$testname.out | egrep -v $FILTER > $testname.out_tmp
+ if diff -B -w -u $testname.out_tmp $testname.test_tmp; then
+ rm $testname.test $testname.test_tmp $testname.out_tmp
+ exit 0
+ fi
+ rm -f $testname.test_tmp $testname.out_tmp
+ sed -e 's/e-000/e+000/g' $testname.test | sed 's/e-0/e-/g' | sed 's/e+0/e+/g' > $testname.test_tmp
+ mv $testname.test_tmp $testname.test
+ ;;
+ Linux*)
+ $SPICE --batch $testdir/$testname.cir >$testname.test &&\
+ egrep -v $FILTER $testname.test > $testname.test_tmp &&\
+ egrep -v $FILTER $testdir/$testname.out > $testname.out_tmp
+ if diff -B -w -u $testname.out_tmp $testname.test_tmp; then
+ rm $testname.test $testname.test_tmp $testname.out_tmp
+ exit 0
+ fi
+ rm -f $testname.test_tmp $testname.out_tmp
+ ;;
+ SunOS*)
+ $SPICE --batch $testdir/$testname.cir >$testname.test &&\
+ sed -e '/^$/d' $testname.test | egrep -v $FILTER > $testname.test_tmp &&\
+ sed -e '/^$/d' $testdir/$testname.out | egrep -v $FILTER > $testname.out_tmp
+ if diff -b -w $testname.out_tmp $testname.test_tmp; then
+ rm $testname.test $testname.test_tmp $testname.out_tmp
+ exit 0
+ fi
+ rm -f $testname.test_tmp $testname.out_tmp
+ ;;
+esac
+
exit 1