#!/bin/bash set -euo pipefail if [[ $# -ne 1 ]]; then echo "$0 {ubel.c}" exit 1 fi SOURCE=$1 TEST_DIR=$(mktemp -d) CFLAGS="-Wall -Wextra -pedantic -Werror" # Delete temporary directory and exit with nonzero status. function die { echo "$1" rm -rf "$TEST_DIR" exit 1 } for i in $(seq $(wc -l < "$SOURCE")); do sed -e "${i}d" "$SOURCE" > "$TEST_DIR/input.c" gcc $CFLAGS -c "$TEST_DIR/input.c" -o /dev/null \ || die "Delete line $i failed (gcc)" clang $CFLAGS -c "$TEST_DIR/input.c" -o /dev/null \ || die "Delete line $i failed (gcc)" done rm -rf "$TEST_DIR" exit 0