X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/5df73aebf27f6c3b57a91ecfd504fa6ee367d20a..0e2b222fc14b8f890fab644118cf0f43abbe450a:/lib/rights.h diff --git a/lib/rights.h b/lib/rights.h index f4bf363..c51ca5c 100644 --- a/lib/rights.h +++ b/lib/rights.h @@ -24,6 +24,8 @@ #ifndef RIGHTS_H #define RIGHTS_H +struct queue_entry; + /** @brief User can perform read-only operations */ #define RIGHT_READ 0x00000001 @@ -84,15 +86,30 @@ /** @brief User can modify global preferences */ #define RIGHT_GLOBAL_PREFS 0x00020000 +/** @brief User can pause/resume */ +#define RIGHT_PAUSE 0x00040000 + /** @brief Current rights mask */ -#define RIGHTS__MASK 0x0003ffff +#define RIGHTS__MASK 0x0007ffff + +/** @brief Connection is local + * + * This isn't a rights bit, it's used in @file server.c to limit + * certain commands to local connections. + */ +#define RIGHT__LOCAL 0x80000000 /** @brief Unsigned type big enough for rights */ typedef uint32_t rights_type; -rights_type default_rights(void); char *rights_string(rights_type r); -int parse_rights(const char *s, rights_type *rp); +int parse_rights(const char *s, rights_type *rp, int report); +int right_scratchable(rights_type rights, const char *who, + const struct queue_entry *q); +int right_movable(rights_type rights, const char *who, + const struct queue_entry *q); +int right_removable(rights_type rights, const char *who, + const struct queue_entry *q); #endif /* RIGHTS_H */