From 16f471c5eb28abe7f214b5c3c4e1434b76da09ef Mon Sep 17 00:00:00 2001 From: tribby Date: Mon, 9 Feb 1998 00:19:25 +0000 Subject: [PATCH] Original checkin of kill source code from Dave Tribby --- bin/kill/Makefile | 10 ++ bin/kill/kill.1 | 146 +++++++++++++++++++++++++++ bin/kill/kill.c | 241 +++++++++++++++++++++++++++++++++++++++++++++ bin/kill/kill.desc | 10 ++ bin/kill/kill.rez | 30 ++++++ 5 files changed, 437 insertions(+) create mode 100644 bin/kill/Makefile create mode 100644 bin/kill/kill.1 create mode 100644 bin/kill/kill.c create mode 100644 bin/kill/kill.desc create mode 100644 bin/kill/kill.rez diff --git a/bin/kill/Makefile b/bin/kill/Makefile new file mode 100644 index 0000000..c956513 --- /dev/null +++ b/bin/kill/Makefile @@ -0,0 +1,10 @@ +# +# This makefile is intended for use with dmake(1) on Apple IIGS +# $Id: Makefile,v 1.1 1998/02/09 00:19:17 tribby Exp $ +# +# Created by Dave Tribby, January 1998 + +PROG= kill + +CFLAGS = -v +.INCLUDE : /src/gno/prog.mk diff --git a/bin/kill/kill.1 b/bin/kill/kill.1 new file mode 100644 index 0000000..ff35fc6 --- /dev/null +++ b/bin/kill/kill.1 @@ -0,0 +1,146 @@ +.\" Copyright (c) 1980, 1990, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" the Institute of Electrical and Electronics Engineers, Inc. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)kill.1 8.2 (Berkeley) 4/28/95 +.\" $Id: kill.1,v 1.1 1998/02/09 00:19:20 tribby Exp $ +.\" +.TH KILL 1 "January 1998" "GNO" "Commands and Applications" +.SH NAME +.BR kill +\- terminate or signal a process +.SH SYNOPSIS +.BR kill +.RB [ -s +.IR signal_name ] +.IR pid +\&... +.PP +.BR "kill -l" +.RI [ exit_status ] +.PP +.BR kill +.BI - signal_name +.IR pid +\&... +.PP +.BR kill +.BI - signal_number +.IR pid +\&... +.SH DESCRIPTION +The +.BR kill +utility sends a signal to the processes specified by the +.IR pid +operand(s). +.PP +The options are as follows: +.IP \fB-s\fR \fIsignal_name\fR +A symbolic signal name specifying the signal to be sent instead of the +default +.BR TERM . +.IP \fB-l\fR [\fIexit_status\fR] +If no operand is given, list the signal names; otherwise, write +the signal name corresponding to +.IR exit_status . +.IP \fB-\fIsignal_name\fR +A symbolic signal name specifying the signal to be sent instead of the +default +.BR TERM . +.IP \fB-\fIsignal_number\fR +A non-negative decimal integer, specifying the signal to be sent instead +of the default +.BR TERM . +.PP +See the +.BR kill (2) +man page for information on +.IR pid s +that have special meanings. +.PP +Some of the more commonly used signals: +.RS +.BR 1 +HUP (hang up) +.br +.BR 2 +INT (interrupt) +.br +.BR 3 +QUIT (quit) +.br +.BR 6 +ABRT (abort) +.br +.BR 9 +KILL (non-catchable, non-ignorable kill) +.br +.BR 14 +ALRM (alarm clock) +.br +.BR 15 +TERM (software termination signal) +.br +.BR 30 +USR1 (user defined signal 1) +.br +.BR 31 +USR2 (user defined signal 2) +.RE +.PP +.BR kill +is a built-in to +.BR gsh (1); +it allows job specifiers of the form ``%...'' as arguments +so process id's are not as often used as +.BR kill +arguments. +.SH SEE ALSO +.BR gsh (1), +.BR ps (1), +.BR kill (2), +.BR signal (2) +.SH STANDARDS +The +.BR kill +function is expected to be +POSIX-2 +compatible. +.SH VERSION +This manual page documents +.BR kill +version 1.0. +.SH ATTRIBUTIONS +This command was ported from FreeBSD source code +for distribution with GNO/ME 2.0.6. diff --git a/bin/kill/kill.c b/bin/kill/kill.c new file mode 100644 index 0000000..1316159 --- /dev/null +++ b/bin/kill/kill.c @@ -0,0 +1,241 @@ +/* + * Copyright (c) 1988, 1993, 1994 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: kill.c,v 1.1 1998/02/09 00:19:22 tribby Exp $ + */ + +/* + * Modified for GNO (Apple IIGS) by Dave Tribby, August 1997 + * + * Constructs unacceptable to compiler are replaced using #ifndef __ORCAC__ + * + * Changes not related to compiler are replaced using #ifndef __GNO__ + * + * Added prototyped headers, surrounded by #ifndef __STDC__ + */ + + +#ifndef __GNO__ /* GNO doesn't use what strings */ +#ifndef lint +static char const copyright[] = +"@(#) Copyright (c) 1988, 1993, 1994\n\ + The Regents of the University of California. All rights reserved.\n"; +#endif /* not lint */ + +#ifndef lint +static char const sccsid[] = "@(#)kill.c 8.4 (Berkeley) 4/28/95"; +#endif /* not lint */ +#endif + +#include +#include +#include +#include +#include +#include +#include + +void nosig __P((char *)); +void printsignals __P((FILE *)); +int signame_to_signum __P((char *)); +void usage __P((void)); + + +/* Interface to check on how much stack space a C program uses. */ +#if defined(__GNO__) && defined(__STACK_CHECK__) +#ifndef _GNO_GNO_H_ +#include +#endif +static void report_stack(void) +{ + fprintf(stderr,"\n ==> %d stack bytes used <== \n", _endStackCheck()); +} +#endif + + +int +#ifndef __STDC__ +main(argc, argv) + int argc; + char *argv[]; +#else +main(int argc, + char *argv[]) +#endif +{ + int errors, numsig, pid; + char *ep; + +#if defined(__GNO__) && defined(__STACK_CHECK__) + _beginStackCheck(); + atexit(report_stack); +#endif + + if (argc < 2) + usage(); + + numsig = SIGTERM; + + argc--, argv++; + if (!strcmp(*argv, "-l")) { + argc--, argv++; + if (argc > 1) + usage(); + if (argc == 1) { + if (!isdigit(**argv)) + usage(); + numsig = strtol(*argv, &ep, 10); + if (!**argv || *ep) + errx(1, "illegal signal number: %s", *argv); + if (numsig >= 128) + numsig -= 128; + if (numsig <= 0 || numsig >= NSIG) + nosig(*argv); + printf("%s\n", sys_signame[numsig]); + exit(0); + } + printsignals(stdout); + exit(0); + } + + if (!strcmp(*argv, "-s")) { + argc--, argv++; + if (argc < 1) { + warnx("option requires an argument -- s"); + usage(); + } + if (strcmp(*argv, "0")) { + if ((numsig = signame_to_signum(*argv)) < 0) + nosig(*argv); + } else + numsig = 0; + argc--, argv++; + } else if (**argv == '-') { + ++*argv; + if (isalpha(**argv)) { + if ((numsig = signame_to_signum(*argv)) < 0) + nosig(*argv); + } else if (isdigit(**argv)) { + numsig = strtol(*argv, &ep, 10); + if (!**argv || *ep) + errx(1, "illegal signal number: %s", *argv); + if (numsig < 0 || numsig >= NSIG) + nosig(*argv); + } else + nosig(*argv); + argc--, argv++; + } + + if (argc == 0) + usage(); + + for (errors = 0; argc; argc--, argv++) { + pid = strtol(*argv, &ep, 10); + if (!**argv || *ep) { + warnx("illegal process id: %s", *argv); + errors = 1; + } else if (kill(pid, numsig) == -1) { + warn("%s", *argv); + errors = 1; + } + } + + exit(errors); +} + +int +#ifndef __STDC__ +signame_to_signum(sig) + char *sig; +#else +signame_to_signum(char *sig) +#endif +{ + int n; + + if (!strncasecmp(sig, "sig", 3)) + sig += 3; + for (n = 1; n < NSIG; n++) { + if (!strcasecmp(sys_signame[n], sig)) + return (n); + } + return (-1); +} + +void +#ifndef __STDC__ +nosig(name) + char *name; +#else +nosig(char *name) +#endif +{ + + warnx("unknown signal %s; valid signals:", name); + printsignals(stderr); + exit(1); +} + +void +#ifndef __STDC__ +printsignals(fp) + FILE *fp; +#else +printsignals(FILE *fp) +#endif +{ + int n; + + for (n = 1; n < NSIG; n++) { + (void)fprintf(fp, "%s", sys_signame[n]); + if (n == (NSIG / 2) || n == (NSIG - 1)) + (void)fprintf(fp, "\n"); + else + (void)fprintf(fp, " "); + } +} + +void +#ifndef __STDC__ +usage() +#else +usage(void) +#endif +{ + + (void)fprintf(stderr, "%s\n%s\n%s\n%s\n", + "usage: kill [-s signal_name] pid ...", + " kill -l [exit_status]", + " kill -signal_name pid ...", + " kill -signal_number pid ..."); + exit(1); +} diff --git a/bin/kill/kill.desc b/bin/kill/kill.desc new file mode 100644 index 0000000..6d821c4 --- /dev/null +++ b/bin/kill/kill.desc @@ -0,0 +1,10 @@ +Name: kill +Version: 1.0 (January 1998) +Shell: GNO +Author: Dave Tribby (from FreeBSD code) +Contact: tribby@cup.hp.com +Where: /bin +FTP: ground.isca.uiowa.edu apple2.caltech.edu trenco.myrias.com + + Send signal to (or kill) a process + diff --git a/bin/kill/kill.rez b/bin/kill/kill.rez new file mode 100644 index 0000000..843dc29 --- /dev/null +++ b/bin/kill/kill.rez @@ -0,0 +1,30 @@ +/* + * Resources for version and comment + * $Id: kill.rez,v 1.1 1998/02/09 00:19:25 tribby Exp $ + */ +#define PROG "kill" +#define DESC "Send signal to (or kill) a process." + +#include "Types.rez" + +/* + * Version + */ +resource rVersion (1, purgeable3) { + { 1, 0, 0, /* Version 1.0.0 */ + release, /* development|alpha|beta|final|release */ + 0 }, /* non-final release number */ + verUS, /* Country */ + PROG, /* Program name */ + DESC " Released with GNO/ME." +}; + + +/* + * Comment + */ +resource rComment (1, purgeable3) { + PROG " v1.0 (January 1998)\n" + "GNO utility: " DESC "\n" + "Ported from FreeBSD code by Dave Tribby." +};