[Python-Dev] RE: [Patches] [Patch #102915] xreadlines : readlines :: xrange : range

Guido van Rossum guido@python.org
Tue, 02 Jan 2001 17:53:14 -0500


> [Guido]
> > Quite apart from whether we should enable xreadlines(), could you look
> > into doing a similar thing for MSVC stdio?  For most Unix platforms, a
> > cop-out answer is "use glibc" -- but for Windows it may pay to do our
> > own hack.
> 
> There's no question about whether it would pay on Windows, because it pays
> big for Perl on Windows.  The question is about cost.  There's no way to
> *do* it short of the way Perl does it, which is to write a large pile of
> Windows-specific code (roughly the same size and complexity as the glibc
> getline implementation -- check it out, it's not trivial, and glibc exploits
> compiler inlining to make it bearable) relying on reverse-engineered
> accidents of how MS happens to use all the fields from this undocumented
> struct (from MS's stdio.h):
> 
> struct _iobuf {
>         char *_ptr;
>         int   _cnt;
>         char *_base;
>         int   _flag;
>         int   _file;
>         int   _charbuf;
>         int   _bufsiz;
>         char *_tmpfname;
>         };
> typedef struct _iobuf FILE;
> 
> in their stdio implementation.  Else it won't play correctly with MS's
> stdio.  That's A Project.  Last year I tried extracting the relevant code
> from Perl, but, as is usual, gave up after unraveling the third (whatever)
> layer of mystery macros with no end in sight.  I bet it would take me a
> week.  Is it worth that much to you and DC?  Since the real Windows experts
> are hanging out at ActiveState, I bet one of them will volunteer to do it
> tonight <wink>.

Yeah.  That's too much.  Too bad.  I'm not holding my breath for
ActiveState though. :-)

--Guido van Rossum (home page: http://www.python.org/~guido/)