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