Commit Graph

1040 Commits

Author SHA1 Message Date
Peter da Silva
dc1f820ee5 Added bounds checking to the example after chasing down someone's
broken code where they'd copied the example basically verbatim and
blew an array. (engage brain before typing 'make')
1997-07-26 00:47:06 +00:00
Bruce Evans
d437803036 Add to CLEANFILES instead of setting it absolutely. Cleaning of *.S and
tags was broken.
1997-07-21 16:02:09 +00:00
Peter Wemm
925d069aa8 Make sleep() and usleep() "eat" any stray SIGALRM signals during the
lifetime of the call, just like the old implementation did.  Previously,
we were only eating them if the application did not call sleep()/usleep()
with SIGALRM masked.

Submitted by:	ache
1997-07-18 09:48:37 +00:00
Poul-Henning Kamp
e53211ce4d realpath() should break on looped symlinks.
PR:		3911
Reviewed by:	phk
Submitted by:	Shigio Yamaguchi <shigio@wafu.netgate.net>
1997-07-16 11:25:48 +00:00
Peter Wemm
65b3003d2d kill the undead 1997-07-13 14:26:00 +00:00
Bruce Evans
f3acd8dc3c Fixed quoting of backslash. 1997-07-13 07:28:06 +00:00
Peter Wemm
dd1d7d1fa0 Add a quick description of sysctlbyname() and link sysctl.3 to
sysctlbyname.3
1997-07-12 11:16:18 +00:00
Peter Wemm
16373facf6 Have sysctlbyname() take a const first arg (the ascii string) 1997-07-12 11:14:30 +00:00
Adam David
ccb277de1a execve of interpreter files
reword for grammar/clarity
1997-07-08 18:27:38 +00:00
Peter Wemm
e48f3cfbfc Rework previous commit.. I was confused by the number of diffs in the PR
and forgot what I was trying to do originally and accidently zapped
a feature. :-]  The problem is that we are converting a counted buffer in
a malloc pool into a null terminated C-style string.  I was calling realloc
originally to shrink the buffer to the desired size.  If realloc failed, we
still returned the valid buffer - the only thing wrong was it was a tad
too large.  The previous commit disabled this.

