Commit Graph

216 Commits

Author SHA1 Message Date
Joerg Wunsch
3d434cfb15 Fix my breakage of the $0 handling during $ENV processing.
Since the broken version went into 2.1, this fix should, too.
1995-10-09 17:56:32 +00:00
Bruce Evans
27e79e1d84 Handle trailing slashes in source filenames correctly. E.g., rewrite
`mv foo/ ../..' to `mv foo/ ../../foo/', not to `mv foo/ ../../'.  The
latter caused a panic.  Before the trailing slash changes in the kernel,
the trailing slashes caused the rename() for this mv to fail earlier, so
there was no panic in 2.0.

Fixes part of PR 760.
1995-10-07 10:42:48 +00:00
Mark Murray
2f67cae6ef Correctly build the secure ed(1) only if secure/ exists.
Pointed out by:	bde
1995-10-03 15:44:50 +00:00
Bruce Evans
eca0f5097e Preserve sticky bit for cp -pR'. It was already preserved for cp -R'.
This also fixes loss of the sticky bit for `mv' across file systems.
1995-10-03 12:55:01 +00:00
Bruce Evans
001aff9ffc Fix exit status. `cat no-such-file >/dev/null' exited with status 0.
This has been broken since cat's own err() function was sloppily
replaced by the library functions warn() and err().
1995-10-03 12:46:37 +00:00
Joerg Wunsch
6aee553317 Make the mkinit internal command issue an #undef for each #define, to
avoid "duplicate definition" warnings.
1995-10-01 15:13:31 +00:00
Joerg Wunsch
6d753bdd67 Posixize:
sh  -c [-aCefinuvx] command_string [ command_name [argument ...]  ]        1

 4.56.3  Options

    -c          Read commands from the command_string operand.  Set the
                value of special parameter 0 (see 3.5.2) from the value of
                the command_name operand and the positional parameters
                ($1, $2, etc.) in sequence from the remaining argument
                operands.

Pointed out by: Kaleb Keithly (kaleb@x.org)
1995-10-01 15:11:42 +00:00
Mark Murray
6cef1ad675 Define CRYPTOBJDIR if secure is being built 1995-10-01 14:55:06 +00:00
Mark Murray
670e751a63 ed/Makefile is able to 'decide' for itself whether to build secure or
unceumbered ed. Remove the superfluous .if (...) / .endif
1995-10-01 14:24:01 +00:00
Mark Murray
6eb5c24ff8 Use the same make technique as passwd and xntpd for the secure ed(1). This
will allow the secure/bin/ed directory to be cleaned out and the bin/Makefile
to be cleaned up.
1995-10-01 14:17:29 +00:00
Andrey A. Chernov
9c52d82f1e Build secure ed if available and allowed 1995-09-29 19:31:55 +00:00
Peter Wemm
c55931c759 Correct the alignment of the tty column, which was affected by my change to
allow more than two tty characters.

David Greenman pointed out that when a process that had been revoked from
it's controlling tty, the "-" sign was detached from any two-character
names.
1995-09-26 17:48:59 +00:00
Mike Pritchard
5807eef186 Uncomment out references to FIFOs for the -F and -l options.
Also mention sockets in the text for -F.

Partially obtained from the NetBSD commit mail list.
1995-09-26 08:48:09 +00:00
Bruce Evans
beff52884f Fix relocation of job table.
while { sleep 1 & wait; } do echo 1; done

corrupted the job table every 4th iteration.
1995-09-21 13:24:20 +00:00
David Greenman
a9e0f8b2e0 Don't dereference a NULL pointer in the case of a null pipe.
e.g.:
ls |> foo.out

sh now behaves the same as it does under SunOS 4.x for this case.
1995-09-20 08:30:56 +00:00
Paul Traina
4ed5be00c5 If mail is received with no from address, invoke sendmail with
/usr/sbin/sendmail -f <> dest
rather than
	/usr/sbin/sendmail -f dest.

Submitted by:  Michael Butler <imb@scgt.oz.au>
Obtained from: Eric Allman <eric@cs.berkeley.edu>
1995-09-16 18:52:51 +00:00
Mark Murray
776955d918 Updating /usr/include/kerberosIV/des.h so eBones will build breaks
rcp and rlogin.
(patch supplied)

