DIRECTORY BasicTime, FS, PFS, PFSNames, Rope, PFSCanonicalNames; PFSTest: CEDAR PROGRAM IMPORTS BasicTime, PFS, FS, PFSCanonicalNames ~ BEGIN PFSEnum: PROC [ path: Rope.ROPE, lbound: Rope.ROPE _ NIL, hbound: Rope.ROPE _ NIL ] RETURNS [files: CARD _ 0, secs: CARD] ~ { eachName: PFS.NameProc ~ { files _ files+1; }; start: BasicTime.GMT _ BasicTime.Now[]; PFS.EnumerateForNames[ PFSCanonicalNames.ParseName[path], eachName, PFSCanonicalNames.ParseName[lbound], PFSCanonicalNames.ParseName[hbound] ]; secs _ BasicTime.Period[start, BasicTime.Now[]]; }; FSEnum: PROC [ path: Rope.ROPE ] RETURNS [files: CARD _ 0, secs: CARD] ~ { eachName: FS.NameProc ~ { files _ files+1; RETURN[TRUE] }; start: BasicTime.GMT _ BasicTime.Now[]; FS.EnumerateForNames[ path, eachName ]; secs _ BasicTime.Period[start, BasicTime.Now[]]; }; PFSInfoEnum: PROC [ path: Rope.ROPE, lbound: Rope.ROPE _ NIL, hbound: Rope.ROPE _ NIL ] RETURNS [files: CARD _ 0, secs: CARD, totalBytes: CARD _ 0] ~ { eachName: PFS.InfoProc ~ { files _ files+1; totalBytes _ totalBytes + bytes }; start: BasicTime.GMT _ BasicTime.Now[]; PFS.EnumerateForInfo[ PFSCanonicalNames.ParseName[path], eachName, PFSCanonicalNames.ParseName[lbound], PFSCanonicalNames.ParseName[hbound] ]; secs _ BasicTime.Period[start, BasicTime.Now[]]; }; FSInfoEnum: PROC [ path: Rope.ROPE ] RETURNS [files: CARD _ 0, secs: CARD, totalBytes: CARD _ 0] ~ { eachName: FS.InfoProc ~ { files _ files+1; totalBytes _ totalBytes + bytes; RETURN[TRUE] }; start: BasicTime.GMT _ BasicTime.Now[]; FS.EnumerateForInfo[ path, eachName ]; secs _ BasicTime.Period[start, BasicTime.Now[]]; }; END. @ PFSTest.mesa Carl Hauser, June 8, 1989 4:08:57 pm PDT Κ»™šœ ™ Icode™(—J™K™šΟk ˜ K˜ K˜K˜K˜ K˜K˜K˜—KšΠlnœ ˜Kšœ&˜-šœ˜K˜šΟnœœœœœœœœ œ œ˜}Kšœ œ!˜.K˜'KšœŒ˜K˜0K˜K˜—š Ÿœœœœ œ œ˜JKšœ œœœ˜:K˜'Kšœ%˜'K˜0Kšœ˜K˜—šŸ œœœ œœœœœ œ œœ ˜—Kšœ œA˜NK˜'Kšœ‹˜ŽK˜0K˜K˜—šŸ œœœœ œ œœ ˜dKš œ œœœœ˜[K˜'Kšœ$˜&K˜0Kšœ˜——K˜Kšœ˜—…—RM