This commit now handles the three cases..
1: the buffer is exactly right for the null byte to terminate the
string (we don't call realloc).
2: it's got h.left = 0, so we must expand it to make room. If realloc
fails here, it's fatal.
3: if there's too much room, we realloc to shrink it - a failed realloc
is not fatal, we use the original buffer which is still valid.
1997-07-06 08:42:37 +00:00
Peter Wemm
3c55a3f243 Fix off-by-one error
PR: 3451
Submitted by: Tim Vanderhoek <ac199@hwcn.org>
1997-07-06 07:54:56 +00:00
Bruce Evans
362c392f0b This commit was generated by cvs2svn to compensate for changes in r27180,
which included commits to RCS files with non-trunk default branches.
1997-07-03 03:28:27 +00:00
Bruce Evans
5500fdcd4f Import Lite2's src/lib, except for non-i386 machine-dependent directories,
libc/db, libc/gen/crypt.* and libtelnet.  All affected files except 3
unimportant ones have already left the vendor branch.
1997-07-03 03:28:27 +00:00
Poul-Henning Kamp
25f5c3ba98 Have another go at the malloc-sysv initialization.
PR:		4002
Pointed out by:	bde
1997-07-02 19:33:23 +00:00
Poul-Henning Kamp
db7f90903d malloc_sysv used before initialized, reported in PR4002 by
Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>

Various cleanup from Keith Bostic

Reinstate calloc() as a separate funtion, in its own source/object file.
leave the manpage integrated with malloc.3 and friends.  Too many things
were broken in this respect.

PR:		4002
Reviewed by:	phk
Submitted by:	Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>
Submitted by:	Keith Bostic <bostic@bostic.com>
1997-07-01 18:39:38 +00:00
Jordan K. Hubbard
5e17038f01 Add 64 bit int support to scanf()
PR:		2080
Submitted by:	David Dawes <dawes@rf900.physics.usyd.edu.au>
1997-07-01 17:46:39 +00:00
Jordan K. Hubbard
51e6986086 _err() -> err(). 1997-06-29 00:33:17 +00:00
Peter Wemm
1e7aa4e938 replace the OpenBSD fd_set sizing code with something more efficient.
Only call malloc() if the fd is too big for the compiled in fd_set size,
and don't use calloc either.  This should reduce the impact of conflicts
with private malloc implementations etc.  When using the fd_set on the
stack, only zero what is needed rather than all 1024 bits like FD_ZERO did.
1997-06-28 04:19:52 +00:00
Peter Wemm
d2346017f0 Dynamically size fd_set in select rather than fail if too many files
are open.
Obtained from: OpenBSD; by deraadt and dm
1997-06-27 13:00:51 +00:00
Peter Wemm
fa0913efdb compensate for res_send <-> __res_send changes 1997-06-27 08:35:13 +00:00
Peter Wemm
6c5aff806e Merge in bind-4.9.6 resolver changes. Note that they resolve the
overflow problem differently.
1997-06-27 08:22:03 +00:00
Mike Smith
4ce2d5b5b5 Add stringlist functions from NetBSD. (required for the new ftp(1)
Obtained from:	NetBSD
1997-06-25 08:05:03 +00:00
John Hay
127feebec1 Add tickadj to struct clockinfo, like NetBSD and OpenBSD. 1997-06-24 18:22:44 +00:00
Steve Price
681e5e7a09 Show the real revision date and not the date that this
manpage is being viewed.
1997-06-23 04:03:49 +00:00
Poul-Henning Kamp
e3553c0365 Integrate calloc with the rest of the gang.
Various portability and stylistic cleanups.
Kill MALLOC_STATS & the 'D' option.
Fix the 'V' option.
Major overhaul of the man-page.
You milage should not vary.

Reviewed by:	Keith Bostic <bostic@bostic.com>
Submitted by:	Keith Bostic <bostic@bostic.com>
1997-06-22 17:54:27 +00:00
Bill Paul
b1d8279802 Hm... wonder how long this has been here.
The logic in get_myaddress() is broken: it always returns the loopback
address due to the following rule:

                if ((ifreq.ifr_flags & IFF_UP) &&
                    ifr->ifr_addr.sa_family == AF_INET &&
                    (loopback == 1 && (ifreq.ifr_flags & IFF_LOOPBACK))) {

The idea is that we want to select the interface address only if it's
up and it's in the AF_INET family. If it turns uout we don't have
such an interface available, we make a second pass through the loop,
this time settling for the loopback interface. But the logic inadvertently
locks out all cases when loopback == 0, so nothing is ever selected until
the second pass (when loopback == 1).

This is changed to:

                if (((ifreq.ifr_flags & IFF_UP) &&
                    ifr->ifr_addr.sa_family == AF_INET) ||
                    (loopback == 1 && (ifreq.ifr_flags & IFF_LOOPBACK))) {

which I think does the right thing.

This is yet another bogon I discovered during NIS+ testing; I need
get_myaddress() to work correctly so that the callback code in the
client library will work.
1997-06-20 17:54:11 +00:00
Philippe Charnier
577b61c645 Typo. 1997-06-18 06:26:13 +00:00
Bill Paul
c88fdb1d1d Remember to zero sockaddr_in struct before calling uaddr_to_sockaddr() to
populate it. Not doing this can result in a garbage sockaddr_in, which
will cause connect() to block inside clnttcp_create().
1997-06-15 21:03:32 +00:00
Andrey A. Chernov
f2305d469b srandomdev: use stack junk value in the fallback code too 1997-06-15 18:23:19 +00:00
Andrey A. Chernov
e9c3c2bc0b Change u_char which require special include to unsigned char 1997-06-14 01:28:59 +00:00
Andrey A. Chernov
83a03b388f Add arc4random() functions from OpenBSD. They are almost same as our
srandomdev(), but can be used inside libraries. random() can't be used
inside libraries because it breaks its possible predictable sequence.
arc4random() is true random as designed, so its usage is library-safe.
Obtained from: OpenBSD
1997-06-14 01:15:41 +00:00
Andrey A. Chernov
96c31b2618 Instead of copying fallback code over and over in each program,
implement (better) falback code inside srandomdev() itself.
Change return type from int to void (binary compatibility surprisely
achieved). Userland code will be changed soon.
1997-06-14 00:14:29 +00:00
Andrey A. Chernov
a14d48e67b Add MAXHOSTNAMELEN check
Obtained from: OpenBSD
1997-06-13 19:21:54 +00:00
Bill Paul
f7cf1c1d14 getnetid() crashes if no /etc/netid file is present (it tries to fclose()
a FILE * handle that wasn't really open).
1997-06-12 18:42:43 +00:00
Poul-Henning Kamp
7c5232c617 Add yet an option, this time on how to deal with malloc(0) and realloc(ptr.0)
Prompted by:	X11 & XFree86
1997-06-12 12:45:45 +00:00
Andrey A. Chernov
e728d480d2 Style optimization in newly added POSIX range []] conformance, redo
'for' loop as do...while and remove variable unneded now
1997-06-07 01:33:10 +00:00
Andrey A. Chernov
05a068e60e Add missing FNM_PERIOD check for '[' range
Don't treat !^ as first characters in the range, just as negate sign
[/] never match if FNM_PATHNAME
1997-06-06 22:33:28 +00:00
Andrey A. Chernov
e2dbbd9eea 1) Now conforms POSIX.2 2.8.3.2 requirements about []] pattern
2) Treat unclosed [ range in pattern as regular characters (bash style)
1997-06-06 21:48:55 +00:00
John Birrell
1a3a296d21 Fix mutex initialization.
Malloc cannot use pthread_mutex_init() to initialize a mutex because
the mutex initialization process does a malloc!

libc_r internals skip the malloc and assign an initializer to a static
structure and point the opaque type (pthread_mutex_t in this case) to
that structure. This is done on the assumption that the mutex will never
be destroyed. This style of initialization is only valid inside libc_r
because the structure that is assigned is opaque to the user.

This fix allows a simple program to get to main() again. 8-)
1997-06-04 12:55:49 +00:00
Peter Wemm
be159dcaf7 Re-activate the nanosleep style using code, but with the signal handling
semantics of the old sleep for compatability with a few decades of expected
side effects.  Apache breaks if we just use nanosleep() for some reason,
here we use a new signanosleep() syscall which is kinda like a hybrid of
sigsuspend and nanosleep..

Reviewed by:  ache (and tested on his apache that was failing when
                    sleep used plain nanosleep)
1997-06-02 16:30:22 +00:00
Julian Elischer
50dab48a5b Submitted by: Whistle Communications (archie Cobbs)
These changes add the ability to specify that a UFS file/directory
cannot be unlinked. This is basically a scaled back version
of the IMMUTABLE flag. The reason is to allow an administrator
to create a directory hierarchy that a group of users
can arbitrarily add/delete files from, but that the hierarchy
itself is safe from removal by them.
If the NOUNLINK definition is set to 0
then this results in no change to what happens normally.
(and results in identical binary (in the kernel)).
It can be proven that if this bit is never set by the admin,
no new behaviour is introduced..
Several "good idea" comments from reviewers plus one grumble
about creeping featurism.

This code is in production in 2.2 based systems
1997-06-02 06:24:52 +00:00
Peter Wemm
5c4722ca2f Add xref to signanosleep(2) 1997-06-01 10:34:39 +00:00
Peter Wemm
34147a3e8f Doc signanosleep, add to links 1997-06-01 09:47:06 +00:00
Peter Wemm
0913e7ce8b Update the sleep(3)/usleep(3) code to use signanosleep(2) if compiled with
-DUSE_NANOSLEEP.  Also, seperate the code for _THREAD_SAFE so that it uses
the simpler threaded nanosleep() call in libc_r..  We don't go to the same
extremes for emulating traditional sleep semantics (ie: eating any SIGALRM
that might happen) which things like apache seem to depend on.
1997-06-01 09:27:03 +00:00
Peter Wemm
63f35faf52 Generate signanosleep(2) syscall wrapper 1997-06-01 09:20:30 +00:00
Poul-Henning Kamp
f3877f2e4e sysctlbyname allows acces to sysctl variables by name.
The manpage has been sent to linquistic decontamination and will arrive
when released from the quarantine

Reviewed by:	peter
1997-05-30 20:53:13 +00:00
Poul-Henning Kamp
7e2a8bde3e Malloc flag X makes malloc behave like the canonical xmalloc() wrapper.
Untested support for Solaris from John-Mark Gurney

Reviewed by:	phk
Submitted by:	(partially) John-Mark Gurney <gurney_j@resnet.uoregon.edu>
1997-05-30 20:39:32 +00:00
Bill Paul
973ddb8378 Fix other small things that got lost in the merge:
- bde's change to includes section in getrpcent.3
- Lost comment in svc_run.c (the code here was actually the same since
  I had fixed the 'fds + 1' bug in my stuff at home before mailing
  Peter about it, but I didn't notce that he'd made a change to the
  comment right above the changed line).

Also pointed out by the ever vigilant: bde
1997-05-28 16:38:35 +00:00
Bill Paul
68eccc934b Restore Id.
Pointed out by: bde
1997-05-28 16:29:12 +00:00
Bill Paul
ad133ed648 Resolve conflicts.
This concludes tonight's entertainment. Once I'm sure I haven't destroyed
the world with all these changes, I'll import the utilities. Everything
should continue to work as before. If it doesn't let me know.

Special thanks to Mark Murray for running a test 'make world' for me to
shake out the bugs, which, hopefully, I have fixed.

(And there was much rejoicing.)
1997-05-28 05:05:31 +00:00
Bill Paul
9f3e964560 This commit was generated by cvs2svn to compensate for changes in r26219,
which included commits to RCS files with non-trunk default branches.
1997-05-28 05:00:11 +00:00
Bill Paul
e8636dfd57 Now the biggest step: import the changes to the main RPC code.
Note: you'll need to rinstalkl all your includes before compiling libc
the next time you update your sources in order for all this to work.

Reviewed by:	Mark Murray
1997-05-28 05:00:11 +00:00
Bill Paul
58041b5396 Resolve conflicts. 1997-05-28 04:57:39 +00:00
Bill Paul
7d0a5a3919 Now update the XDR library.
Reviewed by: Mark Murray
1997-05-28 04:55:37 +00:00
Bill Paul
b70dbc82a1 This commit was generated by cvs2svn to compensate for changes in r26216,
which included commits to RCS files with non-trunk default branches.
1997-05-28 04:55:37 +00:00
Satoshi Asami
6ded366aaa Use ${DESTDIR} correctly in front of absolute paths. 1997-05-23 08:24:00 +00:00
Eivind Eklund
6ad98044a1 it's'' -> its'' where appropriate and typo fixes in time2posix.3.
Closes PR docs/3612.

Submitted by:	Josh Gilliam <soil@quick.net>
1997-05-19 16:33:27 +00:00
Peter Wemm
304e0890fc Update the nanosleep versions to set a SIGALRM handler while sleeping.
This appears to appease Apache, although depending on having sleep(3)
changing the SIGALRM handler is a bit bogus.
1997-05-18 10:57:49 +00:00
Peter Wemm
1823941071 if nanosleep returns too early, loop. usleep() does not have a return
value, it appears as though the semantics of usleep are that it doesn't
return early.  (only in the nanosleep code - the setitimer code does this
already)
1997-05-17 15:42:58 +00:00
Peter Wemm
7bf1f2c9fa round-up non-zero nanoseconds in #ifdef'ed code. 1997-05-17 15:41:08 +00:00
Peter Wemm
fa0f63238b Allow conditional use (add -DUSE_NANOSLEEP) to CFLAGS of nanosleep() for
the backend of sleep(3) and usleep(3).  It's off by default until the
problem is fixed.
1997-05-17 11:40:58 +00:00
Andrey A. Chernov
e3c1328e9f Temporarily restore old (itimer) sleep variant because new one
(nanosleep) breaks Apache httpd badly: his childs died quickly after
number of requests (SIGPIPE). To reproduce this bug start
gdb /usr/local/sbin/httpd
run -X

and make some bunch of concurent requests (load the server pages
from 3 different places f.e.)
After short time httpd dies via SIGPIPE. It never dies with old sleep.c

In real life it looks like lots of broken images on the pages or missing
pages. Lynx says about Network read error, etc.
It seems something wrong in nanosleep signal handling.
1997-05-17 08:32:42 +00:00
Andrey A. Chernov
cbc9cbfb58 Completely remove #ifdefed out 8859-1 extension, I found it break
POSIX, C locale definition, see LC_CTYPE pre-defined table there
1997-05-14 00:11:02 +00:00
Andrey A. Chernov
cd641c8853 #ifdef out C locale extension to 8859-1 encoding, it now stays to ASCII
back as designed in *BSD

Also it not violates current standards but

1) No other Unixes have this feature

