File: utmp.sh

package info (click to toggle)
inetutils 2%3A2.7-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,684 kB
  • sloc: ansic: 132,371; sh: 12,498; yacc: 1,651; makefile: 725; perl: 72
file content (69 lines) | stat: -rwxr-xr-x 2,092 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/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