| 1 |
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
|
|---|
| 7 |
#ifndef _ATTRIB_H |
|---|
| 8 |
#define _ATTRIB_H |
|---|
| 9 |
|
|---|
| 10 |
#include "mushtype.h" |
|---|
| 11 |
#include "chunk.h" |
|---|
| 12 |
|
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 |
|
|---|
| 16 |
|
|---|
| 17 |
struct attr { |
|---|
| 18 |
char const *name; |
|---|
| 19 |
uint32_t flags; |
|---|
| 20 |
chunk_reference_t data; |
|---|
| 21 |
dbref creator; |
|---|
| 22 |
ATTR *next; |
|---|
| 23 |
}; |
|---|
| 24 |
|
|---|
| 25 |
|
|---|
| 26 |
|
|---|
| 27 |
extern ATTR *aname_hash_lookup(const char *name); |
|---|
| 28 |
extern int alias_attribute(const char *atr, const char *alias); |
|---|
| 29 |
extern void do_attribute_access |
|---|
| 30 |
(dbref player, char *name, char *perms, int retroactive); |
|---|
| 31 |
extern void do_attribute_delete(dbref player, char *name); |
|---|
| 32 |
extern void do_attribute_rename(dbref player, char *old, char *newname); |
|---|
| 33 |
extern void do_attribute_info(dbref player, char *name); |
|---|
| 34 |
extern void do_list_attribs(dbref player, int lc); |
|---|
| 35 |
extern char *list_attribs(void); |
|---|
| 36 |
extern void attr_init_postconfig(void); |
|---|
| 37 |
|
|---|
| 38 |
|
|---|
| 39 |
|
|---|
| 40 |
|
|---|
| 41 |
typedef enum { |
|---|
| 42 |
AE_OKAY = 0, |
|---|
| 43 |
AE_ERROR = -1, |
|---|
| 44 |
AE_SAFE = -2, |
|---|
| 45 |
AE_BADNAME = -3, |
|---|
| 46 |
AE_TOOMANY = -4, |
|---|
| 47 |
AE_TREE = -5, |
|---|
| 48 |
AE_NOTFOUND = -6 |
|---|
| 49 |
} atr_err; |
|---|
| 50 |
|
|---|
| 51 |
extern int good_atr_name(char const *s); |
|---|
| 52 |
extern ATTR *atr_match(char const *string); |
|---|
| 53 |
extern ATTR *atr_sub_branch(ATTR *branch); |
|---|
| 54 |
extern void atr_new_add(dbref thing, char const *RESTRICT atr, |
|---|
| 55 |
char const *RESTRICT s, dbref player, uint32_t flags, |
|---|
| 56 |
uint8_t derefs); |
|---|
| 57 |
extern atr_err atr_add(dbref thing, char const *RESTRICT atr, |
|---|
| 58 |
char const *RESTRICT s, dbref player, uint32_t flags); |
|---|
| 59 |
extern atr_err atr_clr(dbref thing, char const *atr, dbref player); |
|---|
| 60 |
extern atr_err wipe_atr(dbref thing, char const *atr, dbref player); |
|---|
| 61 |
extern ATTR *atr_get(dbref thing, char const *atr); |
|---|
| 62 |
extern ATTR *atr_get_noparent(dbref thing, char const *atr); |
|---|
| 63 |
typedef int (*aig_func) (dbref, dbref, dbref, const char *, ATTR *, void *); |
|---|
| 64 |
extern int atr_iter_get(dbref player, dbref thing, char const *name, |
|---|
| 65 |
int mortal, aig_func func, void *args); |
|---|
| 66 |
extern int atr_iter_get_parent(dbref player, dbref thing, char const *name, |
|---|
| 67 |
int mortal, aig_func func, void *args); |
|---|
| 68 |
extern int atr_pattern_count(dbref player, dbref thing, const char *name, |
|---|
| 69 |
int doparent, int mortal); |
|---|
| 70 |
extern ATTR *atr_complete_match(dbref player, char const *atr, dbref privs); |
|---|
| 71 |
extern void atr_free_all(dbref thing); |
|---|
| 72 |
extern void atr_cpy(dbref dest, dbref source); |
|---|
| 73 |
extern char const *convert_atr(int oldatr); |
|---|
| 74 |
extern int atr_comm_match(dbref thing, dbref player, int type, int end, |
|---|
| 75 |
char const *str, int just_match, char *atrname, |
|---|
| 76 |
char **abp, dbref *errobj); |
|---|
| 77 |
extern int one_comm_match(dbref thing, dbref player, const char *atr, |
|---|
| 78 |
const char *str); |
|---|
| 79 |
extern int do_set_atr(dbref thing, char const *RESTRICT atr, |
|---|
| 80 |
char const *RESTRICT s, dbref player, uint32_t flags); |
|---|
| 81 |
extern void do_atrlock(dbref player, char const *arg1, char const *arg2); |
|---|
| 82 |
extern void do_atrchown(dbref player, char const *arg1, char const *arg2); |
|---|
| 83 |
int string_to_atrflag(dbref player, const char *p, privbits *bits); |
|---|
| 84 |
int string_to_atrflagsets(dbref player, const char *p, privbits *setbits, |
|---|
| 85 |
privbits *clrbits); |
|---|
| 86 |
extern const char *atrflag_to_string(privbits mask); |
|---|
| 87 |
extern void init_atr_name_tree(void); |
|---|
| 88 |
|
|---|
| 89 |
extern int can_read_attr_internal(dbref player, dbref obj, ATTR *attr); |
|---|
| 90 |
extern int can_write_attr_internal(dbref player, dbref obj, ATTR *attr, |
|---|
| 91 |
int safe); |
|---|
| 92 |
extern unsigned const char *atr_get_compressed_data(ATTR *atr); |
|---|
| 93 |
extern char *atr_value(ATTR *atr); |
|---|
| 94 |
extern char * |
|---|
| 95 |
safe_atr_value(ATTR *atr) |
|---|
| 96 |
__attribute_malloc__; |
|---|
| 97 |
|
|---|
| 98 |
|
|---|
| 99 |
#define AF_ODARK 0x1U |
|---|
| 100 |
#define AF_INTERNAL 0x2U |
|---|
| 101 |
#define AF_WIZARD 0x4U |
|---|
| 102 |
#define AF_NUKED 0x8U |
|---|
| 103 |
#define AF_LOCKED 0x10U |
|---|
| 104 |
#define AF_NOPROG 0x20U |
|---|
| 105 |
#define AF_MDARK 0x40U |
|---|
| 106 |
#define AF_PRIVATE 0x80U |
|---|
| 107 |
#define AF_NOCOPY 0x100U |
|---|
| 108 |
#define AF_VISUAL 0x200U |
|---|
| 109 |
#define AF_REGEXP 0x400U |
|---|
| 110 |
#define AF_CASE 0x800U |
|---|
| 111 |
#define AF_SAFE 0x1000U |
|---|
| 112 |
#define AF_ROOT 0x2000U |
|---|
| 113 |
#define AF_UNDEF1 0x4000U |
|---|
| 114 |
#define AF_UNDEF2 0x8000U |
|---|
| 115 |
#define AF_STATIC 0x10000U |
|---|
| 116 |
#define AF_COMMAND 0x20000U |
|---|
| 117 |
#define AF_LISTEN 0x40000U |
|---|
| 118 |
#define AF_NODUMP 0x80000U |
|---|
| 119 |
#define AF_LISTED 0x100000U |
|---|
| 120 |
#define AF_PREFIXMATCH 0x200000U |
|---|
| 121 |
#define AF_VEILED 0x400000U |
|---|
| 122 |
#define AF_DEBUG 0x800000U |
|---|
| 123 |
#define AF_NEARBY 0x1000000U |
|---|
| 124 |
#define AF_PUBLIC 0x2000000U |
|---|
| 125 |
#define AF_ANON 0x4000000U |
|---|
| 126 |
exist in the database */ |
|---|
| 127 |
#define AF_NONAME 0x8000000U |
|---|
| 128 |
#define AF_NOSPACE 0x10000000U |
|---|
| 129 |
#define AF_MHEAR 0x20000000U |
|---|
| 130 |
#define AF_AHEAR 0x40000000U |
|---|
| 131 |
#define AF_UNDEF3 0x80000000U |
|---|
| 132 |
|
|---|
| 133 |
#define AF_MAXVALUE 0x100000000U |
|---|
| 134 |
|
|---|
| 135 |
extern ATTR attr[]; |
|---|
| 136 |
|
|---|
| 137 |
|
|---|
| 138 |
#define AL_ATTR(alist) (alist) |
|---|
| 139 |
#define AL_NAME(alist) ((alist)->name) |
|---|
| 140 |
#define AL_STR(alist) (atr_get_compressed_data((alist))) |
|---|
| 141 |
#define AL_NEXT(alist) ((alist)->next) |
|---|
| 142 |
#define AL_CREATOR(alist) ((alist)->creator) |
|---|
| 143 |
#define AL_FLAGS(alist) ((alist)->flags) |
|---|
| 144 |
#define AL_DEREFS(alist) ((alist)->data?chunk_derefs((alist)->data):0) |
|---|
| 145 |
|
|---|
| 146 |
|
|---|
| 147 |
|
|---|
| 148 |
#define OPAE_SUCCESS 1 |
|---|
| 149 |
|
|---|
| 150 |
#define OPAE_INVALID -1 |
|---|
| 151 |
|
|---|
| 152 |
#define OPAE_TOOMANY -2 |
|---|
| 153 |
|
|---|
| 154 |
#define OPAE_NULL -3 |
|---|
| 155 |
|
|---|
| 156 |
#endif |
|---|