#!/usr/bin/env bash

output_dir="output"
mkdir -p "$output_dir"

mypipe="$output_dir/pipe"
rm -f "$mypipe"
mkfifo "$mypipe" || exit 1

gcc -o "$output_dir/nap" nap.c || exit 1

function handler()
{
    trap '' SIGINT SIGHUP SIGPIPE SIGTERM
    [[ -n "$cat_pid" ]] && {
        kill $cat_pid
        wait $cat_pid
        unset cat_pid
    }
    trap - INT ; kill -s INT $BASHPID
}

(
    cd "$output_dir"
    for name in foo.sh bar.sh baz.sh ; do
        rm -f "$name"
        ln -s ../sub.sh "$name"
    done

    trap 'handler' SIGINT SIGHUP SIGPIPE SIGTERM
    cat > test.log < pipe & cat_pid=$!
    ../main.sh
    wait $cat_pid ; unset cat_pid

    tail -n 1 test.log | sed 's@^@last="@;s@$@"@'
)
