-- Copyright (C) 1984 by Xerox Corporation. All rights reserved.
-- ProfileNoDisk.mesa, HGM, 4-Nov-84 7:54:54
DIRECTORY
Auth USING [Flavor, IdentityHandle],
Profile USING [Qualification],
String USING [AppendChar, AppendString, AppendSubString, Length, SubStringDescriptor];
ProfileNoDisk: PROGRAM
IMPORTS String
EXPORTS Profile =
BEGIN
simple: Auth.IdentityHandle ← NIL;
strong: Auth.IdentityHandle ← NIL;
GetID: PUBLIC PROC [flavor: Auth.Flavor, proc: PROC [id: Auth.IdentityHandle]] =
BEGIN
SELECT flavor FROM
simple => proc[simple];
strong => proc[strong];
ENDCASE => ERROR;
END;
GetUser: PUBLIC PROC [
proc: PROC [name, password: LONG STRING], qualification: Profile.Qualification ← none] =
BEGIN
proc["Foo", "Foo"];
END;
GetDefaultDomain: PUBLIC PROC [proc: PROC [LONG STRING]] = {proc["AlphaServices-PA"]};
GetDefaultOrganization: PUBLIC PROC [proc: PROC [LONG STRING]] = {proc["Xerox"]};
Qualify: PUBLIC PROC [
token, newToken: LONG STRING, qualification: Profile.Qualification] = {
namePart: CARDINAL ← String.Length[token];
currentQual: Profile.Qualification ← none;
octalAddress: BOOLEAN ← TRUE; -- only '0..'7 and '# allowed
ss: String.SubStringDescriptor;
chChar: CHARACTER = ':;
regChar: CHARACTER = '.;
IF String.Length[token] = 0 THEN RETURN;
FOR i: CARDINAL IN [0..token.length) DO
SELECT token[i] FROM
regChar => {namePart ← i; currentQual ← registry}; -- look for last dot
chChar => {namePart ← i; currentQual ← clearinghouse; EXIT}; -- first :
IN['0..'7], '# => NULL;
ENDCASE => octalAddress ← FALSE;
ENDLOOP;
IF currentQual = qualification OR octalAddress THEN {
String.AppendString[newToken, token]; RETURN};
ss ← [base: token, offset: 0, length: namePart];
String.AppendSubString[newToken, @ss];
SELECT qualification FROM
none => NULL;
registry => String.AppendString[newToken, ".PA"];
clearinghouse => {
String.AppendChar[newToken, chChar];
String.AppendString[newToken, "AlphaServices-PA"];
String.AppendChar[newToken, chChar];
String.AppendString[newToken, "Xerox"]};
ENDCASE};
END.