DIRECTORY BasicTime USING [GMT], CStrings USING [CString], Rope USING [ROPE, Text], PFSNames USING [PATH, Version], UnixErrno, UnixTypes USING [Mode, RES, Stat] ; VUXFiles: CEDAR DEFINITIONS ~ BEGIN GMT: TYPE ~ BasicTime.GMT; ROPE: TYPE ~ Rope.ROPE; Stat: TYPE ~ UnixTypes.Stat; RES: TYPE ~ UnixTypes.RES; Errno: TYPE ~ UnixErrno.Errno; Mode: TYPE ~ UnixTypes.Mode; PATH: TYPE ~ PFSNames.PATH; CString: TYPE ~ CStrings.CString; NotDirectory: ERROR []; CantCreate: ERROR [errno: UnixErrno.Errno]; CantStat: ERROR [errno: UnixErrno.Errno]; FHandle: PRIVATE TYPE = ROPE; DirHandle: TYPE ~ REF DirObject; DirObject: TYPE ~ RECORD [ parent, child, sibling: DirHandle, nameComponent: ROPE, -- u/l case exactly as on server fHandle: FHandle, createMode: Mode, -- default access mode for files created in this directory createModeTTL: CARDINAL, ownerUID: CARD, -- owner of directory itself, refreshed with directory content ownerGID: CARD, -- group of directory itself, refreshed with directory content mode: Mode, -- protection mode of directory itself, refreshed with directory content content: DirEntries, contentMTime: CARD, contentTTL: CARDINAL, contentKnownStale: BOOL, contentLocked: BOOL, contentAvailable: CONDITION, contentGenStarted: INT ¬ 0, contentGenFinished: INT ¬ 0, useCount: CARDINAL, ttl: CARDINAL ]; DirEntries: TYPE ~ REF DirEntriesObject; DirEntriesObject: PUBLIC TYPE ~ RECORD [ leftNode: DirNode ]; DirNode: TYPE ~ REF DirNodeObject; DirNodeObject: TYPE ~ RECORD [ entry: DirEntry, nextPhysical: DirNode ¬ NIL, link: SEQUENCE height: CARDINAL OF DirNode ]; DirEntry: TYPE ~ RECORD [ nameWithoutVersion: ROPE, version: Version, caseOK: BOOL, generation: INT ¬ 0, -- not a valid generation number unixName: Rope.Text ]; DirOpRes: TYPE = RECORD [ status: Errno, file: FHandle, -- valid only if status = ok attributes: Stat -- valid only if status = ok ]; Version: TYPE ~ PFSNames.Version; FixModeForRegularFile: PROC [mode: Mode] RETURNS [Mode]; FixModeForDirectory: PROC [mode: Mode] RETURNS [Mode]; GetModeAccessBits: PROC [mode: Mode] RETURNS [Mode]; UpdateModeAccessBits: PROC [mode: Mode, newAccessBits: Mode] RETURNS [Mode]; InsertDirChild: PROC [dH: DirHandle, childName: ROPE, fHandle: FHandle] RETURNS [dHChild: DirHandle]; PinDirPath: PROC [dH: DirHandle]; UnPinDir: PROC [dH: DirHandle] RETURNS [dHParent: DirHandle]; UnPinDirPath: PROC [dH: DirHandle]; GetDirRoot: PROC [] RETURNS [dH: DirHandle]; CreateSubdirectory: PROC [dH: DirHandle, name: ROPE, desiredMode: Mode] RETURNS [fH: FHandle]; CreateCaseFile: PROC [dh: DirHandle, name: ROPE]; EachDirEntryProc: TYPE ~ PROC [entry: DirEntry] RETURNS [continue: BOOL ¬ TRUE]; EnumerateDirectory: PROC [dH: DirHandle, eachDirEntry: EachDirEntryProc, lowNameWithoutVersion: ROPE, staleOK: BOOL]; GetCreateMode: PROC [dH: DirHandle, forDirectory: BOOL] RETURNS [createMode: Mode]; FollowDirPath: PROC [path: PATH, case: BOOL, create: BOOL] RETURNS [dH: DirHandle ¬ NIL]; GetDirChild: PROC [dH: DirHandle, childName: ROPE, create: BOOL] RETURNS [dHChild: DirHandle, created: BOOL ¬ FALSE]; SweepDirCache: PROC [root: DirHandle, seconds: CARD]; Lookup: PROC [dH: DirHandle, name: ROPE] RETURNS [dirOpRes: DirOpRes, attachedTo: PATH]; GetDirComponent: PROC [path: PATH, pos: INT, smashCase: BOOL] RETURNS [ROPE]; END.  VUXFiles.mesa Copyright Σ 1989, 1991 by Xerox Corporation. All rights reserved. Carl Hauser, September 20, 1989 9:53:42 am PDT Chauser, October 30, 1990 9:42 am PST Willie-s, August 21, 1991 11:25 am PDT Copied Types Errors Local Types File Create Modes Follow Paths Utility ΚR–(cedarcode) style•NewlineDelimiter ™šœ ™ Icodešœ Οeœ7™BK™.K™%K™&J™—šΟk ˜ Kšœ žœžœ˜Kšœ žœ ˜Kšœžœžœ˜Kšœ žœžœ ˜K˜ Kšœ žœžœ˜!Kšœ˜K˜—K˜KšΠlnœžœž ˜šœž˜K˜K˜head™ Kšžœžœ žœ˜Kšžœžœžœ˜Kšœžœ˜Kšžœžœ žœ˜Kšœžœ˜Kšœžœ˜Kšžœžœ žœ˜Kšœ žœ˜!—™KšΟn œžœ˜Kš  œžœ˜+Kš œžœ˜)K˜—™ K˜Kšœ žœžœžœ˜Kšœ žœžœ ˜ šœ žœžœ˜Kšœ"˜"KšœžœΟc ˜5K˜Kšœ‘;˜MKšœžœ˜Kšœ žœ‘>˜NKšœ žœ‘>˜NKšœ ‘H˜TKšœ˜Kšœžœ˜Kšœ žœ˜Kšœžœ˜Kšœžœ˜Kšœž œ˜Kšœžœ˜Kšœžœ˜Kšœ žœ˜Kšœž˜ K˜K˜—Kšœ žœžœ˜(šœžœžœžœ˜(K˜K˜K˜—Kšœ žœžœ˜"šœžœžœ˜Kšœ˜Kšœž˜Kšœžœ žœžœ˜*K˜K˜—šœ žœžœ˜Kšœžœ˜Kšœ˜Kšœžœ˜ Kšœ žœ‘ ˜5K˜K˜K˜—K˜šœ žœžœ˜Kšœ˜Kšœ‘˜+Kšœ‘˜-Kšœ˜K˜K˜—Kšœ žœ˜!K˜—K˜Kš œžœžœ˜8Kš œžœžœ˜6Kš œžœžœ˜4Kš œžœ#žœ˜LK˜Kš œžœžœžœ˜eK˜Kš  œžœ˜!K˜Kš œžœžœ˜=K˜Kš  œžœ˜#K˜Kš  œžœž œ˜-K˜Kš œžœžœžœ˜^K˜Kš œžœžœ˜1K˜Kš œžœžœžœ žœžœ˜PKš œžœHžœ žœ˜uK˜™Kš  œžœžœžœ˜S—™ Kš  œžœžœžœ žœžœžœ˜YK˜Kš  œžœžœ žœžœžœžœ˜uK˜Kš  œžœžœ˜5K˜Kš  œžœžœžœ"žœ˜XK˜—™Kš œžœžœžœ žœžœžœ˜MK˜——Kšžœ˜—…— τb