oweals/busybox.git
23 years agoFix a warning and potential segfault in lash when BB_FEATURE_CLEAN_UP
Eric Andersen [Wed, 22 Aug 2001 05:32:24 +0000 (05:32 -0000)]
Fix a warning and potential segfault in lash when BB_FEATURE_CLEAN_UP
is enabled

23 years agoFix an _old_ interface problem with a never-used feature.
Eric Andersen [Wed, 22 Aug 2001 05:26:08 +0000 (05:26 -0000)]
Fix an _old_ interface problem with a never-used feature.

23 years agoScrub things and ditch uint64_t and use a custom type name
Eric Andersen [Wed, 22 Aug 2001 05:06:29 +0000 (05:06 -0000)]
Scrub things and ditch uint64_t and use a custom type name
to avoid C lib compatibility problems.

23 years agoBump version to 0.61.pre
Eric Andersen [Wed, 22 Aug 2001 04:16:36 +0000 (04:16 -0000)]
Bump version to 0.61.pre

23 years agoPatch from Rodney Brown <RDBrown@mira.net>, shrinking 1.5k
Eric Andersen [Wed, 22 Aug 2001 04:15:47 +0000 (04:15 -0000)]
Patch from Rodney Brown  <RDBrown@mira.net>, shrinking 1.5k
from gzip by careful optimization.  Appears to work just fine
(I've tested the changes on x86, ARM, and powerpc).

23 years agoMake it compile with uClibc
Eric Andersen [Wed, 22 Aug 2001 00:10:00 +0000 (00:10 -0000)]
Make it compile with uClibc

23 years agodfp might be used uninitialized. NULL it.
Eric Andersen [Tue, 21 Aug 2001 23:36:32 +0000 (23:36 -0000)]
dfp might be used uninitialized.  NULL it.

23 years agoDisable the tinylogin apps by default.
Eric Andersen [Tue, 21 Aug 2001 23:34:10 +0000 (23:34 -0000)]
Disable the tinylogin apps by default.

23 years agoFix dos2unix compile problem with certain glibc versions
Eric Andersen [Tue, 21 Aug 2001 22:34:05 +0000 (22:34 -0000)]
Fix dos2unix compile problem with certain glibc versions

23 years agoInitial merge of all tinylogin applets that do not require crypt.
Eric Andersen [Tue, 21 Aug 2001 16:18:59 +0000 (16:18 -0000)]
Initial merge of all tinylogin applets that do not require crypt.
There is some optimization that can be done to better use libbb in
these applets.  There is also redundancy between stty and getty which
could be eliminated.
 -Erik

23 years agoFix a problem with unsatisfied backrefs (noted by Martin Bene).
Matt Kraai [Mon, 20 Aug 2001 21:21:06 +0000 (21:21 -0000)]
Fix a problem with unsatisfied backrefs (noted by Martin Bene).

23 years agosome minor wording changes
Eric Andersen [Mon, 20 Aug 2001 17:48:17 +0000 (17:48 -0000)]
some minor wording changes

23 years agoApply Glenn's tftp rewrite
Eric Andersen [Mon, 20 Aug 2001 17:47:49 +0000 (17:47 -0000)]
Apply Glenn's tftp rewrite

23 years agoFix version comparision bug
Glenn L McGrath [Wed, 15 Aug 2001 11:25:01 +0000 (11:25 -0000)]
Fix version comparision bug

23 years agoLog all messages from a single connection, not just the first. Patch from
Matt Kraai [Tue, 14 Aug 2001 17:32:23 +0000 (17:32 -0000)]
Log all messages from a single connection, not just the first.  Patch from
matthias@corelatus.com, approved by Gennady Feldman <gena01@cachier.com>.

23 years agoRewritten by Manuel Novoa III.
Matt Kraai [Tue, 14 Aug 2001 17:10:08 +0000 (17:10 -0000)]
Rewritten by Manuel Novoa III.

23 years agoI stupidly forgot one level of pointer indirection in the cmdtxt(), calcsize(),
Manuel Novoa III [Sun, 12 Aug 2001 17:32:56 +0000 (17:32 -0000)]
I stupidly forgot one level of pointer indirection in the cmdtxt(), calcsize(),
and copynode() table implementations.  Commit the fix but keep them disabled
until others check them out.  Uncomment "//#define CMDTXT_TABLE",
"//#define CALCSIZE_TABLE", and "//#define COPYNODE_TABLE" to try them out.
Saves over 600 bytes on i386.

23 years agoFix a merging error
Eric Andersen [Fri, 10 Aug 2001 21:11:56 +0000 (21:11 -0000)]
Fix a merging error

23 years agoA few bug fixes and significant size savings. Combined effort of
Manuel Novoa III [Fri, 10 Aug 2001 19:36:07 +0000 (19:36 -0000)]
A few bug fixes and significant size savings.  Combined effort of
Vladimir N. Oleynik dzo@simtreas.ru, Aaron Lehmann aaronl@vitelus.com,
and myself.

23 years agoSmall size optimization from Aaron Lehmann
Eric Andersen [Fri, 10 Aug 2001 18:42:04 +0000 (18:42 -0000)]
Small size optimization from Aaron Lehmann

23 years agoFix stupid grammar error.
Eric Andersen [Fri, 10 Aug 2001 15:22:35 +0000 (15:22 -0000)]
Fix stupid grammar error.

23 years agoCommit Vladimir's simplify_path.
Matt Kraai [Fri, 10 Aug 2001 15:05:27 +0000 (15:05 -0000)]
Commit Vladimir's simplify_path.

23 years agoThis corrects the _really_poor_ implementation of "broadcast +" handling
Manuel Novoa III [Fri, 10 Aug 2001 06:02:23 +0000 (06:02 -0000)]
This corrects the _really_poor_ implementation of "broadcast +" handling
by ifconfig that someone had submitted.  It fixes 1 bug, gets rid of the
excessive bloating of a structure that is used in a static const array,
and removes the implicit struct copys by keeping only the int type needed.
It also turns this into a configurable feature (off by default).

23 years agoRemind people to enable RPC support when using NFS mount and uClibc (thanks
Matt Kraai [Thu, 9 Aug 2001 21:07:10 +0000 (21:07 -0000)]
Remind people to enable RPC support when using NFS mount and uClibc (thanks
to David Douthitt).

23 years agoRemove BB_SH define entirely.
Matt Kraai [Thu, 9 Aug 2001 21:00:15 +0000 (21:00 -0000)]
Remove BB_SH define entirely.

23 years agoUse ferror(3) to check for errors, rather than inspecting errno. Thanks to
Matt Kraai [Mon, 6 Aug 2001 16:09:09 +0000 (16:09 -0000)]
Use ferror(3) to check for errors, rather than inspecting errno.  Thanks to
David Douthitt for reporting, and shame on me for writing such crappy code.

23 years agoSimplified version checking.
Matt Kraai [Mon, 6 Aug 2001 14:18:08 +0000 (14:18 -0000)]
Simplified version checking.

23 years agoAdd support for underscores in variable names.
Matt Kraai [Mon, 6 Aug 2001 14:14:18 +0000 (14:14 -0000)]
Add support for underscores in variable names.

23 years agoFix exclude list handling
Glenn L McGrath [Sat, 4 Aug 2001 05:28:29 +0000 (05:28 -0000)]
Fix exclude list handling

23 years agoFix up some silly messups with the debian packaging, and a dumb 0_60_0
Eric Andersen [Thu, 2 Aug 2001 20:56:16 +0000 (20:56 -0000)]
Fix up some silly messups with the debian packaging, and a dumb
bug with chroot.  I've had the package uploaded but perms set to
000, so I am going to re-tag things and re-cut the release.  Folks
who pulled from CVS in the last 30 minutes with just have to cope.
 -Erik

23 years agoFix misspelling of `stabilize'.
Matt Kraai [Thu, 2 Aug 2001 20:34:24 +0000 (20:34 -0000)]
Fix misspelling of `stabilize'.

23 years agoOk, here we go...
Eric Andersen [Thu, 2 Aug 2001 19:31:08 +0000 (19:31 -0000)]
Ok, here we go...

23 years agoCommit NMU changelog.
Matt Kraai [Thu, 2 Aug 2001 15:12:16 +0000 (15:12 -0000)]
Commit NMU changelog.

23 years agoMore libc5 fixups
Eric Andersen [Thu, 2 Aug 2001 10:55:32 +0000 (10:55 -0000)]
More libc5 fixups
 -Erik

23 years agoSome libc5 cleanups
Eric Andersen [Thu, 2 Aug 2001 09:58:41 +0000 (09:58 -0000)]
Some libc5 cleanups

23 years agomake_directory used mode as if it were an signed entity, but in fact
Eric Andersen [Thu, 2 Aug 2001 09:58:19 +0000 (09:58 -0000)]
make_directory used mode as if it were an signed entity, but in fact
it was a mode_t which is unsigned.  Fix it to be signed...
 -Erik

23 years agoTeach libc5 about realpath
Eric Andersen [Thu, 2 Aug 2001 09:55:58 +0000 (09:55 -0000)]
Teach libc5 about realpath
 -Erik

23 years agoTeach libc5 what a sighandler_t is
Eric Andersen [Thu, 2 Aug 2001 09:52:40 +0000 (09:52 -0000)]
Teach libc5 what a sighandler_t is
 -Erik

23 years agomultibuild.pl saves us again. unix2dos requires that dos2unix
Eric Andersen [Thu, 2 Aug 2001 09:21:17 +0000 (09:21 -0000)]
multibuild.pl saves us again.  unix2dos requires that dos2unix
be enabled.
 -Erik

23 years agoOk, if no shell is enabled, don't include any of the SH_IS_<name>
Eric Andersen [Thu, 2 Aug 2001 08:48:03 +0000 (08:48 -0000)]
Ok, if no shell is enabled, don't include any of the SH_IS_<name>
options or the build will fail
 -Erik

23 years agoScrub away the last leftovers from BB_FEATURE_<shell>. Good thing
Eric Andersen [Thu, 2 Aug 2001 08:42:58 +0000 (08:42 -0000)]
Scrub away the last leftovers from BB_FEATURE_<shell>.  Good thing
for multibuild.pl -- I would have missed this stupid mess otherwise.
 -Erik

23 years agoPatch from Robert J. Osborne <rj@resourceinternational.com> that fixes
Eric Andersen [Thu, 2 Aug 2001 05:26:41 +0000 (05:26 -0000)]
Patch from Robert J. Osborne <rj@resourceinternational.com> that fixes
a bug in vi where the beginning of the text space was not checked
before dot is decremented for delete and escape sequences on an empty
file.

23 years agoOops. I forgot to commit this part of vodz' patch.
Eric Andersen [Thu, 2 Aug 2001 05:18:55 +0000 (05:18 -0000)]
Oops.  I forgot to commit this part of vodz' patch.

23 years agoLatest patch from vodz. Adds a check for divide by zero in the posix
Eric Andersen [Thu, 2 Aug 2001 05:02:46 +0000 (05:02 -0000)]
Latest patch from vodz.  Adds a check for divide by zero in the posix
math suport, cleaner math syntax error checking, moves redundant signal
string tables (from kill and ash) into libbb and provides a few
cleanups elsewhere.

23 years agoAllow multiple shells to be enabled.
Matt Kraai [Wed, 1 Aug 2001 17:21:35 +0000 (17:21 -0000)]
Allow multiple shells to be enabled.

23 years agoFix behavior of grep -lc to match GNU grep. SuS2 is ambiguous
Eric Andersen [Tue, 31 Jul 2001 23:18:49 +0000 (23:18 -0000)]
Fix behavior of grep -lc to match GNU grep.  SuS2 is ambiguous
on the correct behavior, so acting like GNU grep seems best
 -Erik

23 years agoSilence some silly warnings
Eric Andersen [Tue, 31 Jul 2001 22:53:36 +0000 (22:53 -0000)]
Silence some silly warnings

23 years agoSilence a silly warning
Eric Andersen [Tue, 31 Jul 2001 22:51:49 +0000 (22:51 -0000)]
Silence a silly warning

23 years agoMake formatting match GNU ls (we were including a spare ' ')
Eric Andersen [Tue, 31 Jul 2001 22:43:50 +0000 (22:43 -0000)]
Make formatting match GNU ls (we were including a spare ' ')
 -Erik

23 years agoFix the let builtin (so we can close bug #1196) and remove the
Eric Andersen [Tue, 31 Jul 2001 21:38:23 +0000 (21:38 -0000)]
Fix the let builtin (so we can close bug #1196) and remove the
nonstandard exp builtin.
 -Erik

23 years agoAlways write record counts to stderr.
Matt Kraai [Tue, 31 Jul 2001 21:02:19 +0000 (21:02 -0000)]
Always write record counts to stderr.

23 years agoI just wrote up a simple pidof applet, closing bug #1197
Eric Andersen [Tue, 31 Jul 2001 19:06:07 +0000 (19:06 -0000)]
I just wrote up a simple pidof applet, closing bug #1197
 -Erik

23 years agoGive credit to Adam Slattery.
Matt Kraai [Tue, 31 Jul 2001 16:44:16 +0000 (16:44 -0000)]
Give credit to Adam Slattery.

23 years agoI think this should be the final changelog update...
Eric Andersen [Tue, 31 Jul 2001 16:11:41 +0000 (16:11 -0000)]
I think this should be the final changelog update...
 -Erik

23 years agoDon't save and restore readonly flag if BB_FEATURE_VI_READONLY isn't enabled.
Matt Kraai [Tue, 31 Jul 2001 15:01:12 +0000 (15:01 -0000)]
Don't save and restore readonly flag if BB_FEATURE_VI_READONLY isn't enabled.

23 years agoThis incorporates Posix math support into ash. The Posix math support
Eric Andersen [Mon, 30 Jul 2001 21:41:37 +0000 (21:41 -0000)]
This incorporates Posix math support into ash.  The Posix math support
was written by Aaron Lehmann <aaronl@vitelus.com> for busybox.  This
patch makes a few trivial changes to Aaron's code so that it can be
used (in theory) by the other shells as well...
 -Erik

23 years agoSimplify/clarify the shell dependant bit of Config.h
Eric Andersen [Mon, 30 Jul 2001 19:33:00 +0000 (19:33 -0000)]
Simplify/clarify the shell dependant bit of Config.h

23 years agoThis depmod script will create a modules.dep file, just like the depmod
Eric Andersen [Mon, 30 Jul 2001 19:32:03 +0000 (19:32 -0000)]
This depmod script will create a modules.dep file, just like the depmod
binary from modutils.  This one, however, can be run on the _host_
system (need not be run on the target) and is fully cross platform, so
even if your target is ARM or powerpc or whatever, this will still
work.  When used to support the new modprobe applet, this allows
busybox to fully supplant modutils for architectures supported by
busybox insmod.
 -Erik

23 years agoFix up the sample inittab entry per what is current.
Eric Andersen [Mon, 30 Jul 2001 19:28:33 +0000 (19:28 -0000)]
Fix up the sample inittab entry per what is current.
 -Erik

23 years agoRework option handling to save space.
Matt Kraai [Mon, 30 Jul 2001 14:43:20 +0000 (14:43 -0000)]
Rework option handling to save space.

23 years agoPreserve whether or not the line was previously altered when running a
Matt Kraai [Mon, 30 Jul 2001 14:05:58 +0000 (14:05 -0000)]
Preserve whether or not the line was previously altered when running a
subst command (discovery and patch by Jim Gleason).

23 years agoIf filename is a '-' then read from stdin to stdout
Glenn L McGrath [Mon, 30 Jul 2001 04:48:50 +0000 (04:48 -0000)]
If filename is a '-' then read from stdin to stdout

23 years agoNote my uuencode work
Glenn L McGrath [Sun, 29 Jul 2001 06:07:35 +0000 (06:07 -0000)]
Note my uuencode work

23 years agoFix permisions when reading from stdin
Glenn L McGrath [Sun, 29 Jul 2001 06:04:26 +0000 (06:04 -0000)]
Fix permisions when reading from stdin

23 years agoFix broken logic when wraping encoded data into rows, also simplifies it a bit
Glenn L McGrath [Sun, 29 Jul 2001 05:47:33 +0000 (05:47 -0000)]
Fix broken logic when wraping encoded data into rows, also simplifies it a bit

23 years agoThe src buffer size has to be a multiple of 3 (as i noted, but didnt do).
Glenn L McGrath [Sat, 28 Jul 2001 21:34:25 +0000 (21:34 -0000)]
The src buffer size has to be a multiple of 3 (as i noted, but didnt do).

23 years agoRewrite based on wget uuencode function.
Glenn L McGrath [Sat, 28 Jul 2001 21:06:13 +0000 (21:06 -0000)]
Rewrite based on wget uuencode function.
Saves aprox. 200 Bytes and in future can use common code between
this and wget if BB_FEATURE_WGET_AUTHENTICATION is defined.

23 years agoPArtial Changelog update. I'm still on vacation (I'm at a campground
Eric Andersen [Sat, 28 Jul 2001 16:35:51 +0000 (16:35 -0000)]
PArtial Changelog update.  I'm still on vacation (I'm at a campground
near the Grand Teton Mountains in Montana at the moment and my
connection is terribly slow) so this is a partial update only,
 -Erik

23 years agoShorten static package description.
Matt Kraai [Thu, 26 Jul 2001 14:45:21 +0000 (14:45 -0000)]
Shorten static package description.

23 years agoRename dirname variable to pathname to eliminate namespace conflict.
Matt Kraai [Thu, 26 Jul 2001 14:26:53 +0000 (14:26 -0000)]
Rename dirname variable to pathname to eliminate namespace conflict.

23 years agochar renamed can never be negative on ARM (rp->renamed[i] != EMPTY)
Russ Dill [Thu, 26 Jul 2001 05:58:40 +0000 (05:58 -0000)]
char renamed can never be negative on ARM (rp->renamed[i] != EMPTY)

23 years agoNote that m68k is supported
Eric Andersen [Wed, 25 Jul 2001 16:58:58 +0000 (16:58 -0000)]
Note that m68k is supported

23 years agoCleanup some warnings and a really obvious bug.
Eric Andersen [Wed, 25 Jul 2001 07:23:38 +0000 (07:23 -0000)]
Cleanup some warnings and a really obvious bug.
 -Erik

23 years agoThis fixes dos2unix and unix2dos so they behave as expected. dos2unix
Eric Andersen [Wed, 25 Jul 2001 07:22:55 +0000 (07:22 -0000)]
This fixes dos2unix and unix2dos so they behave as expected.  dos2unix
was broken in the 0.52 release, and unix2dos was pretty lame...
 -Erik

23 years agoUpdate my email address and applets
Glenn L McGrath [Tue, 24 Jul 2001 02:46:35 +0000 (02:46 -0000)]
Update my email address and applets

23 years agonote dpkg rewrite
Glenn L McGrath [Tue, 24 Jul 2001 02:41:06 +0000 (02:41 -0000)]
note dpkg rewrite

23 years agoAdd support for devfs device names.
Matt Kraai [Mon, 23 Jul 2001 14:52:08 +0000 (14:52 -0000)]
Add support for devfs device names.

23 years agoAn initial modproble implementation. Quite suboptimal still,
Eric Andersen [Sun, 22 Jul 2001 23:01:03 +0000 (23:01 -0000)]
An initial modproble implementation.  Quite suboptimal still,
but it does work...

23 years agoSome patches to make dietlibc work...
Eric Andersen [Sun, 22 Jul 2001 23:00:15 +0000 (23:00 -0000)]
Some patches to make dietlibc work...

23 years agoSome adjustments, mostly from David McCullough <davidm@lineo.com> to
Eric Andersen [Thu, 19 Jul 2001 22:28:02 +0000 (22:28 -0000)]
Some adjustments, mostly from David McCullough <davidm@lineo.com> to
make busybox be more uClinux friendly.  I also adjusted Config.h for
uClinux so it will automagically disable apps the arn't going to
work without fork() and such.
 -Erik

23 years agoThe -P prefix should only be prepended to filenames which are not explicitly
Matt Kraai [Thu, 19 Jul 2001 19:13:55 +0000 (19:13 -0000)]
The -P prefix should only be prepended to filenames which are not explicitly
specified.

23 years agoNote that wget fix is important.
Matt Kraai [Thu, 19 Jul 2001 17:46:17 +0000 (17:46 -0000)]
Note that wget fix is important.

23 years agoThe directory name should only be prepended if one was specified.
Matt Kraai [Thu, 19 Jul 2001 17:29:38 +0000 (17:29 -0000)]
The directory name should only be prepended if one was specified.

23 years agoAdd a RELEASE_BB_BUFFER macro and use it to fix a memory leak in syslogd.c
Matt Kraai [Thu, 19 Jul 2001 15:00:14 +0000 (15:00 -0000)]
Add a RELEASE_BB_BUFFER macro and use it to fix a memory leak in syslogd.c
(noted by Adam Slattery).

23 years agoCleanup (most) memory leaks
Glenn L McGrath [Thu, 19 Jul 2001 12:15:13 +0000 (12:15 -0000)]
Cleanup (most) memory leaks

23 years agoChange read_package_field interface, and rewrite using low level functions
Glenn L McGrath [Wed, 18 Jul 2001 15:47:21 +0000 (15:47 -0000)]
Change read_package_field interface, and rewrite using low level functions
Fixes for a few bugs that have crept into dpkg in the last few days

23 years agoFix extract_archive so it doesnt mangle filenames, dont try and extract "./" and...
Glenn L McGrath [Wed, 18 Jul 2001 13:22:44 +0000 (13:22 -0000)]
Fix extract_archive so it doesnt mangle filenames, dont try and extract "./" and strip leading "./" on other files

23 years agoUse the unofficial -C instead of -c to --configure a package, -c conflicts with anoth...
Glenn L McGrath [Wed, 18 Jul 2001 05:17:39 +0000 (05:17 -0000)]
Use the unofficial -C instead of -c to --configure a package, -c conflicts with another dpkg command

23 years agoUpdate dpkg usage
Glenn L McGrath [Wed, 18 Jul 2001 05:16:31 +0000 (05:16 -0000)]
Update dpkg usage

23 years agoMore feedback to user
Glenn L McGrath [Wed, 18 Jul 2001 05:03:49 +0000 (05:03 -0000)]
More feedback to user

23 years agoBe more verbose when configureing package, minor changes
Glenn L McGrath [Wed, 18 Jul 2001 04:33:31 +0000 (04:33 -0000)]
Be more verbose when configureing package, minor changes

23 years agoFail silently on failure to read tar header, its unfortunate that many tar implementa...
Glenn L McGrath [Wed, 18 Jul 2001 03:23:10 +0000 (03:23 -0000)]
Fail silently on failure to read tar header, its unfortunate that many tar implementations must be adding unwanted crap to the end of their archives.
It makes error reporting here more trouble than its worth

23 years agoUse xfopen to abort on error to prevent segfaulting later.
Glenn L McGrath [Wed, 18 Jul 2001 03:13:49 +0000 (03:13 -0000)]
Use xfopen to abort on error to prevent segfaulting later.

23 years agoCleanup from vodz
Eric Andersen [Tue, 17 Jul 2001 01:14:06 +0000 (01:14 -0000)]
Cleanup from vodz

23 years agoThis is vodz' latest patch. Sorry it took so long...
Eric Andersen [Tue, 17 Jul 2001 01:12:36 +0000 (01:12 -0000)]
This is vodz' latest patch.  Sorry it took so long...
    1) ping cleanup (compile fix from this patch already applied).
    2) traceroute call not spare ntohl() now (and reduce size);
    3) Fix for functions not declared static in insmod, ash, vi and mount.
    4) a more simple API cmdedit :))
    5) adds "stopped jobs" warning to ash on Ctrl-D and fixes "ignoreeof" option
    6) reduce exporting library function index->strchr (traceroute), bzero->memset (syslogd)

23 years agoenum entry for unarchive to be used by tar
Glenn L McGrath [Sat, 14 Jul 2001 12:38:55 +0000 (12:38 -0000)]
enum entry for unarchive to be used by tar

23 years agoAllow the unarchive() extract_list variable to be NULL, meaning extract all
Glenn L McGrath [Sat, 14 Jul 2001 08:49:53 +0000 (08:49 -0000)]
Allow the unarchive() extract_list variable to be NULL, meaning extract all

23 years agoTolerate fields with no data, e.g. "Depends: "
Glenn L McGrath [Sat, 14 Jul 2001 06:25:54 +0000 (06:25 -0000)]
Tolerate fields with no data, e.g. "Depends: "

23 years agoAllow featureless ping to compile, and featureful ping to shrink
Matt Kraai [Fri, 13 Jul 2001 20:56:27 +0000 (20:56 -0000)]
Allow featureless ping to compile, and featureful ping to shrink
(by Adam Slattery).

23 years agoTotal rewrite, uses hash tables for speed and low memory use.
Glenn L McGrath [Fri, 13 Jul 2001 18:35:24 +0000 (18:35 -0000)]
Total rewrite, uses hash tables for speed and low memory use.