diff options
| author | Sam Varshavchik | 2013-08-29 08:28:58 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2013-08-29 08:30:38 -0400 | 
| commit | d61d9e62ef6d46f5747a9099fe308455de348947 (patch) | |
| tree | 5ba81406d2606fbbb11ab476da1335ada424f705 | |
| parent | 2b94d904b8c03ab9ae4074230ac50aa1ad7f362b (diff) | |
| download | courier-libs-d61d9e62ef6d46f5747a9099fe308455de348947.tar.bz2 | |
maildrop: xfilter command fixes
| -rw-r--r-- | maildrop/filter.C | 19 | ||||
| -rw-r--r-- | maildrop/message.C | 2 | ||||
| -rw-r--r-- | maildrop/testsuite2 | 335 | 
3 files changed, 192 insertions, 164 deletions
| diff --git a/maildrop/filter.C b/maildrop/filter.C index 373eb47..d59e2ec 100644 --- a/maildrop/filter.C +++ b/maildrop/filter.C @@ -185,7 +185,15 @@ int	maxfd=pipe1.fds[0];  			if (n < 0)  			{ -				if (errno != EINTR)	// Perfectly OK +				if (errno != EINTR +#ifdef EAGAIN +				    && errno != EAGAIN +#endif +#ifdef EWOULDBLOCK +				    && errno != EWOULDBLOCK +#endif + +				    )	// Perfectly OK  				{  					FD_CLR(pipe0.fds[1], &writefd);  					pipe0.close1(); @@ -211,7 +219,14 @@ int	maxfd=pipe1.fds[0];  			if (readbuflen < 0)  			{ -				if (errno != EINTR) +				if (errno != EINTR +#ifdef EAGAIN +				    && errno != EAGAIN +#endif +#ifdef EWOULDBLOCK +				    && errno != EWOULDBLOCK +#endif +				    )  				{  					merr << "maildrop: error reading from filter.\n";  					errflag=1; diff --git a/maildrop/message.C b/maildrop/message.C index d583fbe..7d156c5 100644 --- a/maildrop/message.C +++ b/maildrop/message.C @@ -118,7 +118,6 @@ int	n;  	while ((n=read(fd, buf, sizeof(buf))) > 0)  	{ -		rfc2045_parse(rfc2045p, buf, n);  		Init(buf, n);  	}  	if (n < 0) @@ -130,6 +129,7 @@ int	n;  void Message::Init(const void *data, unsigned cnt)  { +	rfc2045_parse(rfc2045p, (const char *)data, cnt);  	{  	const char *p=(const char*)data;  	unsigned n=cnt; diff --git a/maildrop/testsuite2 b/maildrop/testsuite2 index 7540536..df65bc8 100644 --- a/maildrop/testsuite2 +++ b/maildrop/testsuite2 @@ -64,166 +64,179 @@ EOF  chmod 600 ./testsuite1.filter ./testsuite2.filter ./testsuite3.filter ./testsuite4.filter ./testsuite5.filter -type="small message" - -# Small file -if ./maildrop ./testsuite1.filter <testsuite.msg -then -    : -else -    echo "Test 1 failed: $type" -    exit 1 -fi - -if ./maildrop ./testsuite2.filter <testsuite.msg -then -    : -else -    echo "Test 2 failed: $type" -    exit 1 -fi - -if ./maildrop ./testsuite3.filter <testsuite.msg -then -    echo "Test 3 failed: $type" -    exit 1 -fi - -if ./maildrop ./testsuite4.filter <testsuite.msg -then -    : -else -    echo "Test 4 failed: $type" -    exit 1 -fi - -if ./maildrop ./testsuite5.filter <testsuite.msg -then -    : -else -    echo "Test 5 failed: $type" -    exit 1 -fi - -type="small pipe" -if cat testsuite.msg | ./maildrop ./testsuite1.filter -then -    : -else -    echo "Test 1 failed: $type" -    exit 1 -fi - -if cat testsuite.msg | ./maildrop ./testsuite2.filter -then -    : -else -    echo "Test 2 failed: $type" -    exit 1 -fi - -if cat testsuite.msg | ./maildrop ./testsuite3.filter -then -    echo "Test 3 failed: $type" -    exit 1 -fi - -if cat testsuite.msg | ./maildrop ./testsuite4.filter -then -    : -else -    echo "Test 4 failed: $type" -    exit 1 -fi - -if cat testsuite.msg | ./maildrop ./testsuite5.filter -then -    : -else -    echo "Test 5 failed: $type" -    exit 1 -fi - -dd if="/dev/zero" bs=8192 count=2 2>/dev/null | tr '\0' '\012' >>testsuite.msg - -type="large message" - -# Large file -if ./maildrop ./testsuite1.filter <testsuite.msg -then -    : -else -    echo "Test 1 failed: $type" -    exit 1 -fi - -if ./maildrop ./testsuite2.filter <testsuite.msg -then -    : -else -    echo "Test 2 failed: $type" -    exit 1 -fi - -if ./maildrop ./testsuite3.filter <testsuite.msg -then -    echo "Test 3 failed: $type" -    exit 1 -fi - -if ./maildrop ./testsuite4.filter <testsuite.msg -then -    : -else -    echo "Test 4 failed: $type" -    exit 1 -fi - -if ./maildrop ./testsuite5.filter <testsuite.msg -then -    : -else -    echo "Test 5 failed: $type" -    exit 1 -fi - -type="large pipe" -if cat testsuite.msg | ./maildrop ./testsuite1.filter -then -    : -else -    echo "Test 1 failed: $type" -    exit 1 -fi - -if cat testsuite.msg | ./maildrop ./testsuite2.filter -then -    : -else -    echo "Test 2 failed: $type" -    exit 1 -fi - -if cat testsuite.msg | ./maildrop ./testsuite3.filter -then -    echo "Test 3 failed: $type" -    exit 1 -fi - -if cat testsuite.msg | ./maildrop ./testsuite4.filter -then -    : -else -    echo "Test 4 failed: $type" -    exit 1 -fi - -if cat testsuite.msg | ./maildrop ./testsuite5.filter -then -    : -else -    echo "Test 5 failed: $type" -    exit 1 -fi +runtest() { +    type="small message $1" + +    # Small file +    if ./maildrop ./testsuite1.filter <testsuite.msg +    then +	: +    else +	echo "Test 1 failed: $type" +	exit 1 +    fi + +    if ./maildrop ./testsuite2.filter <testsuite.msg +    then +	: +    else +	echo "Test 2 failed: $type" +	exit 1 +    fi + +    if ./maildrop ./testsuite3.filter <testsuite.msg +    then +	echo "Test 3 failed: $type" +	exit 1 +    fi + +    if ./maildrop ./testsuite4.filter <testsuite.msg +    then +	: +    else +	echo "Test 4 failed: $type" +	exit 1 +    fi + +    if ./maildrop ./testsuite5.filter <testsuite.msg +    then +	: +    else +	echo "Test 5 failed: $type" +	exit 1 +    fi + +    type="small pipe" +    if cat testsuite.msg | ./maildrop ./testsuite1.filter +    then +	: +    else +	echo "Test 1 failed: $type" +	exit 1 +    fi + +    if cat testsuite.msg | ./maildrop ./testsuite2.filter +    then +	: +    else +	echo "Test 2 failed: $type" +	exit 1 +    fi + +    if cat testsuite.msg | ./maildrop ./testsuite3.filter +    then +	echo "Test 3 failed: $type" +	exit 1 +    fi + +    if cat testsuite.msg | ./maildrop ./testsuite4.filter +    then +	: +    else +	echo "Test 4 failed: $type" +	exit 1 +    fi + +    if cat testsuite.msg | ./maildrop ./testsuite5.filter +    then +	: +    else +	echo "Test 5 failed: $type" +	exit 1 +    fi + +    dd if="/dev/zero" bs=8192 count=2 2>/dev/null | tr '\0' '\012' >>testsuite.msg + +    type="large message $1" + +    # Large file +    if ./maildrop ./testsuite1.filter <testsuite.msg +    then +	: +    else +	echo "Test 1 failed: $type" +	exit 1 +    fi + +    if ./maildrop ./testsuite2.filter <testsuite.msg +    then +	: +    else +	echo "Test 2 failed: $type" +	exit 1 +    fi + +    if ./maildrop ./testsuite3.filter <testsuite.msg +    then +	echo "Test 3 failed: $type" +	exit 1 +    fi + +    if ./maildrop ./testsuite4.filter <testsuite.msg +    then +	: +    else +	echo "Test 4 failed: $type" +	exit 1 +    fi + +    if ./maildrop ./testsuite5.filter <testsuite.msg +    then +	: +    else +	echo "Test 5 failed: $type" +	exit 1 +    fi + +    type="large pipe" +    if cat testsuite.msg | ./maildrop ./testsuite1.filter +    then +	: +    else +	echo "Test 1 failed: $type" +	exit 1 +    fi + +    if cat testsuite.msg | ./maildrop ./testsuite2.filter +    then +	: +    else +	echo "Test 2 failed: $type" +	exit 1 +    fi + +    if cat testsuite.msg | ./maildrop ./testsuite3.filter +    then +	echo "Test 3 failed: $type" +	exit 1 +    fi + +    if cat testsuite.msg | ./maildrop ./testsuite4.filter +    then +	: +    else +	echo "Test 4 failed: $type" +	exit 1 +    fi + +    if cat testsuite.msg | ./maildrop ./testsuite5.filter +    then +	: +    else +	echo "Test 5 failed: $type" +	exit 1 +    fi +} + +runtest "" + +for f in testsuite?.filter +do +    echo 'xfilter "cat"' >t +    cat $f >>t +    chmod 600 t +    mv -f t $f +done +runtest " with xfilter"  rm -f testsuite?.filter testsuite.msg | 