Submitted by:  John Capo <jc@irbs.com>
1995-09-10 14:59:51 +00:00
Peter Wemm
6926792029 Increase the tty column width from 2 to 3 characters.
This gives us more room to breath with tty names, especially with drivers
that support large numbers of ports..  eg: specialix and digiboard.

This does not actually change the current tty names, it just allows room
for reporting more characters if the drivers use them.
1995-09-04 01:22:54 +00:00
Jordan K. Hubbard
6cef43a78b Well, it would appear that the "ayes" have it (though by a slim margin).
Apply my \c changes to echo.  It should also be noted that this is:
A) going into 2.2, not 2.1
B) a functional no-op unless you actually use it!
1995-08-31 17:25:55 +00:00
Joerg Wunsch
248ffae537 Sigh. This will become a never ending story. :-(
When comparing my recent parser change against the ash in 1.1.5.1, i
found that a couple of other problems in the same area has been fixed
there, but not in 2.2.  Semicolons and EOF do also delimit words...
1995-08-28 19:24:35 +00:00
David Greenman
92f6a19170 Correct the default format info to indicate "%+". 1995-08-28 10:38:01 +00:00
Joerg Wunsch
47a052e00f Make the shell handle a null command in a &&/|| sequence correctly.
The && and || tokens do also terminate a command, not only the
newline.

While i was at it, disabled trace code by default, it served no good
purpose since it required the use of a debugger anyway to be turned
on.  Instead, placed a hint in the Makefile on how to turn it on.

This makes the shell ~ 10 % faster and ~ 4 KB smaller. :)

