X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=include%2Fs_user.h;h=63ed134d2c52bf193e39799344a673533a2a29f3;hb=refs%2Fheads%2Fupstream;hp=03d3a3934918ee60a5730fb1170e6ef6de160809;hpb=36ab1bb01f9a0f5f630f3098b1afdc5ccc937fa6;p=ircu2.10.12-pk.git diff --git a/include/s_user.h b/include/s_user.h index 03d3a39..63ed134 100644 --- a/include/s_user.h +++ b/include/s_user.h @@ -1,7 +1,6 @@ -/* - * s_user.h - * - * $Id$ +/** @file s_user.h + * @brief Miscellaneous user-related helper functions. + * @version $Id$ */ #ifndef INCLUDED_s_user_h #define INCLUDED_s_user_h @@ -12,19 +11,22 @@ struct Client; struct User; +struct Channel; +struct MsgBuf; +struct Flags; /* * Macros */ -/* - * Nick flood limit +/** + * Nick flood limit. * Minimum time between nick changes. * (The first two changes are allowed quickly after another however). */ #define NICK_DELAY 30 -/* +/** * Target flood time. * Minimum time between target changes. * (MAXTARGETS are allowed simultaneously however). @@ -34,55 +36,65 @@ struct User; /* return values for hunt_server() */ -#define HUNTED_NOSUCH (-1) /* if the hunted server is not found */ -#define HUNTED_ISME 0 /* if this server should execute the command */ -#define HUNTED_PASS 1 /* if message passed onwards successfully */ +#define HUNTED_NOSUCH (-1) /**< if the hunted server is not found */ +#define HUNTED_ISME 0 /**< if this server should execute the command */ +#define HUNTED_PASS 1 /**< if message passed onwards successfully */ -/* used when sending to #mask or $mask */ +/* send sets for send_umode() */ +#define ALL_UMODES 0 /**< both local and global user modes */ +#define SEND_UMODES 1 /**< global user modes only */ +#define SEND_UMODES_BUT_OPER 2 /**< global user modes except for FLAG_OPER */ -#define MATCH_SERVER 1 -#define MATCH_HOST 2 +/* used when sending to #mask or $mask */ -#define COOKIE_VERIFIED 0xffffffff +#define MATCH_SERVER 1 /**< flag for relay_masked_message (etc) to indicate the mask matches a server name */ +#define MATCH_HOST 2 /**< flag for relay_masked_message (etc) to indicate the mask matches host name */ -extern struct SLink *opsarray[]; +/* used for parsing user modes */ +#define ALLOWMODES_ANY 0 /**< Allow any user mode */ +#define ALLOWMODES_DEFAULT 1 /**< Only allow the subset of modes that are legit defaults */ -typedef char* (*InfoFormatter)(struct Client* who, char* buf); +/** Formatter function for send_user_info(). + * @param who Client being displayed. + * @param sptr Client requesting information. + * @param buf Message buffer that should receive the response text. + */ +typedef void (*InfoFormatter)(struct Client* who, struct Client *sptr, struct MsgBuf* buf); /* * Prototypes */ extern struct User* make_user(struct Client *cptr); extern void free_user(struct User *user); -extern int register_user(struct Client* cptr, struct Client* sptr, - const char* nick, char* username); +extern int register_user(struct Client* cptr, struct Client *sptr); extern void user_count_memory(size_t* count_out, size_t* bytes_out); -extern int user_set_away(struct User* user, char* message); -extern int do_nick_name(char* nick); extern int set_nick_name(struct Client* cptr, struct Client* sptr, const char* nick, int parc, char* parv[]); -extern void send_umode_out(struct Client* cptr, struct Client* sptr, int old); +extern void send_umode_out(struct Client* cptr, struct Client* sptr, + struct Flags* old, int prop); extern int whisper(struct Client* source, const char* nick, const char* channel, const char* text, int is_notice); extern void send_user_info(struct Client* to, char* names, int rpl, InfoFormatter fmt); -extern int add_silence(struct Client* sptr, const char* mask); +extern int hide_hostmask(struct Client *cptr, unsigned int flags); extern int set_user_mode(struct Client *cptr, struct Client *sptr, - int parc, char *parv[]); + int parc, char *parv[], int allow_modes); extern int is_silenced(struct Client *sptr, struct Client *acptr); -extern int hunt_server(int, struct Client *cptr, struct Client *sptr, - char *command, int server, int parc, char *parv[]); extern int hunt_server_cmd(struct Client *from, const char *cmd, const char *tok, struct Client *one, int MustBeOper, const char *pattern, int server, int parc, char *parv[]); +extern int hunt_server_prio_cmd(struct Client *from, const char *cmd, + const char *tok, struct Client *one, + int MustBeOper, const char *pattern, + int server, int parc, char *parv[]); extern struct Client* next_client(struct Client* next, const char* ch); extern char *umode_str(struct Client *cptr); -extern void send_umode(struct Client *cptr, struct Client *sptr, int old, int sendmask); -extern int del_silence(struct Client *sptr, char *mask); +extern void send_umode(struct Client *cptr, struct Client *sptr, + struct Flags *old, int sendset); extern void set_snomask(struct Client *, unsigned int, int); extern int is_snomask(char *); extern int check_target_limit(struct Client *sptr, void *target, const char *name, @@ -90,6 +102,13 @@ extern int check_target_limit(struct Client *sptr, void *target, const char *nam extern void add_target(struct Client *sptr, void *target); extern unsigned int umode_make_snomask(unsigned int oldmask, char *arg, int what); +extern int send_supported(struct Client *cptr); + +#define NAMES_ALL 1 /**< List all users in channel */ +#define NAMES_VIS 2 /**< List only visible users in non-secret channels */ +#define NAMES_EON 4 /**< Add an 'End Of Names' reply to the end */ +#define NAMES_DEL 8 /**< Show delayed joined users only */ +void do_names(struct Client* sptr, struct Channel* chptr, int filter); #endif /* INCLUDED_s_user_h */