| apersistence_io_read#(LNUM, OFFSET, N0, N, PROOTADR, PMAXINO, PLOG, PVOL, PLPT, PORPHANS; BUF; ERR) {if LNUM < # PVOL ∧ PVOL[LNUM].mapped? ∧ N0 + N ≤ # BUF ∧ OFFSET + N ≤ LEB_SIZE then {fail_or_success#(; ; ERR); if ERR = ESUCCESS then BUF := copy(PVOL[LNUM].data + mkempbuf(LEB_SIZE - # PVOL[LNUM].data), OFFSET, BUF, N0, N) else choose BUF0 with # BUF0 = # BUF ∧ range=(BUF, 0, BUF0, 0, N0) ∧ range=(BUF, N0 + N, BUF0, N0 + N, # BUF - N0 + N) in BUF := BUF0} else abort } |