Subject: bug#12216: peek-char incorrectly *CONSUMES* eof

From: Andy Wingo <[email-masked]>
Date: Thu, 07 Mar 2013 22:32:38 +0100

On Tue 05 Mar 2013 20:17, "David A. Wheeler" <[email-masked]> writes:

> I reported:
>> > Guile's peek-char has a bug; it incorrectly *consumes* eof instead of
>> > just reporting it.
>
> Andy Wingo replied:
>> I have the feeling that for interactive use, if you expect to read a EOF
>> from a port and then continue, you have to not use peek-char.  You need
>> to handle your own lookahead buffer.  I know it's not a great answer,
>> but I can't think of anything else that makes sense.
>
> We don't want to read an EOF and then continue.
> We peek-char to not *CONSUME* an interactive EOF.

I understand what it is you want.  But I don't know of any sane way to
implement it.

Given that it is an edge case -- peek-char on an interactive port -- I
think the thing to do is to document this inconsistency, and for you (in
your code) to implement some sort of abstraction that does not use
peek-char.

That is to say, use read-char, and do unread-char as necessary.  Or keep
your own buffer around.

I know it isn't nice, but I don't know how to do anything better.

Andy
-- 
http://wingolog.org/