$Header: README,v 1.19 1993/07/16 00:34:01 forys Exp $

	`skill' is a program which sends signals to processes given
any combination of user names, ttys, commands, and pids.  `snice' is
a program which changes the priority of processes (given the same).
It's actually one program which examines argv to determine what action
is to be taken on matching processes.  It is similar to kill(1) and
renice(8), however the command line is completely order independent.
There are also verbose and interactive modes of operation.

The name `skill' stems from `SuperKILL', but if you use it under `csh',
you may discover another reason for calling it `skill' (hint "s!!").

Both programs run under a variety of Operating Systems, including:

	AT&T/DELL SysVR4
	4.2BSD, 4.3BSD, 4.4BSD
	SunOS 2, 3, 4.0-1, 5.0-1	[build/install 3/80 version separately]
	Sequent Dynix 3.0-1
	Pyramid OSx 4.0
	HP-UX 6.5, 7.0, 8.0, 9.0	[7.0: do "touch /usr/include/sys/fss.h"]
	Mach 2.6, 3.0
	NeXT OS 1.0, 2.1
	MIPS UMIPS 2.1
	DEC Ultrix 2.2, 4.1-2
	IBM AOS 4.3
	IBM AIX 3.1-2
	SGI Irix 3.3, 4.0
	Encore UMAX 4.2

Consult the Makefile for more information on what needs to be done
to make this program run under the aforementioned operating systems.
In general, given a particular OSTYPE, previous releases up to that
OSTYPE should work as well.  For example, OSTYPE "sunos-3" should
support "sunos-2" and "sunos-3", but not "sunos-40" or "sunos-41".
If you find that an OSTYPE supports a later release of an operating
system, please drop me a note so I can update the OSTYPE.

Porting this program to other operating systems can be trivial, or
seemingly impossible.  If you plan on porting skill to your machine,
the machine-dependent directory (machdep) is a good place to start
as you may find an operating system similar to what you are running.
Another good source of information is the ps(1) source, however be
sure that you do not include any proprietary code.  Also, more and
more OS vendors are providing an easy-to-use library interface to
retrieve process information from the kernel.  Finally, if none of
this is applicable to your situation, you can often find out all
you need to know by plowing through your include files, and using
the "strings" program on binaries (e.g. to find any unique kernel
variables that need to be nlist'd).

In summary, the machine-independent code expects 5 things from the
machine-dependent code:

	SigMap[]      - Mapping of signal numbers to signal names.
	NSig          - The total number of signals available.
	MdepInit(pn)  - Declares/initializes global variables (MyPid,
			MyUid, ProgName, Skill, PrioMin, PrioMax, SigPri),
			changes working directory to tty dev dir, and
			possibly raises priority of process.  This routine
			can usually be copied intact from an existing
			machine-dependent file.
	MdepAction(p) - Carries out an action (kill or renice) on a
			specific process id.  This is trivial and can
			usually be copied as well.
	GetProc()     - A routine that returns processes, one at-a-time
			in the form of a "struct ProcInfo".  This is,
			by far, where you will spend most of your time.

After you have completed/tested the above (make sure you test for
both in-core and swapped-out processes; see ps(1) for details), you
need to come up with an OSTYPE (for the Makefile).  The scheme I
chose was the catenation of the Operating System and Release, in
the form "<os>-<release>".  Then, name your machine-dependent file
"machdep/<os>-<release>.c".  Also, look at the "GuessOS" and "Config"
scripts and figure out a clever way to discern your operating system
from all the other ones.  Finally, when you feel you are finished,
please send all your changes back to me!

The latest release of skill/snice is currently available from
snake.cs.utah.edu [128.110.4.58] via anonymous ftp, in "~ftp/pub".

					Jeff Forys
					NEC Systems Laboratory, Inc.
					+1 609 734 6074
					forys@syl.nj.nec.com

===========================================================================
The list of people who have contributed to this program continues to
grow.  The following people have ported skill/snice to run on their
operating system, or have otherwise helped in making this program what
is is today.

John LoVerso <loverso@cs.buffalo.edu>
	- Asked me to make 4.2BSD talkd work between byte-mismatched
	  machines; I then wrote skill to kill the talk daemon.

Don Gworek <gworek@cs.buffalo.edu>
	- Kept telling me that skill was a useful program.

George Howlett <howlett@cs.buffalo.edu>
	- Originally designed for super-users, George explained that
	  skill could be useful to any user.  He was right.

Usenet <net.sources>
	- Skill, Version 1.9, was posted on April 16, 1986.

David Muir Sharnoff <muir@ucbvax.berkeley.edu>
	- Added `snice'.

Greg Earle <earle@Sun.COM>
	- SunOS 4.0 and 4.1 support.

Gorodecki Tom <tom@taux01.nsc.com>
	- Dynix 3.0 support.

Christos Zoulas <christos@guillemin.EE.CORNELL.EDU>
	- HP-UX 6.5 and 8.0 support.
	- AOS4.3 (ibm-rt) support.
	- Misc bug fixes.

Mike Hibler <mike@cs.utah.edu>
	- HP300/BSD support.

Ric Anderson <ric@cs.arizona.edu>
	- Ultrix 4 support.
	- NeXT OS 2.x support.
	- System-V support.
	- Auto-configuration (GuessOS, Configure).
	- Misc bug fixes.

Jay Lepreau <lepreau@cs.utah.edu>
	- Gave me 4 days to polish up Version 3.

Jeff Law <law@cs.utah.edu>
	- Permits snake.cs.utah.edu to be my distribution machine.
