]> pd.if.org Git - pdclib/blobdiff - functions/stdio/gets.c
Merged branch stdio_rewrite back into trunk.
[pdclib] / functions / stdio / gets.c
index 27575223581ef8fa1f8ce1b9e52740ec21cc0f5f..9dbc515f88cc8ae213c0be6c333160ba674d33b7 100644 (file)
@@ -7,13 +7,32 @@
 */
 
 #include <stdio.h>
-#include <stdint.h>
 
 #ifndef REGTEST
 
+#define _PDCLIB_GLUE_H _PDCLIB_GLUE_H
+#include <_PDCLIB_glue.h>
+
 char * gets( char * s )
 {
-    return fgets( s, SIZE_MAX, stdin );
+    if ( _PDCLIB_prepread( stdin ) == EOF )
+    {
+        return NULL;
+    }
+    char * dest = s;
+    while ( ( *dest = stdin->buffer[stdin->bufidx++] ) != '\n' )
+    {
+        if ( stdin->bufidx == stdin->bufend )
+        {
+            if ( _PDCLIB_fillbuffer( stdin ) == EOF )
+            {
+                return NULL;
+            }
+        }
+        ++dest;
+    }
+    *dest = '\n';
+    return s;
 }
 
 #endif
@@ -28,3 +47,4 @@ int main( void )
 }
 
 #endif
+