From c03fd881e3102b471fda97c4b6c15ef8a7dc968f Mon Sep 17 00:00:00 2001 From: uz Date: Sun, 10 Jun 2012 18:55:22 +0000 Subject: [PATCH] Changes for better code generation. git-svn-id: svn://svn.cc65.org/cc65/trunk@5703 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/common/gets.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/libsrc/common/gets.c b/libsrc/common/gets.c index 377e0ba53..66690bab3 100644 --- a/libsrc/common/gets.c +++ b/libsrc/common/gets.c @@ -19,35 +19,40 @@ char* __fastcall__ gets (char* s) { + register char* p = s; int c; - int i = 0; + unsigned i = 0; - do { + while (1) { /* Get next character */ if ((c = fgetc (stdin)) == EOF) { /* Error or EOF */ - s [i] = 0; + *p = '\0'; if (stdin->f_flags & _FERROR) { - /* ERROR */ - return 0; + /* ERROR */ + return 0; } else { /* EOF */ - if (i) { - return s; - } else { - return 0; - } + if (i) { + return s; + } else { + return 0; + } } } - /* One char more */ - s [i++] = c; + /* One char more. Newline ends the input */ + if ((char) c == '\n') { + *p = '\0'; + break; + } else { + *p = c; + ++p; + ++i; + } - } while (c != '\n'); - - /* Replace newline by NUL */ - s [i-1] = '\0'; + } /* Done */ return s; @@ -55,4 +60,4 @@ char* __fastcall__ gets (char* s) - +