<> <> 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. <<>>