mirror of
https://https.git.savannah.gnu.org/git/diffutils.git
synced 2026-01-27 09:54:25 +00:00
Prefer idx_t to size_t in lib/cmpbuf.c and related buffer-size code. Because POSIX says blksize_t can be wider than idx_t, check for overflow when copying the former to the latter. * bootstrap.conf (gnulib_modules): Add idx. * lib/cmpbuf.c (block_read, buffer_lcm): Prefer idx_t to size_t. All uses changed. * lib/cmpbuf.c (block_read): Return ptrdiff_t instead of size_t. All uses changed. (buffer_lcm): Help the compiler by checking for negative args, even though they are not allowed. * lib/cmpbuf.h: Include idx.h and stddef.h, for idx_t and ptrdiff_t, so that this include file is self-contained. * src/analyze.c (diff_2_files): * src/cmp.c (main): * src/diff.c, src/io.c: Do not include stdckdint.h here, since system.h now does that. * src/diff3.c (read_diff): * src/io.c (sip): Protect against negative STAT_BLOCKSIZE, or STAT_BLOCKSIZE outside idx_t range. * src/system.h: Include stdckdint.h, idx.h.
198 lines
4.0 KiB
Plaintext
198 lines
4.0 KiB
Plaintext
# Bootstrap configuration.
|
|
|
|
# Copyright (C) 2006-2013, 2015-2023 Free Software Foundation, Inc.
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
avoided_gnulib_modules='
|
|
--avoid=localename
|
|
--avoid=lock-tests
|
|
--avoid=setlocale
|
|
'
|
|
|
|
# gnulib modules used by this package.
|
|
gnulib_modules='
|
|
announce-gen
|
|
attribute
|
|
argmatch
|
|
binary-io
|
|
nullptr
|
|
c-stack
|
|
config-h
|
|
diffseq
|
|
dirname
|
|
do-release-commit-and-tag
|
|
dup2
|
|
error
|
|
exclude
|
|
exitfail
|
|
extensions
|
|
extern-inline
|
|
flexmember
|
|
fcntl
|
|
file-type
|
|
filenamecat
|
|
fnmatch-gnu
|
|
getopt-gnu
|
|
gettext-h
|
|
gettime
|
|
git-version-gen
|
|
gitlog-to-changelog
|
|
gnu-make
|
|
gnu-web-doc-update
|
|
gnumakefile
|
|
gnupload
|
|
hard-locale
|
|
idx
|
|
inttostr
|
|
inttypes
|
|
isblank
|
|
largefile
|
|
lstat
|
|
maintainer-makefile
|
|
manywarnings
|
|
mbrtowc
|
|
mempcpy
|
|
mkstemp
|
|
mktime
|
|
nstrftime
|
|
perl
|
|
progname
|
|
propername
|
|
raise
|
|
rawmemchr
|
|
readme-release
|
|
regex
|
|
sh-quote
|
|
signal
|
|
sigprocmask
|
|
stat
|
|
stat-macros
|
|
stat-time
|
|
stdbool
|
|
stdckdint
|
|
stdint
|
|
stpcpy
|
|
strcase
|
|
strptime
|
|
strtoimax
|
|
sys_wait
|
|
system-quote
|
|
time_rz
|
|
unistd
|
|
unlocked-io
|
|
update-copyright
|
|
verify
|
|
version-etc
|
|
version-etc-fsf
|
|
wcwidth
|
|
xalloc
|
|
xfreopen
|
|
xmalloca
|
|
xreadlink
|
|
xstdopen
|
|
xstrtoimax
|
|
year2038
|
|
'
|
|
|
|
# Additional xgettext options to use. Use "\\\newline" to break lines.
|
|
XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
|
|
--flag=asnprintf:3:c-format\\\
|
|
--flag=asprintf:2:c-format\\\
|
|
--from-code=UTF-8\\\
|
|
--flag=message:1:c-format\\\
|
|
--flag=try_help:1:c-format\\\
|
|
--flag=vasprintf:2:c-format\\\
|
|
--flag=vasnprintf:3:c-format\\\
|
|
'
|
|
|
|
gnulib_tool_option_extras="--tests-base=gnulib-tests
|
|
--with-tests
|
|
--symlink
|
|
--makefile-name=gnulib.mk
|
|
$avoided_gnulib_modules
|
|
"
|
|
|
|
# Build prerequisites
|
|
buildreq="\
|
|
autoconf 2.64
|
|
automake 1.12.2
|
|
autopoint 0.19.2
|
|
gettext 0.19.2
|
|
git 1.4.4
|
|
gperf -
|
|
gzip -
|
|
help2man -
|
|
m4 -
|
|
makeinfo -
|
|
perl 5.5
|
|
texi2pdf 6.1
|
|
tar -
|
|
wget -
|
|
xz -
|
|
"
|
|
|
|
bootstrap_post_import_hook ()
|
|
{
|
|
# Automake requires that ChangeLog exist.
|
|
touch ChangeLog || exit 1
|
|
|
|
# Copy pkg-config's pkg.m4 so that our downstream users don't need to.
|
|
local ac_dir=`aclocal --print-ac-dir`
|
|
test -s "$ac_dir/dirlist" && ac_dir=$ac_dir:`tr '\n' : < "$ac_dir/dirlist"`
|
|
oIFS=$IFS
|
|
IFS=:
|
|
for dir in \
|
|
$ACLOCAL_PATH $ac_dir /usr/share/aclocal ''
|
|
do
|
|
IFS=$oIFS
|
|
if test -n "$dir" && test -r "$dir/pkg.m4"; then
|
|
cp "$dir/pkg.m4" m4/pkg.m4
|
|
return
|
|
fi
|
|
done
|
|
IFS=$oIFS
|
|
die 'Cannot find pkg.m4; perhaps you need to install pkg-config'
|
|
}
|
|
|
|
bootstrap_epilogue()
|
|
{
|
|
perl -pi -e "s/\@PACKAGE\@/$package/g" README-release
|
|
|
|
# Since this is a "GNU" package, replace this line
|
|
# if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null \
|
|
# | grep -v 'libtool:' >/dev/null; then
|
|
# with this:
|
|
# if true; then
|
|
# Why? That pipeline searches all files in $(top_srcdir), and if you
|
|
# happen to have large files (or apparently large sparse files), the
|
|
# first grep may well run out of memory.
|
|
perl -pi -e 's/if LC_ALL=C grep .GNU .PACKAGE.*; then/if true; then/' \
|
|
po/Makefile.in.in
|
|
|
|
# Install our git hooks, as long as "cp" accepts the --backup option,
|
|
# so that we can back up any existing files.
|
|
case $(cp --help) in *--backup*) backup=1;; *) backup=0;; esac
|
|
if test $backup = 1; then
|
|
hooks=$(cd scripts/git-hooks && git ls-files)
|
|
for f in $hooks; do
|
|
# If it is identical, skip it.
|
|
cmp scripts/git-hooks/$f .git/hooks/$f > /dev/null \
|
|
&& continue
|
|
cp --backup=numbered scripts/git-hooks/$f .git/hooks
|
|
chmod a-w .git/hooks/$f
|
|
done
|
|
fi
|
|
}
|