1d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#!/bin/sh 2d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes 3d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# Check -S option. 4d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes 5d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes. "${srcdir=.}/init.sh" 6d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes 7d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesrun_prog ./readv > /dev/null 8d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes 9d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughestest_c() 10d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes{ 11d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes local sortby sortopts sedexpr 12d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes sortby="$1"; shift 13d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes sortopts="$1"; shift 14d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes sedexpr="$1"; shift 15d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes 16d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes run_strace -c -w -S "$sortby" ./readv > /dev/null 17d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes sed -r -n -e "$sedexpr" < "$LOG" > "$OUT" 18d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes 19d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes [ -s "$OUT" ] || 20d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes fail_ "$STRACE $args output mismatch" 21d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes LC_ALL=C sort -c $sortopts "$OUT" || { 22d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes echo 'Actual output:' 23d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes cat < "$LOG" 24d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes fail_ "$STRACE $args output not sorted properly" 25d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes } 26d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes} 27d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes 28d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesc='[[:space:]]+([^[:space:]]+)' 29d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughestest_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p' 30d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughestest_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p' 31d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes 32d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesrm -f "$OUT" 33