From: Shamus Hammons Date: Fri, 14 Mar 2014 14:05:35 +0000 (-0500) Subject: Fixed ignored last line with no EOL bug. (bug #19) X-Git-Tag: 1.3.0~3 X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=commitdiff_plain;h=5bea6621a5f369fdc9921965fc5f23571bb34715 Fixed ignored last line with no EOL bug. (bug #19) --- diff --git a/token.c b/token.c index e35e9bf..4039c8e 100644 --- a/token.c +++ b/token.c @@ -795,11 +795,17 @@ char * GetNextLine(void) // Scan for next end-of-line; handle stupid text formats by treating // \r\n the same as \n. (lone '\r' at end of buffer means we have to // check for '\n'). +#if 0 i = 0; j = fl->ifcnt; d = &fl->ifbuf[fl->ifind]; for(p=d; iifbuf[fl->ifind]; + + for(p=d, i=0, j=fl->ifcnt; i= j) - { - break; // Look for '\n' to eat - } + break; // Need to read more, then look for '\n' to eat else if (p[1] == '\n') - { i++; - } } + // Cover up the newline with end-of-string sentinel *p = '\0'; fl->ifind += i; @@ -827,11 +830,19 @@ char * GetNextLine(void) // Handle hanging lines by ignoring them (Input file is exhausted, no // \r or \n on last line) + // Shamus: This is retarded. Never ignore any input! if (!readamt && fl->ifcnt) { +#if 0 fl->ifcnt = 0; *p = '\0'; return NULL; +#else + // Really should check to see if we're at the end of the buffer! :-P + fl->ifbuf[fl->ifind + fl->ifcnt] = '\0'; + fl->ifcnt = 0; + return &fl->ifbuf[fl->ifind]; +#endif } // Truncate and return absurdly long lines. @@ -856,7 +867,9 @@ char * GetNextLine(void) fl->ifind = fl->ifcnt & 1; } - if ((readamt = read(fl->ifhandle, &fl->ifbuf[fl->ifind + fl->ifcnt], QUANTUM)) < 0) + readamt = read(fl->ifhandle, &fl->ifbuf[fl->ifind + fl->ifcnt], QUANTUM); + + if (readamt < 0) return NULL; if ((fl->ifcnt += readamt) == 0) diff --git a/version.h b/version.h index 089d546..f07b812 100644 --- a/version.h +++ b/version.h @@ -13,6 +13,6 @@ #define MAJOR 1 // Major version number #define MINOR 2 // Minor version number -#define PATCH 11 // Patch release number +#define PATCH 12 // Patch release number #endif // __VERSION_H__