From e4aca9f6f9a3c110ae48526fdd52d79780ac5186 Mon Sep 17 00:00:00 2001 From: Ivan Sukin Date: Fri, 11 Nov 2016 22:14:06 +0300 Subject: [PATCH 1/4] ReadString and ReadLine from Files module now set the trailing 0X --- src/system/Files.Mod | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/system/Files.Mod b/src/system/Files.Mod index 7aeee5ac..a007f934 100644 --- a/src/system/Files.Mod +++ b/src/system/Files.Mod @@ -636,7 +636,8 @@ Especially Length would become fairly complex. PROCEDURE ReadString* (VAR R: Rider; VAR x: ARRAY OF CHAR); VAR i: INTEGER; ch: CHAR; BEGIN i := 0; - REPEAT Read(R, ch); x[i] := ch; INC(i) UNTIL ch = 0X + REPEAT Read(R, ch); x[i] := ch; INC(i) UNTIL ch = 0X; + x[i] := 0X; END ReadString; PROCEDURE ReadLine* (VAR R: Rider; VAR x: ARRAY OF CHAR); @@ -652,7 +653,8 @@ Especially Length would become fairly complex. x[i] := ch; INC(i); END; - UNTIL b + UNTIL b; + x[i] := 0X; END ReadLine; PROCEDURE ReadNum* (VAR R: Rider; VAR x: LONGINT); From 7d4815e2ae1ca5786d647ad88dac39b622d68a80 Mon Sep 17 00:00:00 2001 From: Ivan Sukin Date: Fri, 11 Nov 2016 22:27:06 +0300 Subject: [PATCH 2/4] ReadString and ReadLine from Files module now adjusts Rider --- src/system/Files.Mod | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/system/Files.Mod b/src/system/Files.Mod index a007f934..9c59b08d 100644 --- a/src/system/Files.Mod +++ b/src/system/Files.Mod @@ -634,17 +634,19 @@ Especially Length would become fairly complex. END ReadLReal; PROCEDURE ReadString* (VAR R: Rider; VAR x: ARRAY OF CHAR); - VAR i: INTEGER; ch: CHAR; - BEGIN i := 0; + VAR i: INTEGER; ch: CHAR; pos: LONGINT; + BEGIN i := 0; pos := Pos(R); REPEAT Read(R, ch); x[i] := ch; INC(i) UNTIL ch = 0X; x[i] := 0X; + IF ~R.eof THEN Set(R, R.buf.f, pos + i + 1); END; END ReadString; PROCEDURE ReadLine* (VAR R: Rider; VAR x: ARRAY OF CHAR); - VAR i: INTEGER; ch: CHAR; b : BOOLEAN; + VAR i: INTEGER; ch: CHAR; b : BOOLEAN; pos: LONGINT; BEGIN i := 0; b := FALSE; + pos := Pos(R); REPEAT Read(R, ch); IF ((ch = 0X) OR (ch = 0AX) OR (ch = 0DX)) THEN @@ -655,6 +657,7 @@ Especially Length would become fairly complex. END; UNTIL b; x[i] := 0X; + IF ~R.eof THEN Set(R, R.buf.f, pos + i + 1); END; END ReadLine; PROCEDURE ReadNum* (VAR R: Rider; VAR x: LONGINT); From 9c5320aee532d73d34946d9dd8782842b5551e6d Mon Sep 17 00:00:00 2001 From: Ivan Sukin Date: Sat, 12 Nov 2016 02:07:59 +0400 Subject: [PATCH 3/4] Update Files.Mod --- src/system/Files.Mod | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/system/Files.Mod b/src/system/Files.Mod index 9c59b08d..dce692c5 100644 --- a/src/system/Files.Mod +++ b/src/system/Files.Mod @@ -642,14 +642,19 @@ Especially Length would become fairly complex. END ReadString; PROCEDURE ReadLine* (VAR R: Rider; VAR x: ARRAY OF CHAR); - VAR i: INTEGER; ch: CHAR; b : BOOLEAN; pos: LONGINT; + VAR i: INTEGER; ch: CHAR; b : BOOLEAN; pos: LONGINT; tail: INTEGER; BEGIN i := 0; b := FALSE; - pos := Pos(R); + pos := Pos(R); + tail := 0; REPEAT Read(R, ch); IF ((ch = 0X) OR (ch = 0AX) OR (ch = 0DX)) THEN + IF (ch = 0X) THEN + tail := 1; + ELSE + tail := Strings.Length(Platform.nl); b := TRUE ELSE x[i] := ch; @@ -657,7 +662,7 @@ Especially Length would become fairly complex. END; UNTIL b; x[i] := 0X; - IF ~R.eof THEN Set(R, R.buf.f, pos + i + 1); END; + IF ~R.eof THEN Set(R, R.buf.f, pos + i + tail); END; END ReadLine; PROCEDURE ReadNum* (VAR R: Rider; VAR x: LONGINT); From d9a56a7d495dabc175e37f5bfb810109442bd2ec Mon Sep 17 00:00:00 2001 From: Ivan Sukin Date: Sat, 12 Nov 2016 02:09:21 +0400 Subject: [PATCH 4/4] Update Files.Mod --- src/system/Files.Mod | 1 + 1 file changed, 1 insertion(+) diff --git a/src/system/Files.Mod b/src/system/Files.Mod index dce692c5..1d6ea549 100644 --- a/src/system/Files.Mod +++ b/src/system/Files.Mod @@ -655,6 +655,7 @@ Especially Length would become fairly complex. tail := 1; ELSE tail := Strings.Length(Platform.nl); + END; b := TRUE ELSE x[i] := ch;