Pointed out by:  jan@physik.TU-Berlin.DE (Jan Riedinger)
1995-08-27 20:26:44 +00:00
Paul Traina
e3149abdf5 Clean up compilation warnings. 1995-08-23 05:31:06 +00:00
Nate Williams
bdc95502ca Fix possible FS corruption caused by extra parameter to pax.
oo
Turns out, it's pretty important if you use PAX for backup.  In the man
page for PAX, there is an error (OK, we could call it a "potentially
catastrophic incompleteness").  It reads:

>  The command:
>
>      pax -r -v -f filename
>
>  gives the verbose table of contents for an archive stored in filename.

Yup, it does do that.  With a side effect: it also _replaces_ all the
files that come in from the archive.  As is my custom, I did my
backup-validation real soon after the backup was written.  Precisely
because I've seen the same sort of thing happen on other systems.  So all
that file-restoring didn't do a lot of damage.  Probably helped my
fragmentation somewhat (aha, an online defragger?) It did confuse one
hapless user, who lost an email message he _knew_ he hadn't deleted.
Apparently the system restored the file as of just before that critical
message came in.

The correct entry should read:

>  The command:
>
>      pax -v -f filename
>




>  gives the verbose table of contents for an archive stored in filename.


Submitted by:	John Beckett <jbeckett@southern.edu> via the BSDI mailing list
1995-08-16 23:12:25 +00:00
Joerg Wunsch
f300f7a0f9 The command to `move' across file system boundaries is actually
cp -PRp source_file destination

Closes PR # bin/689: mv(1) manpage

Submitted by:	wosch@cs.tu-berlin.de (Wolfram Schneider)
1995-08-15 19:44:39 +00:00
Joerg Wunsch
72348d41ba sh(1) incorrectly ignored an EOF condition when looking for the
closing backquote in a `foo` substitution.

Discovered by: Martin Welk <mw@theatre.pandora.sax.de>
1995-08-11 08:18:39 +00:00
Andrey A. Chernov
cc684979ea Fix csh to determine event number properly, i.e. stop by ^*-% too.
This fix match with what manpage said and other systems csh's do.
Submitted by: Bill Fenner <fenner@parc.xerox.com>
1995-08-10 05:13:42 +00:00
Andrey A. Chernov
fc4a9baf50 Change ctime to strftime %c to use national date/time representation 1995-08-08 00:03:04 +00:00
Garrett Wollman
656dcd4316 Delete bogus referneces to timezone code internal header file `tzfile.h',
which is no longer bogusly installed in /usr/include.
1995-08-07 19:17:46 +00:00
Joerg Wunsch
78e1fb6090 Fix /bin/sh's broken handling of the builtin getopts(1). The options
``-ffoo'' and ``-f foo'' have been treated differently.

This has been in violation of Posix.2 (that deprecates -ffoo, but
doesn't disallow it).
1995-08-06 19:35:33 +00:00
Andrey A. Chernov
76f9ae3bfe Use %+ to print data using LC_TIME 1995-08-05 23:08:17 +00:00
Joerg Wunsch
2a353a9fb4 expr(1) didn't comply to Posix.2 and its own man page: any
comparisions have been made as string comparisions, even in cases
where both operands clearly qualified as integers.

The fix is to make the parser properly analyzing whether an operand is
a valid integer or not.
1995-08-04 17:08:07 +00:00
Rodney W. Grimes
65d3266d56 Set NOSHARED=true, having this binary static makes it much easier to
fix /usr/lib/*.so problems.

Submitted by:	davidg
1995-07-24 01:44:17 +00:00
Andrey A. Chernov
e985fb8ec7 Move first PATH initialization after sensing for interactive,
first relative path warning was disabled in old case
1995-07-07 23:14:36 +00:00
Andrey A. Chernov
f70e927c09 Do the same check for interactive shell (PATH warning)
like in csh.c
1995-07-07 23:13:11 +00:00
Andrey A. Chernov
e4cff55ea3 Produce importpath warning only for true interactive shells,
close PR 598
1995-07-07 22:45:26 +00:00
Bruce Evans
a7a41dba35 Improve the recently changed and an old error message: don't report probe
errors.
1995-07-04 08:16:32 +00:00
Joerg Wunsch
37712f2a7b stty fails with a non-obvious error message if it's run on a non-tty
stream, such as a rsh or vi pipeline.

The error message is:
stty: TIOCGETD: Operation not supported

It's immediately obvious to the knowledgable hacker type, but not
exactly comforting to the user who's not native to unix.  It's
especially confusing if there's a stty command in their .cshrc and
it's showing up on rsh output.

(Fixes PR #bin/573)

Submitted by:	peter@haywire.dialix.com (Peter Wemm)
1995-07-02 08:54:27 +00:00
Bruce Evans
d1e00e9390 Improve the handling of large minor numbers:
cpio/copyout.c:
Don't output a file if the major, minor or totality of its rdev would be
truncated.  Print a message about the skipped files to stderr but don't
report the error in the exit status.  cpio's abysmal error handling doesn't
allow continuing after an error, and the rdev checks had to be misplaced
to avoid the problem of returning an error code from routines that return
void.

pax/pax.h:
Use the system macros for major(), minor() and makedev().

pax already checks _all_ output conversions for overflow.  This has the
undesirable effect that failure to convert relatively useless fields
such as st_dev for regular files causes files not to be output.  pax
doesn't report exactly which fields couldn't be converted.

tar/create.c:
Don't output a file if the major or minor its rdev would be truncated.
Print a message about the skipped files to stderr and report the error
in the exit status.

tar/tar.c:
For not immediately fatal errors, exit with status 1, not the error count
(mod 256).

All:
Minor numbers are limited to 21 bits in pax's ustar format and to 18
bits in archives created by gnu tar (gnu tar wastes 3 bits for padding).
pax's and cpio's ustar format is incompatible with gnu tar's ustar
format for other reasons (see cpio/README).
1995-06-26 06:24:48 +00:00
Andrey A. Chernov
e77fe975bb Additionly print strerror(errno), when getwd() fails to start
in initial directory.
Obtained from: idea from NetBSD
1995-06-18 14:34:48 +00:00
Andrey A. Chernov
32d0c07493 Fix error:
which /bin/ls
.//bin/ls
Obtained from: NetBSD
1995-06-18 14:20:16 +00:00
Andrey A. Chernov
f3e38b1c4c When filec active, TCSANOW was used in any case instead of
sensing TCSADRAIN/TCSAFLUSH
Obtained from: NetBSD
1995-06-18 14:08:44 +00:00
Bruce Evans
6a834fc3f1 Don't unlink the target file if the copy failed. This behaviour isn't
documented and is incompatible with gnu cp.  It has very few good effects
(it recovers some disk space) and many bad ones:
- special files are unlinked after certain errors.
- the data may not be recoverable if the source is a special file or fifo.
- unlinking destroys the target attributes as well as the target data.
- unlinking doesn't actually remove the target data if the target is multiply
  linked.
1995-06-14 05:41:27 +00:00
Rodney W. Grimes
7799f52a32 Remove trailing whitespace. 1995-05-30 06:41:30 +00:00
Rodney W. Grimes
2162b2d226 Remove trailing whitespace.
Reviewed by:	phk
1995-05-30 00:07:29 +00:00
Andrey A. Chernov
47f4474b4e Describe -m option 1995-05-06 13:52:29 +00:00
Adam David
f434d1dfe1 typo there --> their 1995-05-05 16:49:15 +00:00
David Greenman
3fb0993969 From "Philippe Charnier" <charnier@lirmm.fr>:
There is a bug in sh: the built in command "fc -l" generates
a core dump (*NULL in not_fcnumber).

According to the sh manual page (fc  -l [-nr] [first [last]]), fc -l
is a correct sequence (in that case, values are defaulted to -16 and -1)
but fails when first is not given.
1995-05-05 06:34:13 +00:00
Bruce Evans
2bf5814ab5 Support nonstandard (not yet all supported) flow control options. `ctsflow'
and `rtsflow' are the components of `crtscts'.  `dtrflow' and `dsrflow' are
new and not yet supported.  `dtrflow' may be useful for Cyclades serial
careds, which have h/w support for it and no h/w support for `rtsflow'.

print.c:
Report NTTYDISC in case the line is in this obsolescent state.
1995-04-29 15:17:17 +00:00
Bruce Evans
d54024a159 Fix stty' on the output of stty -g'. The changes for the gfmt1 option
weren't TIOCSETD'd  unless another option changed something.
1995-04-29 15:00:34 +00:00
Andrey A. Chernov
0b51c95db2 Fix bugs:
cchars2 not used
can't set or report MIN or TIME == 255
TIOCSETD on wrong fd
PPPDISC is not reported
1995-04-28 19:29:30 +00:00
David Greenman
29e1dc7556 Install with default BINOWN (as it once used to be). 1995-04-15 03:31:19 +00:00
David Greenman
567f2ec907 Install setgid kmem rather than setuid root. The problem with procfs that
was breaking this before has been fixed.
1995-04-15 03:25:52 +00:00
Andrey A. Chernov
6b4198130e Allow root to delete uchg/uappnd files 1995-04-13 13:35:09 +00:00
Joerg Wunsch
29c52ddd49 date(1) didn't emit a final newline if the format had been specified
with `+'.  This breaks tradition and violates Posix 1003.2.

Discoverd by: luigi@labinfo.iet.unipi.it (Luigi Rizzo)
1995-04-03 20:08:33 +00:00
Bruce Evans
439b2b1e9c Add braces to fix wrong if-if-else-if nesting that broke `cp -pR' for
fifos.
1995-04-02 00:49:16 +00:00
Poul-Henning Kamp
295a3379fe Make build work, even if there is no obj subdir. 1995-03-30 19:45:20 +00:00
Poul-Henning Kamp
90b0ec316f Having BLOCKSIZE=K and using "-k" option ls would use 2K block size... 1995-03-23 19:05:00 +00:00
Joerg Wunsch
0fd510b71a You will find enclosed some changes to make gcc -Wall more happy in
/usr/src/bin. Note that some patches are still needed in that directory.

I (Joerg) finished most of Philippe's cleanup.  /bin/sh will still
need *allot* of work, however.

Submitted by:	charnier@lirmm.fr (Philippe Charnier)
1995-03-19 13:29:28 +00:00
David Greenman
632f53dd4f Fix previous fix that removes an unnecessary space; the output is now
just like it was in 1.1.5.
1995-03-09 20:40:17 +00:00
Jordan K. Hubbard
8d0ab00912 Allow 0 as a signal number to match the man page.
Noticed by:	Mike Murphy <mrm@Sceard.COM>
1995-03-05 21:52:41 +00:00
Joerg Wunsch
2723e3d4c6 Use `interactive' (foreground) delivery by default. The old behaviour
of queuing mails only can be restored by uncommenting a CFLAGS+= line
in the makefile, so sites that _really_ need this (perhaps some huge
mail hubs) can still have it.  The majority of FreeBSD boxes is better
served with an immediate delivery (and last time i've been asking on
the list, nobody complained).
1995-03-05 08:27:14 +00:00
Guido van Rooij
528ad82b4c Fix the deletion of trailing newlines with backquote expansion.
Reviewed by:
Submitted by:
Obtained from:
1995-03-01 13:04:15 +00:00
Jordan K. Hubbard
b5886db230 1000000 usec -> 1 sec 0 usec; fix.
Submitted by:	"Philippe Charnier" <charnier@lirmm.fr>
1995-02-16 09:17:27 +00:00
Bruce Evans
50c1f8972c Include <limits.h> to get the definition of INT_MAX - don't depend on
namespace pollution in <time.h>.
1995-02-03 22:21:09 +00:00
David Greenman
a829865d8e Fix bogus format string; fixes problem reported by Wolfram Schneider. 1995-01-25 07:31:01 +00:00
Andrey A. Chernov
c5191e580d More koshering [ul]case fix, don't use pre-initialized tables at all,
treat 0xFF as valid character.
1995-01-17 23:04:29 +00:00
Andrey A. Chernov
dde07463cf Make conv=[lu]case works with localized ctype (8bit) 1995-01-17 22:55:59 +00:00
Andreas Schulz
ed3cec3fcb Submitted by: David Muir Sharnoff
domainame has referenced getdomainname(2) instead of getdomainname(3).
bug report docs/137.
1995-01-14 17:02:33 +00:00
Andrew Moore
c723083073 fixed `s' to set dot to last line affected, not the last line in
a substitution range.
1995-01-14 11:47:16 +00:00
Paul Richards
1e95454e10 What I think is a more correct fix for the handling of backslashes
inside backquotes. Reversed my previous fix.
1995-01-11 07:07:00 +00:00
Paul Richards
f5c4a27846 Fix a bug with handling backslash escapes inside some quotes.
Should solve our problems with edit-pr.
1995-01-09 20:00:54 +00:00
Bruce Evans
7658fd20d7 Don't strip off the last slash in the pathname "/". cp used to
stat the pathname "" in order to decide that the pathname "/" is
a directory.  This caused `cp kernel /' to fail if the kernel has
the POSIX behaviour of not allowing the pathname "" to be an alias
for ".".  It presumably also caused `cp /etc/motd /' to fail in
the unlikely event that "." is not stat'able.

Be more careful about concatenating pathnames: don't check that
the pathname fits until prefixes have been discarded (the check
was too strict).  Print the final pathname in error messages.
Terminate the target directory name properly for error messages.
Don't add a slash between components if there is already a slash.
1994-12-30 13:12:12 +00:00
Bruce Evans
62a1ce7ac9 Document the arch flag. It has always worked in 2.0.
Document aliases for the flags.

The formatting of the section describing the flags is poor.
1994-12-27 16:49:08 +00:00
Bruce Evans
61233bdc2e Obtained from: partly from 1.1.5
Convert "" to "." for "cd" and "cd ''".  chdir("") is required to fail
on POSIX systems.
1994-12-26 13:02:05 +00:00
Bruce Evans
abdf111953 Obtained from: partly from 386BSD-0.1.2.4
Fix several bugs involving the obsolescent -d and -t options:
-d 0 and -t 0 were ignored
-t -600 was a usage error
-d 'atoi is not suitable for parsing args' and -t duh were not usage errors

Change some error messages to say which call to settimeofday failed.

Restore casts of NULL in function calls.

Finish conversion to using err() instead of perror().
1994-12-26 12:59:28 +00:00
Joerg Wunsch
34994fcd8e Make ls recognize the COLUMNS environmental variable, even
in cases where it does not run on a terminal.  This is important
e.g. for commands like

	env COLUMNS=132 ls -CR | lpr -Psome-wide-printer
1994-12-18 19:00:01 +00:00
Jordan K. Hubbard
ffdd6a7267 src/bin/ed will never build DES encumbered ed again. That is the job
for secure/bin/ed ...
1994-12-18 15:15:10 +00:00
Bruce Evans
9195f40982 Use lstat() instead of stat() for checking if the final source file exists,
so that `ln -fs' works when the source is a symlink pointing to a non-
existent file.
1994-12-06 18:50:44 +00:00
David Greenman
42f9504181 Re-apply an old patchkit days fix of mine for mempages:
* PATCHES MAGIC                LEVEL   PATCH THAT GOT US HERE
 * --------------------         -----   ----------------------
 * CURRENT PATCH LEVEL:         1       00051
 * --------------------         -----   ----------------------
 *
 * 14 Aug 92    David Greenman          Fixed NEWVM mempages calculation
1994-11-24 13:13:55 +00:00
Garrett Wollman
18f3b9a144 Add DISTRIBUTION=krb for Kerberos case. 1994-11-20 23:18:15 +00:00
Andreas Schulz
fa49dc9cf0 Fix an error to prevent some core dumps from ps.
You can get ps easily to core dump, if you are running a "make depend"
on a kernel in one window and a "ps -auxww" in another. The ww will
try to give you the full argument list of the command that can
now be 64Kb large, but ps expected only 4Kb large arg arrays and
doesn't check for overflows.
1994-11-10 23:25:12 +00:00
Paul Traina
a0334cef15 Add end of line check so mkinit doesn't produce garbage if you have a
MKINIT line that doesn't have a comment on it (we have at least two).

This mkinit program was written by someone who obviously doesn't believe
in defensive programming. :-(  There's a LOT of work that needs to be done
on this thing. :-( :-( :-(
1994-11-06 06:27:04 +00:00
Jordan K. Hubbard
beeac5cded Get this braindead, mongoloid shell look in /stand for pwd if it can't
find it in /bin.  This is something of a kludge, I know, but consider
my limited alternatives:  I can't make this an execvp() without making
people scream that I introduced a failure point or slowed down pwd,
and I can't make it an optional macro since crunch doesn't let you pass
arbitrary command-line args to the build of one of its crunch-ees.
This is the simplest, if not the nicest looking, solution I could come up
with.
1994-11-06 01:29:26 +00:00
Andrey A. Chernov
5b515dcb38 Fix group permissions check for group list size > 1
Pointed by Bruce
1994-11-05 20:48:06 +00:00
Andrey A. Chernov
20662469d5 Fix root -w case according to manpage (-x & -r cases already accords)
Pointed by Bruce.
1994-11-05 20:24:49 +00:00
Andrey A. Chernov
01bb3d8e18 Cosmetique, missing tab/spaces after patch 1994-11-05 17:31:23 +00:00
Andrey A. Chernov
ea8bd6e348 More complex implementation of previos superuser fix
because rw and x bit treats differently infact
1994-11-05 17:28:03 +00:00
Andrey A. Chernov
3b0beab69c test produce wrong results for superuser, i.e. tells
that file is unreadable when it is readable infact.
1994-11-05 17:07:14 +00:00
David Greenman
efaf4c8649 Nuked #ifdef __386BSD__ since this is not appropriate and no longer defined
in our 2.6.1 gcc port.
1994-11-03 21:46:55 +00:00
Poul-Henning Kamp
e615020eae Don't check existence of -lcrypt to decide if DES is employed,
instead check that "NOCRYPT" isn't defined.
1994-10-29 10:13:34 +00:00
David Greenman
0ec663d53a Use kvm_uread instead of kvm_read to access the upages. 1994-10-18 04:27:46 +00:00
Andrey A. Chernov
c31c20bb26 Back out ctype fix, unneded with new ctype 1994-10-09 15:25:23 +00:00
Andrey A. Chernov
efc18e2ca9 Skip 'cua' 3 chars like 'tty' 3 chars 1994-10-02 14:11:32 +00:00
David Greenman
8b6f5f5f9f On second thought...back out previous commit. 1994-10-02 08:33:31 +00:00
David Greenman
793ced0e91 Include rtprio.h 1994-10-02 08:19:13 +00:00
Andrey A. Chernov
c7eb1baf5d libcompat removed 1994-10-02 01:36:03 +00:00
Geoff Rehmet
c368d11dd2 First level of changes for bringing in eBones (kerberos).
- Get rid of inverse logic (NOKERBEROS and NOEBONES) in src/makefile,
and replace with MAKE_KERBEROS and MAKE_EBONES.  (Far fewer contortions,
and both default to off.)  IF YOU WANT KERBEROS, YOU HAVE TO EXPLICITLY
DEFINE ONE OF THESE.
- Make Makefiles kerberos-aware.
1994-09-29 13:06:54 +00:00
Garrett Wollman
634b753d7d Actually implement this correctly. 1994-09-26 02:14:27 +00:00
David Greenman
89730b290a Added $Id$ 1994-09-24 02:59:15 +00:00