wait_for_line () {
    while read line
    do
        echo "$line" | grep -q "$1" && break
        echo "$line" | grep "$2" && exit 1
    done < "$3"
    # Read the fifo for ever otherwise process would block
    cat "$3" >/dev/null &
}

function clean_exit(){
    local error_code="$?"
    for job in `jobs -p`
    do
        kill -9 $job
    done
    rm -rf "$1"
    return $error_code
}