stream.getc() doesn't recognize eof
    Brian White 
    bcwhite at pobox.com
       
    Wed Mar 12 14:16:53 PDT 2008
    
    
  
I was looking through the std.stream code of Phobos and found this function:
   // reads and returns next character from the stream,
   // handles characters pushed back by ungetc()
   // returns char.init on eof.
   char getc() {
     char c;
     if (prevCr) {
       prevCr = false;
       c = getc();
       if (c != '\n')
         return c;
     }
     if (unget.length > 1) {
       c = cast(char)unget[unget.length - 1];
       unget.length = unget.length - 1;
     } else {
       readBlock(&c,1);
     }
     return c;
   }
Is there something I don't understand?  How does it recognize EOF?  The 
"readBlock" function is defined as returning 0 (zero) if there is no 
more data but its return value in not checked.
-- Brian
    
    
More information about the Digitalmars-d-learn
mailing list