# This file is sourced by init.sh, *before* its initialization. # Copyright (C) 2010-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 . # Skip the current test if valgrind doesn't work, # which could happen if not installed, # or hasn't support for the built architecture, # or hasn't appropriate error suppressions installed etc. # This goes hand in hand with the "exec 9>&2;" in tests/Makefile.am's # TESTS_ENVIRONMENT definition. stderr_fileno_=9 # Having an unsearchable directory in PATH causes execve to fail with EACCES # when applied to an unresolvable program name, contrary to the desired ENOENT. # Avoid the problem by rewriting PATH to exclude unsearchable directories. # Also, if PATH lacks /sbin and/or /usr/sbin, append it/them. sanitize_path_() { # FIXME: remove double quotes around $IFS when all tests use init.sh. # They constitute a work-around for a bug in FreeBSD 8.1's /bin/sh. local saved_IFS="$IFS" IFS=$PATH_SEPARATOR set -- $PATH IFS=$saved_IFS local d d1 local colon= local new_path= for d in "$@"; do test -z "$d" && d1=. || d1=$d if ls -d "$d1/." > /dev/null 2>&1; then new_path="$new_path$colon$d" colon=$PATH_SEPARATOR fi done for d in /sbin /usr/sbin ; do case "$PATH_SEPARATOR$new_path$PATH_SEPARATOR" in *$PATH_SEPARATOR$d$PATH_SEPARATOR*) ;; *) new_path="$new_path$PATH_SEPARATOR$d" ;; esac done PATH=$new_path export PATH } require_valgrind_() { local errout; errout=$( LC_ALL=C valgrind --error-exitcode=1 diff /dev/null /dev/null 2>&1 ) || skip_ "requires a working valgrind" case $errout in *'Serious error'*) skip_ "requires a valgrind without serious errors";; esac } sanitize_path_