diff --git a/progs/editor.pas b/progs/editor.pas index a82d51b..4997bcc 100644 --- a/progs/editor.pas +++ b/progs/editor.pas @@ -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 diff --git a/progs/reclaim.pas b/progs/reclaim.pas index ea27b5f..6c3584d 100644 --- a/progs/reclaim.pas +++ b/progs/reclaim.pas @@ -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;