#define CAPFL_PROHIBIT 0x0002 /**< Client may not set this capability */ #define CAPFL_PROTO 0x0004 /**< Cap must be acknowledged by client */ #define CAPFL_STICKY 0x0008 /**< Cap may not be cleared once set */ typedef int (*bqcmp)(const void *, const void *); static struct capabilities { unsigned int cap; unsigned int flags; const char *name; size_t namelen; } capab_list[] = { #define _CAP(cap, flags, name) \ { (cap), (flags), (name), sizeof(name) - 1 } _CAP(CAP_UHNAMES, 0, "userhost-in-names"), _CAP(CAP_MULTI_PREFIX, 0, "multi-prefix"), _CAP(CAP_AWAY_NOTIFY, 0, "away-notify"), _CAP(CAP_EXTENDED_JOIN, 0, "extended-join"), _CAP(CAP_ACCOUNT_NOTIFY, 0, "account-notify"), _CAP(CAP_INVITE_NOTIFY, 0, "invite-notify"), _CAP(CAP_CHGHOST, 0, "chghost") #undef _CAP }; #define CAPAB_LIST_LEN (sizeof(capab_list) / sizeof(struct capabilities)) static int capab_sort(const struct capabilities *cap1, const struct capabilities *cap2) { return strcasecmp(cap1->name, cap2->name);
#define CAPFL_PROHIBIT 0x0002 /**< Client may not set this capability */ #define CAPFL_PROTO 0x0004 /**< Cap must be acknowledged by client */ #define CAPFL_STICKY 0x0008 /**< Cap may not be cleared once set */ typedef int (*bqcmp)(const void *, const void *); static struct capabilities { unsigned int cap; unsigned int flags; const char *name; size_t namelen; } capab_list[] = { #define _CAP(cap, flags, name) \ { (cap), (flags), (name), sizeof(name) - 1 } _CAP(CAP_MULTI_PREFIX, 0, "multi-prefix"), _CAP(CAP_AWAY_NOTIFY, 0, "away-notify") #undef _CAP }; #define CAPAB_LIST_LEN (sizeof(capab_list) / sizeof(struct capabilities)) static int capab_sort(const struct capabilities *cap1, const struct capabilities *cap2) { return strcasecmp(cap1->name, cap2->name); } static int capab_search(const char *key, const struct capabilities *cap) {
#define CAPFL_PROHIBIT 0x0002 /**< Client may not set this capability */ #define CAPFL_PROTO 0x0004 /**< Cap must be acknowledged by client */ #define CAPFL_STICKY 0x0008 /**< Cap may not be cleared once set */ typedef int (*bqcmp)(const void *, const void *); static struct capabilities { unsigned int cap; unsigned int flags; const char *name; size_t namelen; } capab_list[] = { #define _CAP(cap, flags, name) \ { (cap), (flags), (name), sizeof(name) - 1 } _CAP(CAP_MULTI_PREFIX, 0, "multi-prefix") #undef _CAP }; #define CAPAB_LIST_LEN (sizeof(capab_list) / sizeof(struct capabilities)) static int capab_sort(const struct capabilities *cap1, const struct capabilities *cap2) { return strcasecmp(cap1->name, cap2->name); } static int capab_search(const char *key, const struct capabilities *cap) { const char *rb = cap->name;