| wbuf_read_buf#(LNUM, OFFSET, N, BUFLEB, WBUF, PROOTADR, PMAXINO, PLOG, PVOL, PLPT, PORPHANS; BUF; ERR) {if LNUM < # PVOL ∧ N ≤ # BUF ∧ OFFSET + N ≤ LEB_SIZE ∧ PVOL[LNUM].mapped? then {apersistence_io_read#(LNUM, OFFSET, 0, N, PROOTADR, PMAXINO, PLOG, PVOL, PLPT, PORPHANS; BUF; ERR); if ERR = ESUCCESS ∧ buffered(LNUM) = BUFLEB ∧ OFFSET ≤ WBUF.offset + WBUF.nbytes ∧ WBUF.offset ≤ OFFSET + N then let BEGINWBUF = (OFFSET ≤ WBUF.offset ⊃ 0;OFFSET - WBUF.offset), BEGINBUF = (OFFSET ≤ WBUF.offset ⊃ WBUF.offset - OFFSET;0) in BUF := copy(WBUF.content, BEGINWBUF, BUF, BEGINBUF, min(N - BEGINBUF, WBUF.nbytes - BEGINWBUF))} else abort } |