mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-03-31 01:04:13 +02:00
Treat fractions as a request to round up to the next representable value, and treat out-of-range values as maximal ones. This is consistent with how "sleep" works. And this way, "timeout 999999999999999999d FOO" and "timeout 4.5 foo" are more likely to do what the user wants. * src/timeout.c: Include c-strtod.h and xstrtod.h, not xstrtol.h. (apply_time_suffix): Change it to the way sleep.c's time_suffix does things. Maybe this function (identical in both programs, other than its name) should be moved to a library? (parse_duration): Return a maximal value on overflow. Return unsigned int, not unsigned long. Allow fractions, which round up to the next integer value. * tests/misc/timeout-parameters: Adjust tests to match new behavior. Add a very large number.
71 lines
1.7 KiB
Bash
Executable File
71 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
# Validate timeout parameter combinations
|
|
|
|
# Copyright (C) 2008-2011 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/>.
|
|
|
|
. "${srcdir=.}/init.sh"; path_prepend_ ../src
|
|
print_ver_ timeout
|
|
getlimits_
|
|
|
|
|
|
# internal errors are 125, distinct from execution failure
|
|
|
|
# invalid timeout
|
|
timeout invalid sleep 0
|
|
test $? = 125 || fail=1
|
|
|
|
# invalid kill delay
|
|
timeout --kill-after=invalid 1 sleep 0
|
|
test $? = 125 || fail=1
|
|
|
|
# invalid timeout suffix
|
|
timeout 42D sleep 0
|
|
test $? = 125 || fail=1
|
|
|
|
# timeout overflow
|
|
timeout $UINT_OFLOW sleep 0
|
|
test $? = 0 || fail=1
|
|
|
|
# timeout overflow
|
|
timeout $(expr $UINT_MAX / 86400 + 1)d sleep 0
|
|
test $? = 0 || fail=1
|
|
|
|
# timeout overflow
|
|
timeout 999999999999999999999999999999999999999999999999999999999999d sleep 0
|
|
test $? = 0 || fail=1
|
|
|
|
# floating point notation
|
|
timeout 2.34 sleep 0
|
|
test $? = 0 || fail=1
|
|
|
|
# floating point notation
|
|
timeout 2.34e+5d sleep 0
|
|
test $? = 0 || fail=1
|
|
|
|
# invalid signal spec
|
|
timeout --signal=invalid 1 sleep 0
|
|
test $? = 125 || fail=1
|
|
|
|
# invalid command
|
|
timeout 10 .
|
|
test $? = 126 || fail=1
|
|
|
|
# no such command
|
|
timeout 10 no_such
|
|
test $? = 127 || fail=1
|
|
|
|
Exit $fail
|