From 58b430827fb4ed30ff46e252664dfcf1b15dd869 Mon Sep 17 00:00:00 2001 Message-Id: <58b430827fb4ed30ff46e252664dfcf1b15dd869.1715701608.git.mdw@distorted.org.uk> From: Mark Wooding Date: Wed, 31 Aug 2011 14:44:19 +0100 Subject: [PATCH] Rename `timeout' to `mtimeout' to prevent conflict with GNU Coreutils. Organization: Straylight/Edgeware From: Mark Wooding The Coreutils version is broken: it places itself in a new process group and its child inherits the new process group (though this isn't documented anywhere). This stops interactive signals from working properly. --- Makefile.am | 10 +++++----- debian/control | 4 ++-- debian/inst | 4 ++-- timeout.1 => mtimeout.1 | 36 ++++++++++++++++++------------------ timeout.c => mtimeout.c | 0 5 files changed, 27 insertions(+), 27 deletions(-) rename timeout.1 => mtimeout.1 (92%) rename timeout.c => mtimeout.c (100%) diff --git a/Makefile.am b/Makefile.am index dce864a..57162e8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -68,12 +68,12 @@ pause_LDADD = $(mLib_LIBS) $(MATH_LIBS) dist_man_MANS += pause.1 endif -## timeout +## mtimeout if HAVE_MLIB -bin_PROGRAMS += timeout -timeout_SOURCES = timeout.c -timeout_LDADD = $(mLib_LIBS) $(MATH_LIBS) -dist_man_MANS += timeout.1 +bin_PROGRAMS += mtimeout +mtimeout_SOURCES = mtimeout.c +mtimeout_LDADD = $(mLib_LIBS) $(MATH_LIBS) +dist_man_MANS += mtimeout.1 endif ## stamp diff --git a/debian/control b/debian/control index ca71652..359f211 100644 --- a/debian/control +++ b/debian/control @@ -19,7 +19,7 @@ Depends: shadowfix, zz, gorp, - timeout, + mtimeout, splitconf, xtitle, pause, @@ -43,7 +43,7 @@ Section: utils Depends: ${shlibs:Depends}, python (>= 2.4), python-cdb Description: Simple utilities for messing with CDB files. -Package: timeout +Package: mtimeout Architecture: any Section: utils Depends: ${shlibs:Depends} diff --git a/debian/inst b/debian/inst index 2b8ab18..2e1da69 100644 --- a/debian/inst +++ b/debian/inst @@ -23,8 +23,8 @@ if-mtu if-mtu /usr/bin if-mtu.1 if-mtu /usr/share/man/man1 inplace inplace /usr/bin inplace.1 inplace /usr/share/man/man1 -timeout timeout /usr/bin -timeout.1 timeout /usr/share/man/man1 +mtimeout mtimeout /usr/bin +mtimeout.1 mtimeout /usr/share/man/man1 locking locking /usr/bin locking.1 locking /usr/share/man/man1 not nsict-mail /usr/bin diff --git a/timeout.1 b/mtimeout.1 similarity index 92% rename from timeout.1 rename to mtimeout.1 index 9d2c815..c696f93 100644 --- a/timeout.1 +++ b/mtimeout.1 @@ -1,9 +1,9 @@ -.TH "timeout" 1 "5 June 2011" "Mark Wooding" "Toys" +.TH "mtimeout" 1 "5 June 2011" "Mark Wooding" "Toys" .SH NAME -timeout \- run a program for at most a given amount of time +mtimeout \- run a program for at most a given amount of time . .SH SYNOPSIS -.B timeout +.B mtimeout .RB [ \-s .IR signal ] .I seconds @@ -12,19 +12,19 @@ timeout \- run a program for at most a given amount of time . .SH DESCRIPTION The -.B timeout +.B mtimeout command runs a specified program for at most a given number of .IR seconds . .PP It works by running the given command as a separate process group. It then waits either for the top-level process (only) to exit, or for the timeout to expire, whichever happens first. If the process exits, then -.B timeout +.B mtimeout exits too, setting its exit status to match. Any other processes which may have been started are left unmolested. .PP On the other hand, if the timeout goes off, then -.B timeout +.B mtimeout sends its child process group the specified signal, by default .BR SIGTERM , though you can choose a different one with the @@ -34,7 +34,7 @@ hasn't exited, it sends .B SIGKILL to the process group and waits a further five seconds. If the child still hasn't exited in this time, then -.B timeout +.B mtimeout gives up and exits. .PP The following command-line options are recognized. @@ -61,29 +61,29 @@ or by name (e.g., .BR KILL ). .PP The -.B timeout +.B mtimeout program sets its exit status as follows. .TP 0\(em127 The child process ran to completion within the given time: -.BR timeout 's +.BR mtimeout 's exit status is the same as that of the child process. .TP 128 The child process exited in a way which -.B timeout +.B mtimeout could not interpret. .TP 129\(em250 The child process was killed by a signal: the exit status is 128 higher than the signal number. If -.B timeout +.B mtimeout had to kill the child because it took too long, then its exit status will be like this. .TP 251 The child took too long and couldn't be killed: -.B timeout +.B mtimeout gave up waiting. .TP 252 @@ -92,13 +92,13 @@ standard error. .TP 253 The -.B timeout +.B mtimeout program couldn't parse the arguments provided to it: an error message was written to standard error. .TP 254 A system call made by -.B timeout +.B mtimeout failed unexpectedly: an error message was written to standard error. .TP 255 @@ -106,7 +106,7 @@ Not used. . .SH BUGS Because -.B timeout +.B mtimeout works by running its child process in a separate process group, it interacts oddly with interactive shells. If the child process group attempts to do terminal I/O (particularly reading from a terminal) then @@ -114,7 +114,7 @@ it may be sent signals to suspend it. This may or may not make matters worse. .PP The -.B timeout +.B mtimeout program makes an effort to propagate interesting signals to its child process group. Currently, it propagates .BR SIGTSTP , @@ -128,7 +128,7 @@ of the current signals from it, but I might add some; or I might add an option to control this list. .PP If you suspend -.B timeout +.B mtimeout and its child process group, the timer continues running anyway. (I'm not quite sure whether this is the right behaviour.) .PP @@ -136,7 +136,7 @@ Nested timeouts don't work in a useful way if the outer timeout expires earlier than the inner one. Since .B SIGTERM isn't propagated (currently, at least), the inner -.B timeout +.B mtimeout is killed by the outer one, and loses control of its child process group. You could possibly work around this by sending .B SIGQUIT diff --git a/timeout.c b/mtimeout.c similarity index 100% rename from timeout.c rename to mtimeout.c -- [mdw]