16781111857017f0587d41001ba50a0db0d6d4a5eFei Jie#!/bin/sh
26781111857017f0587d41001ba50a0db0d6d4a5eFei Jie
36781111857017f0587d41001ba50a0db0d6d4a5eFei Jie# Check -S option.
46781111857017f0587d41001ba50a0db0d6d4a5eFei Jie
56781111857017f0587d41001ba50a0db0d6d4a5eFei Jie. "${srcdir=.}/init.sh"
66781111857017f0587d41001ba50a0db0d6d4a5eFei Jie
7f56323f1ccd78207a75afa62369f7306d06051c1Dmitry V. Levinrun_prog ./readv > /dev/null
8804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin
9804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levintest_c()
10804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin{
11804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin	local sortby sortopts sedexpr
12804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin	sortby="$1"; shift
13804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin	sortopts="$1"; shift
14804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin	sedexpr="$1"; shift
15804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin
16f56323f1ccd78207a75afa62369f7306d06051c1Dmitry V. Levin	run_strace -c -w -S "$sortby" ./readv > /dev/null
17469fd109cdbd04215ce4efcd13b13485d1fb3ba5Dmitry V. Levin	sed -r -n -e "$sedexpr" < "$LOG" > "$OUT"
18804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin
19804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin	[ -s "$OUT" ] ||
20804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin		fail_ "$STRACE $args output mismatch"
2153128b67461b9c0bc22cc4918c010ec918aead23Dmitry V. Levin	LC_ALL=C sort -c $sortopts "$OUT" || {
2253128b67461b9c0bc22cc4918c010ec918aead23Dmitry V. Levin		echo 'Actual output:'
2353128b67461b9c0bc22cc4918c010ec918aead23Dmitry V. Levin		cat < "$LOG"
24804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin		fail_ "$STRACE $args output not sorted properly"
2553128b67461b9c0bc22cc4918c010ec918aead23Dmitry V. Levin	}
26804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin}
27804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin
28469fd109cdbd04215ce4efcd13b13485d1fb3ba5Dmitry V. Levinc='[[:space:]]+([^[:space:]]+)'
29469fd109cdbd04215ce4efcd13b13485d1fb3ba5Dmitry V. Levintest_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
30469fd109cdbd04215ce4efcd13b13485d1fb3ba5Dmitry V. Levintest_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
31804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levin
32804bb8797b93b561ececd39c8f19b6c40834395eDmitry V. Levinrm -f "$OUT"
33