Discovered that the patch for large files caused a nasty side effect:
any use of backquotes (%x) results in a seg fault.  :(  The fix is
simple, but very strange: just include a prototype declaration for
io_fread in io.c:

  static long io_fread _((char *, long, FILE *));

and all is well.  I've updated the patch to include this, see
http://www.jonathanbaker.org/software/ruby/ruby.html.

Without the prototype, just before this call in read_all in io.c:

  n = io_fread(RSTRING(str)->ptr+bytes, siz-bytes, fptr->f);

the fptr->f is fine, but somehow it mysteriously becomes NULL
immediately after entering io_fread.  Seems rather like a compiler
bug, unless I'm overlooking something silly.  I get the same behavior
on multiple platforms using gcc 2.96.  Anyone understand this?

    --Jonathan