|
|
#!/bin/sh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src |
|
|
print_ver_ fold printf |
|
|
getlimits_ |
|
|
|
|
|
|
|
|
IO_BUFSIZE_TIMES2=$(($IO_BUFSIZE * 2)) |
|
|
|
|
|
|
|
|
head -c $IO_BUFSIZE_TIMES2 /dev/zero | fold > out || fail=1 |
|
|
test $(wc -l < out) -eq 0 || fail=1 |
|
|
|
|
|
|
|
|
head -c $IO_BUFSIZE_TIMES2 /dev/zero | fold --characters > out || fail=1 |
|
|
test $(wc -l < out) -eq $(($IO_BUFSIZE_TIMES2 / 80)) || fail=1 |
|
|
|
|
|
test "$LOCALE_FR_UTF8" != none || skip_ "French UTF-8 locale not available" |
|
|
|
|
|
LC_ALL=$LOCALE_FR_UTF8 |
|
|
export LC_ALL |
|
|
|
|
|
test $(env printf '\u200B' | wc -L) -eq 0 || |
|
|
skip_ "character width mismatch" |
|
|
|
|
|
|
|
|
yes $(env printf '\u200B') | |
|
|
head -n $IO_BUFSIZE_TIMES2 | tr -d '\n' > inp || framework_failure_ |
|
|
|
|
|
fold inp > out || fail=1 |
|
|
test $(wc -l < out) -eq 0 || fail=1 |
|
|
|
|
|
fold --characters inp > out || fail=1 |
|
|
test $(wc -l < out) -eq $(($IO_BUFSIZE_TIMES2 / 80)) || fail=1 |
|
|
|
|
|
|
|
|
test -w /dev/full && test -c /dev/full && |
|
|
vm=$(get_min_ulimit_v_ fold /dev/null) && { |
|
|
|
|
|
for c in '\n' '\0' '\303'; do |
|
|
tr '\0' "$c" < /dev/zero | timeout 10 $SHELL -c \ |
|
|
"(ulimit -v $(($vm+12000)) && fold 2>err >/dev/full)" |
|
|
ret=$? |
|
|
test -f err || skip_ 'shell ulimit failure' |
|
|
{ test $ret = 124 || ! grep 'space' err >/dev/null; } && |
|
|
{ fail=1; cat err; echo "fold didn't diagnose ENOSPC" >&2; } |
|
|
done |
|
|
} |
|
|
|
|
|
Exit $fail |
|
|
|