DIRECTORY AMFiles USING [], BasicTime USING [GMT, nullGMT], FS USING [OpenFile, FileInfo, Error, Open, nullOpenFile, GetDefaultWDir], Rope USING [Fetch, ROPE]; AMFilesImpl: CEDAR MONITOR -- protects paths IMPORTS FS, Rope EXPORTS AMFiles = BEGIN OPEN Rope; pathPrefixes: PUBLIC LIST OF ROPE _ CONS["///", NIL]; FullFileName: PUBLIC PROC [shortName: ROPE, createTime: BasicTime.GMT _ BasicTime.nullGMT] RETURNS[fullName: ROPE] = { firstChar: CHAR = shortName.Fetch[0]; IF firstChar = '[ OR firstChar = '/ OR firstChar = '< THEN RETURN[shortName]; FOR paths: LIST OF ROPE _ pathPrefixes, paths.rest UNTIL paths = NIL DO fullName _ FS.FileInfo[name: shortName, wantedCreatedTime: createTime, wDir: paths.first ! FS.Error => {fullName _ NIL; CONTINUE}].fullFName; IF fullName = NIL THEN LOOP; RETURN[fullName]; ENDLOOP; fullName _ FS.FileInfo[name: shortName, wantedCreatedTime: createTime, wDir: FS.GetDefaultWDir[] ! FS.Error => {fullName _ NIL; CONTINUE}].fullFName; }; OpenIt: PUBLIC PROC [shortName: ROPE, createTime: BasicTime.GMT _ BasicTime.nullGMT] RETURNS[fullName: ROPE _ NIL, openFile: FS.OpenFile _ FS.nullOpenFile] = { fullName _ FullFileName[shortName, createTime]; IF fullName # NIL THEN openFile _ FS.Open[fullName ! FS.Error => {fullName _ NIL; CONTINUE}]; }; PrependPathPrefix: PUBLIC ENTRY PROC[pathPrefix: ROPE] = {ENABLE UNWIND => NULL; pathPrefixes _ CONS[pathPrefix, pathPrefixes]; }; END. ¦AMFilesImpl.mesa Last Modified On December 12, 1983 10:57 am By Paul Rovner returns NIL if not found procedures for opening symbol and source files (for read) Ê{˜šœ™Jšœ:™:J˜šÏk ˜ Jšœœ˜Jšœ œœ ˜JšœœA˜IJšœœ œ˜——J˜šœ œœÏc˜,Jšœœ˜Jšœ˜J˜—šœœœ˜J˜Jš œœœœœœœ˜5˜J™—šÏn œœ˜Jšœ œœ˜@Jšœ œ˜Jšœ œ˜%Jš œœœœœ ˜Mš œœœœœ œ˜Gšœ˜šœœK˜OJšœœœœ ˜4——Jšœ œœœ˜Jšœ ˜Jšœ˜—šœ˜šœœ@œ˜WJšœœœœ ˜4——Jšœ˜J˜Jšœ9™9—šŸœœ˜Jšœ œœ˜@Jšœ œ œ œ˜JJšœ/˜/šœ ˜Jš œ œœœœ˜K—Jšœ˜—J˜šŸœœœœ œœœœ˜PJšœœ˜.Jšœ˜—J˜—Jšœ˜—…—Œ­