-- GrapevineUser: DEFs for updates to the database -- [Indigo]<Grapevine>User>NameUpdateDefs.mesa -- Andrew Birrell August 27, 1982 3:10 pm DIRECTORY BodyDefs USING [Connect, Password, Remark, RName], ProtocolDefs USING [MakeKey, RSOperation], NameInfoDefs USING [Outcome]; NameUpdateDefs: DEFINITIONS IMPORTS ProtocolDefs = BEGIN -- Replicated from ProtocolDefs -- MakeKey: PROC [text: STRING] RETURNS [BodyDefs.Password] = INLINE { RETURN[ProtocolDefs.MakeKey[text]]}; -- Private subroutines -- Update: PRIVATE PROC [ user: BodyDefs.RName, password: BodyDefs.Password, op: ProtocolDefs.RSOperation, target: BodyDefs.RName, value: STRING ← NIL, newPwd: BodyDefs.Password ← [, , , ], reporter: PROC [STRING] ← NIL] RETURNS [NameInfoDefs.Outcome]; -- Creation and Deletion -- CreateIndividual: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, individual: BodyDefs.RName, newPwd: BodyDefs.Password ← [0, 0, 0, 0]] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, CreateIndividual, individual, NIL, newPwd]]}; DeleteIndividual: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, individual: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, DeleteIndividual, individual]]}; CreateGroup: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, group: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, CreateGroup, group]]}; DeleteGroup: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, group: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, DeleteGroup, group]]}; -- Updates to single-valued components -- SetPassword: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, individual: BodyDefs.RName, newPwd: BodyDefs.Password] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, ChangePassword, individual, NIL, newPwd]]}; SetConnect: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, individual: BodyDefs.RName, connect: BodyDefs.Connect] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, ChangeConnect, individual, connect]]}; SetRemark: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, group: BodyDefs.RName, remark: BodyDefs.Remark] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, ChangeRemark, group, remark]]}; -- Adding to list-valued components -- AddMailbox: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, individual: BodyDefs.RName, site: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, AddMailBox, individual, site]]}; AddForward: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, individual: BodyDefs.RName, dest: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, AddForward, individual, dest]]}; AddMember: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, group: BodyDefs.RName, member: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, AddMember, group, member]]}; AddOwner: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, group: BodyDefs.RName, owner: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, AddOwner, group, owner]]}; AddFriend: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, group: BodyDefs.RName, friend: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, AddFriend, group, friend]]}; -- Removing from list-valued components -- RemoveMailbox: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, individual: BodyDefs.RName, site: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, DeleteMailBox, individual, site]]}; RemoveForward: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, individual: BodyDefs.RName, dest: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, DeleteForward, individual, dest]]}; RemoveMember: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, group: BodyDefs.RName, member: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, DeleteMember, group, member]]}; RemoveOwner: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, group: BodyDefs.RName, owner: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, DeleteOwner, group, owner]]}; RemoveFriend: PROC [ user: BodyDefs.RName, password: BodyDefs.Password, group: BodyDefs.RName, friend: BodyDefs.RName] RETURNS [NameInfoDefs.Outcome] = INLINE { RETURN[Update[user, password, DeleteFriend, group, friend]]}; END.