aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/xfree86/parser/scan.c
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw/xfree86/parser/scan.c')
-rw-r--r--xorg-server/hw/xfree86/parser/scan.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/xorg-server/hw/xfree86/parser/scan.c b/xorg-server/hw/xfree86/parser/scan.c
index b80fbfb8f..03cbc8a44 100644
--- a/xorg-server/hw/xfree86/parser/scan.c
+++ b/xorg-server/hw/xfree86/parser/scan.c
@@ -227,13 +227,15 @@ xf86getNextLine(void)
configFiles[curFileIndex].file);
if (!ret) {
- /* stop if there are no more files */
- if (++curFileIndex >= numFiles) {
- curFileIndex = 0;
+ /*
+ * if the file doesn't end in a newline, add one
+ * and trigger another read
+ */
+ if (pos != 0) {
+ strcpy(&configBuf[pos], "\n");
+ ret = configBuf;
+ } else
break;
- }
- configLineNo = 0;
- continue;
}
/* search for EOL in the new block of chars */
@@ -338,7 +340,17 @@ again:
}
if (ret == NULL)
{
- return (pushToken = EOF_TOKEN);
+ /*
+ * if necessary, move to the next file and
+ * read the first line
+ */
+ if (curFileIndex + 1 < numFiles) {
+ curFileIndex++;
+ configLineNo = 0;
+ goto again;
+ }
+ else
+ return (pushToken = EOF_TOKEN);
}
configLineNo++;
configPos = 0;