From ee1cae18ac61fb59f85e01ed833404ce985dff7a Mon Sep 17 00:00:00 2001 From: Michael Gebetsroither Date: Tue, 28 Nov 2006 00:43:41 +0100 Subject: [PATCH] slimmed down timeout.c and cleanly compile it from source through Makefile --- Makefile | 12 +++++-- debian/TODO | 1 - timeout | Bin 17527 -> 0 bytes timeout.c | 106 +++++++++++++++++++++++++++++++++++++++--------------------- 4 files changed, 79 insertions(+), 40 deletions(-) delete mode 100755 timeout diff --git a/Makefile b/Makefile index 78296ab..ce2f508 100644 --- a/Makefile +++ b/Makefile @@ -2,14 +2,22 @@ install_ = "install" name = "grml-terminalserver" +#ifndef CFLAGS +CFLAGS = -Wall -O2 +#endif + etc = ${DESTDIR}/etc/grml/terminalserver usr = ${DESTDIR}/usr usrbin = $(usr)/bin usrsbin = $(usr)/sbin usrshare = $(usr)/share/$(name) +bin: timeout + +timeout: timeout.c + diet gcc $(CFLAGS) $^ -o $@ -install: +install: bin $(install_) -d -m 755 $(etc) $(install_) -m 644 config $(etc) @@ -33,4 +41,4 @@ install: $(install_) -m 755 grml-terminalserver-config $(usrsbin) clean: - true + rm -f timeout diff --git a/debian/TODO b/debian/TODO index 24d7bad..fa3f0b6 100644 --- a/debian/TODO +++ b/debian/TODO @@ -5,5 +5,4 @@ TODOs for grml-terminalserver * DON'T delete /var/lib/tftpdboot on a !grml-system * config vars to use external services (dhcp, tftp, nfs) * make pxelinux configurable (to use another pxe-boot-manager) (MAYBE) - * default dhcp range not from 0.1-254 but from 0.2-253 * build binaries (timeout, udhcpc,...) from source diff --git a/timeout b/timeout deleted file mode 100755 index e5c824195ad5a7413e02e970678f146ddd94e21f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17527 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 diff --git a/timeout.c b/timeout.c index 8cda986..136bc00 100644 --- a/timeout.c +++ b/timeout.c @@ -1,35 +1,37 @@ /*++ -/* NAME -/* timeout 1 -/* SUMMARY -/* run command with bounded time -/* SYNOPSIS -/* \fBtimeout\fR [-\fIsignal\fR] \fItime\fR \fIcommand\fR ... -/* DESCRIPTION -/* \fBtimeout\fR executes a command and imposes an elapsed time limit. -/* The command is run in a separate POSIX process group so that the -/* right thing happens with commands that spawn child processes. -/* -/* Arguments: -/* .IP \fI-signal\fR -/* Specify an optional signal to send to the controlled process. -/* By default, \fBtimeout\fR sends SIGKILL, which cannot be caught -/* or ignored. -/* .IP \fItime\fR -/* The elapsed time limit after which the command is terminated. -/* .IP \fIcommand\fR -/* The command to be executed. -/* DIAGNOSTICS -/* The command exit status is the exit status of the command -/* (status 1 in case of a usage error). -/* AUTHOR(S) -/* Wietse Venema -/* This program is part of SATAN. -/*--*/ + * NAME + * timeout 1 + * SUMMARY + * run command with bounded time + * SYNOPSIS + * \fBtimeout\fR [-\fIsignal\fR] \fItime\fR \fIcommand\fR ... + * DESCRIPTION + * \fBtimeout\fR executes a command and imposes an elapsed time limit. + * The command is run in a separate POSIX process group so that the + * right thing happens with commands that spawn child processes. + * + * Arguments: + * .IP \fI-signal\fR + * Specify an optional signal to send to the controlled process. + * By default, \fBtimeout\fR sends SIGKILL, which cannot be caught + * or ignored. + * .IP \fItime\fR + * The elapsed time limit after which the command is terminated. + * .IP \fIcommand\fR + * The command to be executed. + * DIAGNOSTICS + * The command exit status is the exit status of the command + * (status 1 in case of a usage error). + * AUTHOR(S) + * Wietse Venema + * This program is part of SATAN. + *-- + */ /* System libraries. */ #include +#include #include #include #include @@ -40,31 +42,59 @@ extern int optind; /* Application-specific. */ #define perrorexit(s) { perror(s); exit(1); } +#define WRITE(x) write(2, x, strlen(x)) static int kill_signal = SIGKILL; static char *progname; static char *commandname; +// fmt_ulong and fmt_long from libowfat {{{ +unsigned int fmt_ulong(char *dest,unsigned long i) { + register unsigned long len,tmp,len2; + /* first count the number of bytes needed */ + for (len=1, tmp=i; tmp>9; ++len) tmp/=10; + if (dest) + for (tmp=i, dest+=len, len2=len+1; --len2; tmp/=10) + *--dest = (tmp%10)+'0'; + return len; +} + +unsigned int fmt_long(char *dest,long int i) { + if (i<0) { + if (dest) *dest++='-'; + return fmt_ulong(dest,-i)+1; + } else + return fmt_ulong(dest,i); +} +// }}} + static void usage() { - fprintf(stderr, "usage: %s [-signal] time command...\n", progname); + //fprintf(stderr, "usage: %s [-signal] time command...\n", progname); + WRITE("usage: "); + WRITE(progname); + WRITE(" [-signal] time command...\n"); exit(1); } -static void terminate(sig) -int sig; +static void terminate(int sig) { signal(kill_signal, SIG_DFL); - fprintf(stderr, "Timeout: aborting command ``%s'' with signal %d\n", - commandname, kill_signal); + //fprintf(stderr, "Timeout: aborting command ``%s'' with signal %d\n", + // commandname, kill_signal); + char kill_signal_string[22]; + fmt_long(kill_signal_string, kill_signal); + WRITE("Timeout: aborting command ``"); + WRITE(commandname); + WRITE("'' with signal "); + WRITE(kill_signal_string); + WRITE("\n"); kill(0, kill_signal); } -int main(argc, argv) -int argc; -char **argv; +int main(int argc, char** argv) { - int time_to_run; + int time_to_run = 0; pid_t pid; pid_t child_pid; int status; @@ -91,7 +121,7 @@ char **argv; switch (child_pid = fork()) { case -1: /* error */ perrorexit("timeout: fork"); - case 00: /* run controlled command */ + case 0: /* run controlled command */ execvp(argv[1], argv + 1); perrorexit(argv[1]); default: /* become watchdog */ @@ -106,3 +136,5 @@ char **argv; return (pid == child_pid ? status : -1); } } + +// vim: foldmethod=maker -- 2.1.4