autoconf/tests/atlocal.in
Benoit Sigoure 7559c93d38 Be nice with file systems that don't handle unusual characters.
* tests/atlocal.in (func_sanitize_file_name)
	(func_sanitize_dir_name): New shell functions.
	* tests/tools.at (autom4te and whitespace in file names)
	(autotools and whitespace in file names): Use them.
	* tests/torture.at (AC_CONFIG_FILES, HEADERS, LINKS and COMMANDS):
	Cover more potentially problemtic file names.  Use the new
	functions.

Signed-off-by: Benoit Sigoure <tsuna@lrde.epita.fr>
Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
2008-03-02 13:03:10 +01:00

53 lines
1.7 KiB
Bash

# -*- shell-script -*-
# @configure_input@
# Configurable variable values for Autoconf test suite.
# Copyright (C) 2000, 2001, 2005 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/>.
PERL='@PERL@'
GREP='@GREP@'
EGREP='@EGREP@'
SED='@SED@'
# We need to know if sh -n is ok.
ac_cv_sh_n_works='@ac_cv_sh_n_works@'
# Check whether the underlying system can manage some unusual
# symbols in file names.
unsupported_fs_chars=
for c in '\\' '"' '<' '>' '*' '?' '|'
do
touch "t$c" 2>/dev/null
test -f "t$c" && rm -f "t$c" && continue
# $c cannot be used in a file name.
unsupported_fs_chars=$unsupported_fs_chars$c
done
if test -z "$unsupported_fs_chars"; then
func_sanitize_file_name () { echo "$@"; }
else
func_sanitize_file_name () { echo "$@" | tr -d "$unsupported_fs_chars"; }
fi
# Can we create directories with trailing whitespaces in their name?
rm -rf 'tdir /'
mkdir 'tdir ' && touch 'tdir /tfile' 2>/dev/null
if test -f 'tdir /tfile'; then
func_sanitize_dir_name () { echo "$@"; }
rm -rf 'tdir /'
else
func_sanitize_dir_name () { echo "$@" | sed 's/ *$//'; }
fi