Working with locks

Submitted by raevnos on Thu, 2004-06-03 14:02

This section is an introduction to dealing with locks: Adding new built-in lock types, evaluating an object's locks, adding or changing individual locks, and so forth.

Overview

The code for locks is located in hdrs/lock.h and src/lock.c. All information about a specific lock is held in a lock_list struct. lock_lists are stored in a linked list sorted by lock name, in a way similar to attributes. The actual key part of a lock, called a boolexp, is handled by hdrs/boolexp.h and src/boolexp.c.

The fields of a lock_list should be accessed via the macros defined in hdrs/lock.h. They are:

L_FLAGS(lock)
The flags of a lock.
L_CREATOR(lock)
The dbref of the player that set the lock.
L_TYPE(lock)
The name of the lock ("Basic", "Enter", etc.)
L_KEY(lock)
The boolexp