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