Dmitry V. Levin
7e79a8b485
* tests/getdents.out: New file. * tests/Makefile.am (EXTRA_DIST): Add it. * tests/getdents.test: Check whether awk is capable of matching long regular expressions.
44 lines
885 B
Bash
Executable File
44 lines
885 B
Bash
Executable File
#!/bin/sh
|
|
|
|
# Check that getdents/getdents64 syscalls are traced properly.
|
|
|
|
. "${srcdir=.}/init.sh"
|
|
|
|
check_prog awk
|
|
awk -f "$srcdir"/getdents.awk "$srcdir"/getdents.out ||
|
|
framework_skip_ 'awk does not work properly'
|
|
|
|
check_prog ls
|
|
check_prog mkdir
|
|
check_prog rm
|
|
check_prog seq
|
|
check_prog touch
|
|
|
|
dir="$LOG.dir"
|
|
mkdir -- "$dir" ||
|
|
framework_skip_ 'failed to create a directory'
|
|
|
|
touch -- "$dir/$(for i in $(seq 1 127); do echo A; done; echo Z)" ||
|
|
framework_skip_ 'failed to create a file'
|
|
|
|
ls -- "$dir" > /dev/null || {
|
|
rm -rf -- "$dir"
|
|
framework_skip_ 'failed to list a directory'
|
|
}
|
|
|
|
args='-vegetdents,getdents64'
|
|
$STRACE -o "$LOG" $args ls -- "$dir" > /dev/null
|
|
rc=$?
|
|
rm -rf -- "$dir"
|
|
[ $rc -eq 0 ] || {
|
|
cat "$LOG"
|
|
fail_ "strace $args failed"
|
|
}
|
|
|
|
awk -f "$srcdir"/getdents.awk "$LOG" || {
|
|
cat "$LOG"
|
|
fail_ "strace $args failed to trace getdents/getdents64 properly"
|
|
}
|
|
|
|
exit 0
|