| posix_seek#(FD, WHENCE, USER, ROOT, FS; N, ERR, OFH) {choose E with pre-seek(FD, N, WHENCE, E, USER, ROOT, FS, OFH) in ERR := E; if ERR = ESUCCESS then let FH = OFH[FD] in let FDATA = FS[FH.fid] in {if WHENCE = SEEK_CUR then N := FH.pos + N else if WHENCE = SEEK_END then N := # FDATA.content + N; OFH[FD].pos := N} } |