Compare commits

...

2 commits

Author SHA1 Message Date
slederer
428fc95481 reclaim: mark end of directory with EndScan flag 2024-10-20 17:30:39 +02:00
slederer
1ca6c13c4b editor: clear input buffer when getting screen size
- not clearing the keyboard buffer could lead to wrong
  results when reading the screen size from terminal
2024-10-20 17:28:19 +02:00
2 changed files with 14 additions and 2 deletions

View file

@ -135,7 +135,11 @@ begin
end;
procedure getScreenSize;
var c:char;
begin
(* empty keyboard buffer *)
while conavail do read(con, c);
GetTermSize(screenW, screenH);
pageSize := screenH - vMargins;
(* set scrolling region - DECSTBM *)
@ -2463,6 +2467,8 @@ begin
close(infile);
end;
open(con, '%RAW', ModeOverwrite);
initScreen;
showScreen;
@ -2471,7 +2477,6 @@ begin
else
statusMsg('Successfully read file. Press F1 for help', false, false);
open(con, '%RAW', ModeOverwrite);
if errorLine > 0 then
begin

View file

@ -323,6 +323,7 @@ begin
(* find next occupied slot *)
occSlotNo := scanDirSlots(volid, freeSlotNo + 1, occSlot, [SlotFirst]);
if occSlotNo <> 0 then
begin
fileExtents := (occSlot.sizeBytes + extentSize - 1) div extentSize;
@ -379,8 +380,14 @@ begin
i := i + fileExtents;
end
else (* no occupied slot found *)
begin
done := true;
(* TODO: mark first free slot of last free region as EndScan *)
(* mark first free slot of last free region as EndScan *)
freeslot.flags := freeslot.flags + [SlotEndScan];
putdirslot(volid, freeSlotNo, freeSlot, error);
if error <> IONoError then
writeln('Error writing dirslot ', clearSlotNo);
end
end
else (* no free slot found *)
done := true;