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;
-
+