From: Anantha Kesari H Y Date: Thu, 7 Jul 2005 15:43:50 +0000 (+0000) Subject: zend_stream_getc uses fread internally. NetWare LibC fread reads 4(Which I believe... X-Git-Tag: php-5.1.0b3~121 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=82da3f50746d4d49bdf9f14d2daa30b472e3576c;p=php zend_stream_getc uses fread internally. NetWare LibC fread reads 4(Which I believe EOT) for EOF(^D) character. This happens when fread is asked to read one and only character as is the case with cl interactive mode. -- Kamesh --- diff --git a/Zend/zend_stream.c b/Zend/zend_stream.c index 95050d3d26..22c891a2c0 100644 --- a/Zend/zend_stream.c +++ b/Zend/zend_stream.c @@ -102,7 +102,16 @@ ZEND_API size_t zend_stream_read(zend_file_handle *file_handle, char *buf, size_ int c = '*'; size_t n; +#ifdef NETWARE + /* + c != 4 check is there as fread of a character in NetWare LibC gives 4 upon ^D character. + Ascii value 4 is actually EOT character which is not defined anywhere in the LibC + or else we can use instead of hardcoded 4. + */ + for ( n = 0; n < len && (c = zend_stream_getc( file_handle TSRMLS_CC)) != EOF && c != 4 && c != '\n'; ++n ) +#else for ( n = 0; n < len && (c = zend_stream_getc( file_handle TSRMLS_CC)) != EOF && c != '\n'; ++n ) +#endif buf[n] = (char) c; if ( c == '\n' ) buf[n++] = (char) c;