Original checkin of kill source code from Dave Tribby

This commit is contained in:
tribby 1998-02-09 00:19:25 +00:00
parent 888214a8bd
commit 16f471c5eb
5 changed files with 437 additions and 0 deletions

10
bin/kill/Makefile Normal file
View File

@ -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

146
bin/kill/kill.1 Normal file
View File

@ -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.

241
bin/kill/kill.c Normal file
View File

@ -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 <ctype.h>
#include <err.h>
#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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 <gno/gno.h>
#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);
}

10
bin/kill/kill.desc Normal file
View File

@ -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

30
bin/kill/kill.rez Normal file
View File

@ -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."
};