mirror of
https://git.savannah.gnu.org/git/inetutils.git
synced 2026-01-12 00:19:39 +08:00
70 lines
2.0 KiB
Bash
Executable File
70 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Copyright (C) 2012-2025 Free Software Foundation, Inc.
|
|
#
|
|
# This file is part of GNU Inetutils.
|
|
#
|
|
# GNU Inetutils 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.
|
|
#
|
|
# GNU Inetutils 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/'.
|
|
|
|
# Test to establish functionality of read_utmp() from Gnulib.
|
|
# The functionality is needed by our services syslog and talkd.
|
|
#
|
|
|
|
. ./tools.sh
|
|
|
|
READUTMP=${READUTMP:-./readutmp$EXEEXT}
|
|
|
|
if test ! -x $READUTMP; then
|
|
echo >&2 "No executable '$READUTMP' present. Skipping test."
|
|
exit 77
|
|
fi
|
|
|
|
if test -n "$VERBOSE"; then
|
|
set -x
|
|
fi
|
|
|
|
errno=0
|
|
|
|
if who >/dev/null 2>&1; then
|
|
# Check that readutmp agrees with who(1),
|
|
# limiting ourselves to at most three users.
|
|
for nn in `who | $SED 's/ .*//; 3q;'`; do
|
|
$READUTMP $nn || errno=1
|
|
done
|
|
else
|
|
# Execute READUTMP once without argument, and once with
|
|
# ourself as argument. Both should succeed, but are reported
|
|
# as skipped test in case of failure. They are known to be
|
|
# produce false positives in some circumstances.
|
|
$READUTMP || errno=77
|
|
$READUTMP `func_id_user` || errno=77
|
|
fi
|
|
|
|
if test $errno -eq 77; then
|
|
cat >&2 <<-EOT
|
|
NOTICE: read_utmp() from Gnulib just failed. This can be
|
|
due to running this test in sudo mode, or using a role.
|
|
Should this script fail while running it as a logged in
|
|
user, then read_utmp() is indeed broken on this system.
|
|
Then the present executables syslogd and talkd are not
|
|
fully functional.
|
|
EOT
|
|
elif test $errno -eq 1; then
|
|
cat >&2 <<-EOT
|
|
User messaging is broken in syslogd and talkd.
|
|
EOT
|
|
fi
|
|
|
|
exit $errno
|