Things to do to hash.c:

Always use curly braces around statements in if/else/while/do/etc.
that span more than a line -- even around multiline simple statements
or single-line simple statements preceded by a comment line.

Never have lines longer than 80 chars.

Remove ^L characters.  We don't want/need such crutches.
Get a good (smart) pagination filter.  I have one (a perl script)
that usually does a decent job for me -- I called it something
like stdc-print and think I sent you an early verison.

I don't like the name `cursor'.  I much prefer short names
like `p' for index variables.  I doubt I'll change all of them,
but thought you should know why some will probably end up changing.

#define USE_OBSTACK somewhere

Fix this comment.  Depending on system and application...
Mention fragmentation.
  +#if USE_OBSTACK
  +    /* Whenever obstacks are used, it is possible to allocate all overflowed
  +       entries into a single stack, so they all can be freed in a single
  +       operation.  It is not clear if the speedup is worth the trouble.  */
  +    struct obstack entry_stack;
  +#endif


assert (bucket_limit - bucket == n_buckets) ?

remove.c: s/done/successful or ok
