Commit Graph

304 Commits

Author SHA1 Message Date
Olivier Houchard
fc0c46e313 Document the "files" directive.
Reminded by:	jmg
2004-05-13 21:55:53 +00:00
Olivier Houchard
dd472ec61d Fix a few glitches in my previous commit.
This makes config(8) WARNS?=6 compliant.
2004-05-11 15:42:44 +00:00
Olivier Houchard
43a903c091 Add a new "files" directive, which allows to include a files.foo file directly
from a kernel config file.
Bump config version to reflect this change.
2004-05-09 22:29:00 +00:00
Dag-Erling Smørgrav
59b7dcd3d0 Whitespace nit. 2004-02-17 09:59:45 +00:00
Bruce Evans
e3937b620a Fixed spurious syntax errors for including files that don't begin with
a SEMICOLON token (a newline or semicolon, or one of these preceded
by a comment and/or whitespace).  The input stream was switched too
early and the parser was expecting a SEMICOLON in the included file
instead of after the filename in the include directive.

Submitted by:	Stefan Farfeleder <stefan@fafoe.narf.at>
Kept alive by:	Adam C. Migus <adam@migus.org>
2003-11-14 11:23:25 +00:00
Simon L. B. Nielsen
3b5e70922f Add a reference to config(5) in the SEE ALSO section.
Suggested by:	dcs
Approved by:	ceri (mentor)
2003-08-06 21:41:35 +00:00
Joseph Koshy
81e25c5eb2 Eliminate non-existent word.
Submitted by:	jwd
2003-07-13 09:11:10 +00:00
Joseph Koshy
6203e1ea06 "towards" -> "toward". According to dictionary.com, the use of "towards"
is common in British English, while "toward" is the preferred form in
American English.  Use the American form for consistency.

Correct the date on the manual page.

Submitted by:	Tom Rhodes <trhodes@freebsd.org>,
		underway@comcast.net (Gary W. Swearingen)
2003-07-08 01:39:02 +00:00
Joseph Koshy
1949e95550 Disallow multiple 'machine' directives in a kernel configuration
file.

Reviewed by:	ru, bde
2003-07-06 02:00:52 +00:00
Joseph Koshy
1518d1294c New section 5 manual page detailing our kernel configuration file
format.

Reviewed by:	Ruslan Ermilov <ru@freebsd.org>, Jens
		Schweikhardt <schweikh@schweikhardt.net>
