]> granicus.if.org Git - php/commitdiff
- Fix builtin gets() emulation (hopefully).
authorMarkus Fischer <mfischer@php.net>
Tue, 11 Jun 2002 21:22:12 +0000 (21:22 +0000)
committerMarkus Fischer <mfischer@php.net>
Tue, 11 Jun 2002 21:22:12 +0000 (21:22 +0000)
main/streams.c

index fa1a9f8f1587894eb0cdf6be80e15adb2f8e5a90..ea1844871f52a50bfdcd8f595a7da97b2fd1f464 100755 (executable)
@@ -250,21 +250,13 @@ PHPAPI char *_php_stream_gets(php_stream *stream, char *buf, size_t maxlen TSRML
                return NULL;
        } else {
                /* unbuffered fgets - poor performance ! */
-               size_t n = 1;
                char *c = buf;
 
                /* TODO: look at error returns? */
 
-               while(n < maxlen && stream->ops->read(stream, c, 1 TSRMLS_CC) > 0) {
-                       n++;
-                       if (*c == '\n') {
-                               c++;
-                               break;
-                       }
-                       c++;
-               }
-               *c = 0;
-               return buf;
+               while (--maxlen > 0 && stream->ops->read(stream, buf, 1 TSRMLS_CC) == 1 && *buf++ != '\n');
+               *buf = '\0';
+               return c == buf && maxlen > 0 ? NULL : c;
        }
 }