2) It broke Kerberos5 (isprint) and God knows what else
(not all vendors will agree to treat FreeBSD as special case for support
since (1))

2) Give false localization sense (programs mimic to be 8859-1
localized) which prevents true localization.
1997-05-13 11:19:26 +00:00
Peter Wemm
cbe0c2e4af Add clock_* and nanosleep manpages and links. 1997-05-12 12:18:14 +00:00
Peter Wemm
5995c83796 manpage for nanosleep(2)
Obtained from: NetBSD  (I think jtc@netbsd.org wrote it)
1997-05-12 12:15:35 +00:00
Peter Wemm
6bc1aaa0d8 Man pages for clock_{get/set}time() and clock_getres().
Obtained from: kstailey@openbsd.org via OpenBSD sources
1997-05-12 12:13:10 +00:00
Peter Wemm
511d7b9c07 Use nanosleep() in all cases, not just in the reentrant libc (_THREAD_SAFE)
version.
1997-05-12 10:04:57 +00:00
Peter Wemm
85c2765219 Create the clock_settime(), clock_gettime(), clock_getres() and nanosleep()
syscall functions.
1997-05-12 09:59:25 +00:00
David Nugent
210793f753 Add #include <sys/types.h> in synopsis, now required for libutil.h. 1997-05-11 08:50:33 +00:00
Andrey A. Chernov
94658e740e Plug even more failure memory leaks 1997-05-10 04:40:40 +00:00
Andrey A. Chernov
d0673936fd Cleanup
Plug failure memory leaks
Use issetugid now
PR: 3492
1997-05-10 04:28:17 +00:00
Eivind Eklund
f756433e8b Back out all of yesterdays include file changes. 1997-05-07 20:01:10 +00:00
Doug Rabson
e8ec170c35 Add syscalls for kernel linker. 1997-05-07 18:12:14 +00:00
Eivind Eklund
48ea0bec18 Make a lot of include-files self-contained. I excluded the patches changing
int's to gid_t and uid_t - should I commit these, too?

