#!/bin/sh

# by Aleksey Cheusov <vle@gmx.net>

. ./pipestatus

ret1 () {
    return 1
}

ret7 () {
    return 7
}

ret55 () {
    return 55
}

showvars (){
    echo '$?'=$?
    echo pipesize=$pipesize
    echo pipestatus_all=$pipestatus_all
    i=1
    while test $i -le $pipesize; do
	eval echo 'pipestatus_$i=$pipestatus_'$i
	i=$(($i+1))
    done
}

showrunpipe (){
    echo $@ | sed "s/|/'|'/g"
}

run (){
    printf "running\n     runpipe "
    showrunpipe "$@"
    runpipe "$@"
    showvars
    echo ''
}

run0 (){
    printf "running\n     runpipe0 "
    showrunpipe "$@"
    runpipe0 "$@"
    showvars
    echo ''
}

run_re (){
    printf "running\n     runpipe_re "
    re=$1
    printf "'%s' " "$re"
    shift
    showrunpipe "$@"
    runpipe_re "$re" "$@"
    showvars
    echo ''
}

run true '|' true '|' true
run ret1 '|' ret55 '|' ret7

run0 ret1 '|' ret55 '|' true
run0 true '|' true '|' true

run_re '. 0 0' ret1 '|' true '|' true
run_re '0 7 0' true '|' true '|' true
