<<>> <> <> <> DIRECTORY Rope USING [ROPE], UserProfile USING [ProfileChangedProc, ProfileChangeReason]; UserProfileBackdoor: CEDAR DEFINITIONS = BEGIN <<>> <> <<>> GuestProcsRec: TYPE = RECORD [ IsGuestProcess: PROC [] RETURNS [isGuest: BOOL], Boolean: PROC [key: Rope.ROPE, default: BOOLEAN ¬ FALSE] RETURNS [value: BOOLEAN], Number: PROC [key: Rope.ROPE, default: INT ¬ 0] RETURNS [value: INT], Token: PROC [key: Rope.ROPE, default: Rope.ROPE ¬ NIL] RETURNS [value: Rope.ROPE], ListOfTokens: PROC [key: Rope.ROPE, default: LIST OF Rope.ROPE ¬ NIL] RETURNS [value: LIST OF Rope.ROPE], Line: PROC [key: Rope.ROPE, default: Rope.ROPE ¬ NIL] RETURNS [value: Rope.ROPE], GetProfileName: PROC RETURNS [Rope.ROPE], CallWhenProfileChanges: PROC [proc: UserProfile.ProfileChangedProc], ProfileChanged: PROC [reason: UserProfile.ProfileChangeReason] ]; RegisterGuestProcs: PROC [newProcs: REF GuestProcsRec]; END. <<>>