Closes PR misc/2625.

Submitted by:	Julian Assange <proff@iq.org>
1997-05-07 02:27:18 +00:00
John Birrell
870039320f Changed all paths to be relative to src/lib instead of src/lib/libc
so that all these makefiles can be used to build libc_r too.

Added .if ${LIB} == "c" tests to restrict man page builds to libc
to avoid needlessly building them with libc_r too.

Split libc Makefile into Makefile and Makefile.inc to allow the
libc_r Makefile to include Makefile.inc too.
1997-05-03 03:50:06 +00:00
John Birrell
cd6f28f252 This stub has not been required by libc for a long time. Nuke it. 1997-05-03 02:47:52 +00:00
John Polstra
298c8e3d6b Fix a bug that caused some false mismatches when both FNM_PATHNAME
and FNM_LEADING_DIR were specified and the pattern ended with "*".
Example: pattern="src/usr.sbin/w*", string="src/usr.sbin/watch/watch.8,v".
This should match, but did not.
1997-04-29 03:24:57 +00:00
Masafumi Max NAKANE
4c204da0ea Typo.
PR:		#3178
Submitted by:	Josh Gilliam <soil@quick.net>
1997-04-25 20:36:10 +00:00
Andrey A. Chernov
d4192bac8e Add vfork(2) to SEE ALSO 1997-04-25 14:41:55 +00:00
Bruce Evans
3d56ef8c48 Generate .S files for syscalls. This has many advantages:
- dependencies actually work (I need this to propagate some fixes
  in <machine/asm.h>)
