1#!/bin/sh 2# Test wc on /proc and /sys files. 3 4# Copyright 2014-2023 Free Software Foundation, Inc. 5 6# This program is free software: you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation, either version 3 of the License, or 9# (at your option) any later version. 10 11# This program is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15 16# You should have received a copy of the GNU General Public License 17# along with this program. If not, see <https://www.gnu.org/licenses/>. 18 19. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src 20print_ver_ wc 21 22# Ensure we read() /proc files to determine content length 23for file in /proc/version /sys/kernel/profiling; do 24 if test -r $file; then 25 cp -f $file copy && 26 wc -c < copy > exp1 || framework_failure_ 27 28 wc -c < $file > out1 || fail=1 29 compare exp1 out1 || fail=1 30 fi 31done 32 33# Ensure we handle cases where we don't read() 34truncate -s 2 no_read || framework_failure_ 35# read() used when multiple of page size 36truncate -s 1048576 do_read || framework_failure_ 37wc -c no_read do_read > out || fail=1 38cat <<\EOF > exp 39 2 no_read 401048576 do_read 411048578 total 42EOF 43compare exp out || fail=1 44 45# Ensure we update the offset even when not reading, 46# which wasn't the case from coreutils-8.27 to coreutils-9.2 47{ wc -c; wc -c; } < no_read > out || fail=1 48{ wc -c; wc -c; } < do_read >> out || fail=1 49cat <<\EOF > exp 502 510 521048576 530 54EOF 55compare exp out || fail=1 56 57# Ensure we don't read too much when reading, 58# as was the case on 32 bit systems 59# from coreutils-8.24 to coreutils-9.1 60if timeout 10 truncate -s1T do_read; then 61 timeout 10 wc -c do_read || fail=1 62fi 63 64Exit $fail 65