2003-07-06 01:52:26 +00:00
Mark Murray
a97024f7c6 Not particularly pretty hack to generate rules to make .ln files
from .c files. Actually, this is overkill, as the .ln file targets
are assumed from .? (any) files. This is not a problem in practice,
merely a bit untidy, as the linting rules DTRT. See the sys/conf/*
and sys/mk/* files for usage.
2003-06-16 20:08:15 +00:00
Thomas Moestl
74155a4873 Check the return values of opendir() and unlink() in cleanheaders().
If unlink() fails, just print a warning for now.
2003-06-12 11:36:54 +00:00
David E. O'Brien
70be60d344 Best we can do is WARNS=1 due to lex. 2003-06-11 21:27:37 +00:00
David E. O'Brien
9cad751da5 Do not refer to the non-existant BDECFLAGS. 2003-06-11 21:25:15 +00:00
Dag-Erling Smørgrav
d885e237ca Don't convert the kernel ident to uppercase when writing the Makefile. 2003-04-24 00:52:58 +00:00
Christian Brueffer
c2f1217b0c Grammar fix
PR:		51164
Submitted by:	Jeff Ito <jeffi@rcn.com>
MFC after:	3 days
2003-04-20 13:11:11 +00:00
Poul-Henning Kamp
18b492fc8c Bump the config version to force people to upgrade their config(8)
so the fix for emitting multiple instances of .o files will prevent
link errors on LINT.
2003-04-15 21:29:11 +00:00
Poul-Henning Kamp
37b2f82295 Avoid emitting duplicate makefile entries. 2003-04-12 14:02:03 +00:00
Dag-Erling Smørgrav
76131e39c3 Print FYI messages on stderr. Previously, they were printed on stdout,
and due to buffering they would sometimes come out after the actual
error message when mkheaders() failed due to an unknown device, so you'd
get an error messages followed by 20 or 30 lines of harmless warnings.

There are lots of other warning messages in config(8) that are printed
on stdout, but these were the most egregious (at least with LINT).
2003-03-09 15:08:47 +00:00
Ruslan Ermilov
824018495d Implemented "nooption" and "nomakeoption" config(8) tokens.
Fixed memory leak in the "nodevice" option implementation.

Use these instead of sed(1) in MD NOTES.

Use a single makefile (sys/conf/makeLINT.mk) to generate
LINT for all architectures.  (Previous versions missed
the LINT dependency on Makefile, and i386 version also
missed the dependency on ${NOTES}.)

Fixed bugs in the previous NOTES conversion using the
"nodevice" token and sed(1):

- i386 LINT lost "device pst".

- pc98 LINT lost SC_*, MAXCONS and KBD_DISABLE_KEYMAP_LOAD
  options, and got needless DPT_* options.

- Added nooptions PPC_DEBUG, PPC_PROBE_CHIPSET, KBD_INSTALL_CDEV
  to sparc64 LINT so that it has a chance to config(8).

This basically returns us to where we were before.
2003-02-26 23:36:59 +00:00
Ruslan Ermilov
e20f30f755 Allow for boolean make options (``makeoptions NO_MODULES'').
Fixed the potential bug in rmopt().
2003-02-21 23:17:00 +00:00
Ceri Davies
7f373b5b93 Bring the suggested command for extracting a configuration file from the
kernel into line with that suggested in LINT.

PR:		bin/48157
Submitted by:	naddy
MFC After:	4.8
2003-02-18 21:04:55 +00:00
Ruslan Ermilov
0b56eafddf Implemented a simple "nodevice" config(8) command that cancels
the effect of the "device" command, and use it to generate the
OLDCARD from GENERIC.

Suggested by:	bde
2003-02-15 02:39:13 +00:00
Ruslan Ermilov
292dd8a87f Convert to using <sys/queue.h> macros. 2003-02-15 02:26:13 +00:00
Tom Rhodes
dbbdfcf810 Remove this Makefile, these docs are built by the Makefiles in src/share/doc/smm. 2003-02-01 20:34:04 +00:00
Ruslan Ermilov
8d5d039f80 Uniformly refer to a file system as "file system".
Approved by:	re
2002-12-12 17:26:04 +00:00
Ruslan Ermilov
a654c53e16 mdoc(7) police: Removed redundant .Ns calls. 2002-08-13 16:07:28 +00:00
Peter Wemm
2f3bead082 Remove stray function prototype. I wrote and removed this function but
forgot the prototype.

Submitted by:	dd
2002-07-21 23:31:43 +00:00
Peter Wemm
4f52fbb1d8 Check for missing static unit 'count' declarations as well. 2002-07-21 23:02:35 +00:00
Peter Wemm
775d6c0ece Check that we are not supplying 'device foo N' to devices that do not take
a statuc unit count.
2002-07-21 22:23:56 +00:00
Philippe Charnier
490d5836b5 The .Nm utility 2002-07-14 14:47:15 +00:00
Bruce Evans
8365569883 Moved the setting of all profiling-related variables except the key one
(PROFLEVEL) to kern.pre.mk so that it is easier to manage.  Bumped config
version to match.

Moved the check for cputype being configured to a less bogus place in
mkmakefile.c.
2002-07-13 19:36:14 +00:00
David E. O'Brien
4ffcd14286 We don't need to hit the user over the head so strong now that we've
fixed all the known warnings suffiently to not require NO_WERROR.

Ok'ed by:	peter
2002-07-06 01:07:48 +00:00
Juli Mallett
e872716d8a Clean up hex() and octal() to return and work with unsigned integers since
they scan values of unsigned types, and since they do not need otherwise,
have them take const char * arguments.
2002-06-21 10:56:44 +00:00
Tom Rhodes
67c8020f12 Consistancy check: s/file system/filesystem/g 2002-05-16 02:28:39 +00:00
Peter Wemm
916cd514f2 Add a hint about -DNO_WERROR 2002-02-25 21:59:57 +00:00
Peter Wemm
7a2eb19dbf Commit some infrastructure for turning on -Werror for kernel compiles.
It doesn't actually do it yet though.  This adds a flag to config so
that we can exclude certain vendor files from this even when the rest
of the kernel has it on.  make -DNO_WERROR would also bypass all of it.
2002-02-20 23:35:56 +00:00
Peter Wemm
f99afbb9af Bump configvers for different handling of maxusers. 2001-12-14 09:40:01 +00:00
Matthew Dillon
66a11b9fb1 Allow maxusers to be specified as 0 in the kernel config, which will
cause the system to auto-size to between 32 and 512 depending on the
amount of memory.

MFC after:	1 week
2001-12-09 01:57:09 +00:00
Ruslan Ermilov
66d4a748cf mdoc(7) police:
- Bump document date.
- Remove hard sentence breaks.
- Fix markup.
2001-10-26 11:16:18 +00:00
Peter Wemm
8116859a74 Use includes to get prototypes for hints and env arrays.
Submitted by:	bde
2001-09-17 21:25:48 +00:00
Peter Wemm
76cb0cadf1 Enable hardwiring of things like tunables from embedded enironments
that do not start from loader(8).
2001-08-27 05:11:53 +00:00
Ruslan Ermilov
753d686d34 mdoc(7) police: s/BSD/.Bx/ where appropriate. 2001-08-14 10:01:54 +00:00
David E. O'Brien
90e655ea4e Perform a major cleanup of the usr.sbin Makefiles.
These are not perfectly in agreement with each other style-wise, but they
are orders of orders of magnitude more consistent style-wise than before.
2001-07-20 06:20:32 +00:00
Dima Dorfman
f247324df7 Remove whitespace at EOL. 2001-07-15 08:06:20 +00:00
Peter Wemm
e8cc4c7407 Put on my peril-sensitive sunglasses and remove the POLA-violating
stealth hints loading.  'make release' has been fixed to not need this
now anyway.  If you want static hints, specify it explicitly.

Hey! Why did it suddenly get so dark??
2001-07-14 05:02:40 +00:00
Peter Wemm
ef1cb1959c Remove the old machine symlink first. 2001-07-14 00:03:05 +00:00
Dima Dorfman
5e06480c9f Introduce an "include" directive. It takes one argument, a filename
to be included into this one.  This works the same way as #include
does in C; as far as the user is concerned, the included file is
inlined into the current one.

Since config(8) is no longer limited to working on one user-supplied
file, printing just a line number in an error message is not
sufficient.  The new global variable yyfile represents the file
currently being parsed, and must be printed as well.

Reviewed by:	imp
Obtained from:	OpenBSD
2001-07-12 02:08:51 +00:00
Ruslan Ermilov
a4c37c816b mdoc(7) police: removed HISTORY info from the .Os call. 2001-07-10 15:12:08 +00:00
Warner Losh
b0fa8b5b3b Bring FILES section up to date.
submitted by: Mark Peek <mark-ml@whistle.com>
2001-07-04 18:48:50 +00:00
Warner Losh
a3d1987d23 Bump config version in config. 2001-07-02 05:38:26 +00:00
Warner Losh
971470c36c Move kernel compile directory from sys/compile/FOO to
sys/compile/${MACHINE}/FOO.

Reviewed by: obrien, peter and the USENIX terminal room secret kernel cabal
2001-06-30 06:28:12 +00:00
Ruslan Ermilov
345e52e742 - Backout botched attempt to introduce MANSECT feature.
- MAN[1-9] -> MAN.
2001-03-26 14:42:20 +00:00
Ruslan Ermilov
c73e22c3d4 Set the default manual section for usr.sbin/ to 8. 2001-03-20 18:17:26 +00:00
Peter Wemm
6f34947de7 newbus_ioconf() is long gone 2001-02-28 02:55:15 +00:00
Peter Wemm
f9f6bfe762 Some more tidying up. we dont use config-dependent anyware. Eliminate
some duplicate code (cut/paste bug?). tidy up some other minor stuff.
2001-02-28 02:53:32 +00:00
Peter Wemm
388481c1b7 s/special/compilewith/ (so I stop confusing myself) and GC an unused
function I missed before.
2001-02-28 02:30:30 +00:00
Peter Wemm
4336b13f61 Untangle some special magic that happened for conflicting defintions for
local files.* and options.* files on the third pass.
2001-02-28 02:07:47 +00:00
Peter Wemm
5ee6dbc67e Remove some more dead code. :-/ 2001-02-28 01:38:01 +00:00
Peter Wemm
0ef4251fb9 GC some leftover stuff (device-driver suffix) 2001-02-28 01:17:04 +00:00
Peter Wemm
ed53c6c5c0 Move the 'dont forget "make depend"' to be the last thing that people see,
after the warnings.
2001-02-23 00:22:04 +00:00
Peter Wemm
a9973e4ad8 Futher cleanups. Since we have two options lists, one for proper options
and one for Makefile options, pass in the list head and use a common
newopt() routine.
Fix the 'config vmunix' support glue which was broken for a few minutes.
2001-02-22 04:00:29 +00:00
Peter Wemm
2db1cff10d Collect together a handful of copies of the option generator code into a
single newopt(char *name, char *value) function.  Change newdev() to
do the same thing rather than depending on the evil 'cur' device hack.
2001-02-22 03:40:50 +00:00
Peter Wemm
68f4fced95 ${BDECFLAGS} work. And fix a real error in the process. A "MAXUSERS"
string could have been passed to free();  There are some warnings here
I am not sure how to fix as they are in the lex scanner code, etc.
2001-02-19 04:43:21 +00:00
Peter Wemm
357a8c727e Devices are NOT compiled with the "special c2 option -i".. 2001-02-18 22:42:15 +00:00
Peter Wemm
3b10a240e5 Remove the need to list each and every cpu platform. Config will now
take your word for the 'machine' switch.
2001-02-04 13:17:38 +00:00
Peter Wemm
3c36aab606 Try and make it clearer that the static units thing is a FYI only. 2001-01-31 11:18:49 +00:00
Peter Wemm
246449f3e3 Unwind a bit more cruft - we only have one type of device now. 2001-01-31 10:30:30 +00:00
Peter Wemm
62a4bb5509 Oops. An old version of a local change leaked in with the last commit.
Since it is here, clean it up a bit.
2001-01-31 10:06:06 +00:00
Peter Wemm
ace858085f Redo the stray header file cleanup code to not depend on timestamps
or access times or anything.  Just bite the bullet and keep a list of
header files that we know about.
2001-01-31 08:42:35 +00:00
Peter Wemm
2860fa873e AARGH! This does not mix too well with the -o noatime mount option.
:-(
2001-01-29 15:26:35 +00:00
Peter Wemm
e3701bdd59 I confess. This is a truely nasty hack. I am so ashamed!
(I think config(8) source does bad things to your brain :-)

Clean up likely stray *.h files in the build directory.
Eg: if isa.h ceases being generated, zap it.
The heuristics to figure out a 'likely' file are pretty revolting.
2001-01-29 09:34:43 +00:00
Benno Rice
9abfa9d14b Add support for configuring PowerPC kernels.
Reviewed by:	peter
2001-01-22 12:10:45 +00:00
Peter Wemm
b8e39fd14a Clean up some obsolete stuff. config -r has not been needed since around
FreeBSD 3.x or so when the 'make depend' picked up the opt_foo.h files.
Convert warnings into actual errors in the hope that buildkernel users
will pay more attention. :-(
2001-01-22 07:03:06 +00:00
Peter Wemm
3fac4a6263 Stop turning 'mandatory' into an implicit 'count' line. i386/npx was the
only consumer of this and it is no longer needed.
2001-01-19 13:20:50 +00:00
Peter Wemm
10ca19cf93 Implement option strings that we can use in #ifdefs (where unavoidable)
as a replacement for the evil #define NFOO.  If 'device npx' is in the
static kernel, a synthetic option '#define DEV_NPX 1' will be available
to stick in an opt_xxx.h file.  "#if NNPX > 0" can be replaced with
"#ifdef DEV_NPX" and we can get rid of the overloaded meaning of the
device count mechanism.
2001-01-19 12:49:21 +00:00
Peter Wemm
d772649af3 Try and stop config(8) from freaking out due to unnecessary paranoia
when using -d.  Use realpath(3) to locate the top of the tree rather than
trying to manually trim back the results of a getcwd().

Requested by:  alfred
2001-01-04 22:08:20 +00:00
Ben Smithurst
1cb88f4274 .Nm Config -> .Nm, there is no such program "Config" in FreeBSD.
PR:		23404
Submitted by:	Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
2000-12-11 10:14:58 +00:00
Peter Wemm
3f964411b5 Make the xxxFILES= list generation generic. This makes it easier to add
things like MFILES= or CONFFILES= without having to modify config code.
2000-11-25 03:25:34 +00:00
Warner Losh
faa913d76d Fix buffer overflows in filenames. If you had a path > 80 characters
for your /usr/obj/path/to/my/files path to the kernel, then weird
things happened.  make buildkernel would fail because config was
dumping core or generating bad file names (depending on the lenght of
the path).

While I was here, also use strlcpy, strlcat and snprintf (or asprintf)
as necessary.  Minor format policing for the snprintf calls as well.
2000-11-21 19:58:55 +00:00
Ruslan Ermilov
e97407b4f2 mdoc(7) police: use the new features of the Nm macro. 2000-11-20 20:10:44 +00:00
Ruslan Ermilov
b5c508fba3 Use Fx macro wherever possible. 2000-11-14 11:20:58 +00:00
Ruslan Ermilov
726b61ab5f Avoid use of direct troff requests in mdoc(7) manual pages. 2000-11-10 17:46:15 +00:00
Poul-Henning Kamp
412916079c Make it possible to specify profiling in the kernel config file.
Do so for LINT.
2000-10-14 08:33:22 +00:00
Doug Rabson
918c9eec57 Add ia64 support. 2000-09-29 13:36:47 +00:00
Peter Wemm
596feda554 If a ${KERNEL}.hints file exists, and no hints are specified explicitly,
then include the hints with a marker indicating that it is a fallback.
The kernel side of this is to come shortly.
2000-08-25 19:30:03 +00:00
Peter Wemm
76631bb35a Argh! I broke the static hints parser at the last minute on freefall when
I added the $FreeBSD$ (commented) line.
Fix:
 1: s/break/continue/
 2: will somebody please shoot me! :-]
2000-06-14 07:43:56 +00:00
Peter Wemm
f71c01cc52 Borrow phk's axe and apply the next stage of config(8)'s evolution.
Use Warner Losh's "hint" driver to decode ascii strings to fill the
resource table at boot time.

config(8) no longer generates an ioconf.c table - ie: the configuration
no longer has to be compiled into the kernel.  You can reconfigure your
isa devices with the likes of this at loader(8) time:
  set hint.ed.0.port=0x320

userconfig will be rewritten to use this style interface one day and will
move to /boot/userconfig.4th or something like that.

It is still possible to statically compile in a set of hints into a kernel
if you do not wish to use loader(8).  See the "hints" directive in GENERIC
as an example.

All device wiring has been moved out of config(8).  There is a set of
helper scripts (see i386/conf/gethints.pl, and the same for alpha and pc98)
that extract the 'at isa? port foo irq bar' from the old files and produces
a hints file.  If you install this file as /boot/device.hints (and update
/boot/defaults/loader.conf - You can do a build/install in sys/boot) then
loader will load it automatically for you.  You can also compile in the
hints directly with:  hints "device.hints"  as well.

There are a few things that I'm not too happy with yet.  Under this scheme,
things like LINT would no longer be useful as "documentation" of settings.
I have renamed this file to 'NOTES' and stored the example hints strings
in it.  However... this is not something that config(8) understands, so
there is a script that extracts the build-specific data from the
documentation file (NOTES) to produce a LINT that can be config'ed and
built.  A stack of man4 pages will need updating. :-/

Also, since there is no longer a difference between 'device' and
'pseudo-device' I collapsed the two together, and the resulting 'device'
takes a 'number of units' for devices that still have it statically
allocated.  eg:  'device fe 4' will compile the fe driver with NFE set
to 4.  You can then set hints for 4 units (0 - 3).  Also note that
'device fe0' will be interpreted as "zero units of 'fe'" which would be
bad, so there is a config warning for this.  This is only needed for
old drivers that still have static limits on numbers of units.
All the statically limited drivers that I could find were marked.

Please exercise EXTREME CAUTION when transitioning!

Moral support by: phk, msmith, dfr, asmodai, imp, and others
2000-06-13 22:28:50 +00:00
Peter Wemm
3f664fc689 A checkpoint of a part of a work-in-progress. Some more cleanups for
config(8).  This commit allows control of the creation of the
#include "foo.h" files.  We now only create them explicitly when needed.
BTW; these are mostly bad because they usually imply static limits on
numbers of units for devices.  eg: struct mysoftc sc[NFOO];
These static limits have Got To Go.
2000-06-10 22:13:40 +00:00
Sheldon Hearn
f2e366a105 Remove single-space hard sentence breaks. These degrade the quality
of the typeset output, tend to make diffs harder to read and provide
bad examples for new-comers to mdoc.
2000-03-01 14:09:25 +00:00
Peter Wemm
ac0711e123 Mark the 'conflicts' keyword as obsolete, and don't generate (unused)
resource table entries for it.
2000-01-29 18:14:59 +00:00
Philippe Charnier
d67724c7c9 Use Ns and Sx. -current is 4 not 3. 2000-01-23 20:16:21 +00:00
Peter Wemm
8ef328cfe9 Remove the cam-specific device wiring code. This was a duplicate of
the data in the resource tables, and cam is getting it directly now.
2000-01-23 18:05:24 +00:00
Peter Wemm
18ecdacc22 Bump configvers.h as a precaution. Although existing config files will
work unmodified still, new config files won't work on the old ones.
2000-01-23 12:24:48 +00:00
Peter Wemm
218f95f38b Clean up something in config(8) that has annoyed me for ages. Remove
the need to specify the unit number of unwired devices.  ie: instead
of saying "device fxp0" we can say "device fxp" which is much closer
to what it actually means.  The former (fxp0) implied something about
reserving the 0th unit, but it does not and never did - it was a
figment of config(8)'s imagination that we had to work around..
"device fxp0" simply means "compile in the fxp device driver", so we
may as well just write it as "device fxp" which is closer to what it
really means.

Doing this also saves us from filling up the ioconf.c tables with
meaningless entries.
2000-01-23 12:01:08 +00:00
Peter Wemm
22c22b08b0 Fix a bungle with the CAM static wiring tables. Write CAMCONF_UNSPEC
instead of -2.  This (I believe) caused static wirings to not match.
This should fix Bill Pechter's problem but we'll see.

Problem discovered by:	Bill Pechter <pechter@shell.monmouth.com>
2000-01-12 14:20:12 +00:00
Bruce Evans
838aeb6957 Remove even known options if they are in the wrong options header. This
fixes movement of options.  Stale copies were left behind.
2000-01-09 12:52:01 +00:00
Peter Wemm
58fa7951a2 Bump configversion. The controller/device changes are upwards but not
downwards compatable.  If you try and config a s/controller/device/ kernel
with an old config(8), the results will be less than satisfactory.
2000-01-09 07:10:27 +00:00
Peter Wemm
b5cda9cb3c Support getting *.$MACHINE from sys/conf as well as sys/$MACHINE/conf.
This would mean that we could move files.alpha, files.i386, files.pc98
etc all next to conf/files, and the various Makefiles next to each
other.  This should go a long way towards committers "seeing" the
Alpha etc stuff and remembering to update that too as it would be
right next to the i386 config files.  Note this does not include
the GENERIC etc files as they can't be shared.  I haven't actually
moved the files, but the support is here for it.  It still supports
the per-machine conf directories so that folks working on a new arch
can just distribute a subdir of files.
2000-01-08 16:48:12 +00:00
Peter Wemm
9414269597 Apply the axe to some more cruft in config(8). In particular:
- redo the "at" configuration system so that it just syntax checks
  to make sure the device you're configuring something "at" appears to
  exist.  Nuke a bunch of complexity that was responsible for creating
  "clones" of wildcard devices and some wierd stuff in a few places
  including the scbus config tables etc.
- merge "controller" and "device" - there is no difference as far as
  the kernel is concernend, it's just something there to make life
  difficult for config file writers.  "controller" is now an alias for
  "device".
- emit full scsi config into the resource tables.  We could trivially
  change cam to use that rather than it's own "special" table for wiring
  and static configuration.  ATA could use this too for static wiring.
- try and emulate some of the quirks of the old system where it made
  sense.  Some were too strange though and I'd be very suprised if they
  were features and not outright bugs.  nexus handling is still strange.
  One thing in particular is that some of the wierd entries in the
  newbus devtables is now gone as it was a quirk side effect of the
  wildcard/question-mark cloning above.

GENERIC and LINT still build etc.
2000-01-08 15:57:22 +00:00