- the cpp pipeline goes away, so errors can't leak out of it and
  an ANSI cpp is automatically used.
- it's simpler - standard rules get used instead of repetitive
  special rules.  (This showed bugs in the strip steps in the
  standard rules.  The wrong strip flag was also used for *.po
  here.)

Removed some ${ECHO}s and `@'s.  Normal make echoing of what is
being done is now not much more verbose than the echo messages
were, and is more useful.
1997-04-23 10:49:54 +00:00
Bruce Evans
2b9ac168ec FIxed the cleanup. I forgot to leave stdin alone in the usual (!twoway)
case.
1997-04-22 09:44:06 +00:00
John Dyson
5ae9116a7d Clean-up my modification of popen.c for vfork. Bruce's (this) is better.
Submitted by:	Bruce Evans <bde@freebsd.org>
1997-04-20 20:17:04 +00:00
Bruce Evans
e23b7f75de Use separate routines for memmove() and memcpy(). This lets me drop
the (buggy) support for alternative entry points.  ALTENTRY() was only
used for memmove().  Optimizing for space was particularly silly because
memcpy() is rarely used (gcc normally inlines it).
Obtained from:	NetBSD
1997-04-20 13:02:48 +00:00
Bruce Evans
8009c566df Use separate routines for memmove() and memcpy(). This lets me drop
the (buggy) support for alternative entry points.  ALTENTRY() was only
used for memmove().  Optimizing for space was particularly silly because
memcpy() is rarely used (gcc normally inlines it).

Obtained from:	NetBSD
1997-04-20 12:46:12 +00:00
Bruce Evans
1c33c5a76b Merged with the 1996/11/12 NetBSD version:
- use a slightly less bogus copyright.  This file was never contributed
  to Berkeley.  It still claims to be copright by the Regents.
- use <machine/asm.h> instead of "DEFS.h".
- use RCSID($Id$) instead of explicit assembly code and messy ifdefs.
  The rcsid won't be put into the object file until we make RCSID()
  non-null.  NetBSD uses a LIBC_SCCS ifdef here.  We used a LIBC_RCS
  instead, but I want RCSID() to be controlled directly by LIBC_RCS
  (actually by LIB_RCS).  This is the only difference with the NetBSD
  version.
- added ifdefs to support generation of memcpy() and memmove().  The
  other changes are "while I'm here" to get this.
- improved style of the copy backwards case.
1997-04-20 12:09:18 +00:00
Bruce Evans
7df534462e Fixed long lines.
Removed unused macros CALL() and ASMSTR.

Reviewed by:	jdp
1997-04-19 17:05:30 +00:00
Bruce Evans
a3315650db Fixed #include and/or prototype bugs in synopsis. 1997-04-19 15:57:20 +00:00
Daniel O'Callaghan
a6f96c4131 Fix punctuation: "it's" -> "its" 1997-04-17 23:31:47 +00:00
John Dyson
1174d9f9df Fix the problem in popen that makes correct vfork semantics fail.
Specifically, popen modifies a variable "pdes[1]" in the child
in such a way that it breaks code in the parent (due to the address
space sharing.)
1997-04-16 03:26:50 +00:00
Bruce Evans
21774a3cea Second stage of moving this to in <machine/asm.h>: just include
<machine/asm.h> here.
1997-04-15 14:18:17 +00:00
Bruce Evans
11663637b8 Fixed missing const. Include <unistd.h> so that the function type gets
checked.
Submitted by:	partly by roberto
1997-04-14 15:14:58 +00:00
Bruce Evans
69b10155b5 Fixed another prototype bug in synopsis. 1997-04-14 13:37:18 +00:00
David Nugent
5afcddae37 Fix typo. 1997-04-13 16:55:56 +00:00
David Nugent
b06ebb3255 Implement two new keywords and status flags for entries in /etc/ttys;
TTY_NETWORK (network), TTY_DIALUP (dialup), which determine a basic
connection type. TTY_DIALUP in particular will replace the old out of
date heuristic "tty[dD]*" in login.c (and better than the current
hard-coded method).
1997-04-13 15:16:03 +00:00
David Nugent
c8207e03ba Add MLINKS for isdialuptty(3) & isnetworktty(3). 1997-04-13 15:12:14 +00:00
Bruce Evans
e37d0e2391 Fixed #includes in synopsis. 1997-04-13 13:48:43 +00:00
Bruce Evans
cc2680f7dd Updated the LOCK_* #defines in the synopsis to be lexically identical
with the (Lite1) ones in fcntl.h).
1997-04-13 13:43:06 +00:00
Bruce Evans
6333eac64f Fixed missing consts in synopsis. 1997-04-13 13:37:56 +00:00
Bruce Evans
23f0c1fcf6 Fixed #include and/or prototype bugs in synopsis. 1997-04-13 13:35:33 +00:00