DIRECTORY Atom USING [GetPName], DefaultRegistry, Rope USING [Cat, Concat, Find, Substr], UserCredentials USING [Get], UserProfile USING [Token]; DefaultRegistryImpl: CEDAR PROGRAM IMPORTS Atom, Rope, UserCredentials, UserProfile EXPORTS DefaultRegistry ~ { OPEN DefaultRegistry; MakeRegistryExplicit: PUBLIC PROC [in: ROPE, packages: LIST OF ATOM _ LIST [$Default], defaultDefault: ROPE _ UsersRegistry[]] RETURNS [out: ROPE] ~ { IF Rope.Find[in, "."] # -1 THEN out _ in ELSE out _ Rope.Cat[in, ".", GetDefaultRegistry[packages, defaultDefault]]; }; GetDefaultRegistry: PUBLIC PROC [packages: LIST OF ATOM _ LIST [$Default], defaultDefault: ROPE _ UsersRegistry[]] RETURNS [registry: ROPE] ~ { packageList: LIST OF ATOM _ packages; WHILE packageList # NIL DO ext: ROPE _ UserProfile.Token[Rope.Concat[Atom.GetPName[packageList.first], ".DefaultRegistry"]]; --Get profile entry for it, if exists IF ext#NIL THEN RETURN[ext]; --Return it if good, else try again packageList _ packageList.rest; --Remove first atom from list ENDLOOP; RETURN[defaultDefault]; }; UsersRegistry: PUBLIC PROC RETURNS [registry: ROPE] ~ { credentials: ROPE _ UserCredentials.Get[].name; registry _ Rope.Substr[base: credentials, start: Rope.Find[credentials, "."]+1]; }; }. XDefaultRegistryImpl.mesa Created Thursday, June 14, 1984 4:58:18 pm PDT Eric Nickell, June 15, 1984 4:53:39 pm PDT Does the obvious. If 'in' has a period in it, then it just returns that. Otherwise, it will look in the user profile for entries of the form 'UserExtension.x: extension', where the x's come from the list of ropes (packages), and extension is the extension that will be appended. If there is no appropriate user profile entry, the defaultDefault is used. Tells you what the default extension would be for the packages listed. Returns the extension of the current CEDAR user. ĘÁ˜šœ™Jšœ.™.J™*J™—šĎk ˜ Jšœœ ˜J˜Jšœœ˜'Jšœœ˜Jšœ œ ˜J˜—šœœ˜"Jšœ)˜0Jšœ˜Jšœ˜Jšœ˜—J˜šĎnœœœœ œœœœœœœ˜–J™ĺJšœœ ˜(JšœG˜KJ˜J˜—šžœœœ œœœœœœ œ˜J™FJšœ œœœ ˜%šœœ˜JšœœYĎc%˜‡Jš œœœœ Ÿ#˜FJšœ&Ÿ˜CJšœ˜—Jšœ˜Jšœ˜—š ž œœœœ œ˜7J™0Jšœ œ˜/J˜PJ˜J˜—J˜—…—ô