| vfs_seek#(FD, WHENCE, USER, DIRS, FILES, ASYNCED; N, ERR, OF) {ERR := ESUCCESS; if ¬ FD ∈ OF then ERR := EBADFD else {if WHENCE = SEEK_CUR then N := OF[FD].pos + N else if WHENCE = SEEK_END then choose INODE with true in {afs_iget#(OF[FD].ino, DIRS, FILES, ASYNCED; INODE, ERR); if ERR = ESUCCESS then N := INODE.size + N}; if ERR = ESUCCESS then OF[FD].pos := N} } |