Dmitry V. Levin | 7b01014 | 2015-01-07 19:30:37 +0000 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | # Check verbose decoding of 32-bit stat syscall. |
| 4 | |
| 5 | . "${srcdir=.}/init.sh" |
| 6 | |
| 7 | check_prog dd |
| 8 | check_prog grep |
| 9 | check_prog touch |
| 10 | |
| 11 | OUT="$LOG.out" |
| 12 | size=233811181 |
| 13 | sample=stat32_sample |
| 14 | |
| 15 | umask 022 |
Dmitry V. Levin | ed7ada2 | 2015-01-13 00:06:09 +0000 | [diff] [blame] | 16 | truncate_cmd="dd seek=$size bs=1 count=0 if=/dev/null of=$sample" |
Dmitry V. Levin | 7b01014 | 2015-01-07 19:30:37 +0000 | [diff] [blame] | 17 | $truncate_cmd > "$OUT" 2>&1 || { |
| 18 | cat "$OUT" |
| 19 | framework_skip_ 'failed to create a large sparse file' |
| 20 | } |
| 21 | |
| 22 | ./stat32 $sample > /dev/null || { |
| 23 | if [ $? -eq 77 ]; then |
Dmitry V. Levin | 60cb10d | 2015-01-08 18:46:30 +0000 | [diff] [blame] | 24 | rm -f $sample "$OUT" |
Dmitry V. Levin | 7b01014 | 2015-01-07 19:30:37 +0000 | [diff] [blame] | 25 | framework_skip_ '32-bit stat syscall is not available' |
| 26 | else |
| 27 | fail_ 'stat32 failed' |
| 28 | fi |
| 29 | } |
| 30 | |
| 31 | touch -t 0102030405 $sample |
| 32 | |
| 33 | for f in $sample . /dev/null; do |
| 34 | args="-v -efile ./stat32 $f" |
| 35 | $STRACE -o "$LOG" $args > "$OUT" && |
Andreas Schwab | 3355784 | 2015-03-11 17:49:06 +0100 | [diff] [blame] | 36 | exp_lines=$(wc -l < "$OUT") && |
| 37 | matched_lines=$(LC_ALL=C grep -c -E -x -f "$OUT" "$LOG") && |
| 38 | test $exp_lines -eq $matched_lines || { |
Dmitry V. Levin | 7b01014 | 2015-01-07 19:30:37 +0000 | [diff] [blame] | 39 | cat "$OUT" "$LOG" |
| 40 | fail_ "$STRACE $args output mismatch" |
| 41 | } |
| 42 | done |
| 43 | |
| 44 | rm -f $sample "$OUT" |
| 45 | |
| 46 | exit 0 |