blob: 67eb5edcad7e4605894ae215b03b57f4267acf20 [file] [log] [blame]
Dmitry V. Levin7b010142015-01-07 19:30:37 +00001#!/bin/sh
2
3# Check verbose decoding of 32-bit stat syscall.
4
5. "${srcdir=.}/init.sh"
6
7check_prog dd
8check_prog grep
9check_prog touch
10
11OUT="$LOG.out"
12size=233811181
13sample=stat32_sample
14
15umask 022
Dmitry V. Levined7ada22015-01-13 00:06:09 +000016truncate_cmd="dd seek=$size bs=1 count=0 if=/dev/null of=$sample"
Dmitry V. Levin7b010142015-01-07 19:30:37 +000017$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. Levin60cb10d2015-01-08 18:46:30 +000024 rm -f $sample "$OUT"
Dmitry V. Levin7b010142015-01-07 19:30:37 +000025 framework_skip_ '32-bit stat syscall is not available'
26 else
27 fail_ 'stat32 failed'
28 fi
29}
30
31touch -t 0102030405 $sample
32
33for f in $sample . /dev/null; do
34 args="-v -efile ./stat32 $f"
35 $STRACE -o "$LOG" $args > "$OUT" &&
Andreas Schwab33557842015-03-11 17:49:06 +010036 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. Levin7b010142015-01-07 19:30:37 +000039 cat "$OUT" "$LOG"
40 fail_ "$STRACE $args output mismatch"
41 }
42done
43
44rm -f $sample "$OUT"
45
46exit 0