1#!/bin/sh 2# make sure 'sum -s' works for input whose sum of bytes is larger than 2^32 3 4# Copyright (C) 2001-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# Avoid a problem when run in a UTF-8 locale. 20# Otherwise, Perl would try to (and fail to) interpret 21# each string below as a sequence of multi-byte characters. 22LC_ALL=C 23export LC_ALL 24 25. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src 26print_ver_ sum 27 28require_perl_ 29 30# FYI, 16843009 is floor (2^32 / 255). 31 32# aka: perl -e 'print chr(255) x 16843009' 33$PERL -e '$s = chr(255) x 65537; foreach (1..257) {print $s}' \ 34 | sum -s > out || fail=1 35cat > exp <<\EOF 3665535 32897 37EOF 38compare exp out || fail=1 39 40rm -f out exp 41 42# aka: perl -e 'print chr(255) x 16843010' 43$PERL -e '$s = chr(255) x 65537; foreach (1..257) {print $s}; print chr(255)' \ 44 | sum -s > out || fail=1 45cat > exp <<\EOF 46254 32897 47EOF 48compare exp out || fail=1 49 50Exit $fail 51