2 * @brief Miscellaneous user-related helper functions.
5 #ifndef INCLUDED_s_user_h
6 #define INCLUDED_s_user_h
7 #ifndef INCLUDED_sys_types_h
9 #define INCLUDED_sys_types_h
24 * Minimum time between nick changes.
25 * (The first two changes are allowed quickly after another however).
31 * Minimum time between target changes.
32 * (MAXTARGETS are allowed simultaneously however).
33 * Its set to a power of 2 because we devide through it quite a lot.
35 #define TARGET_DELAY 128
37 /* return values for hunt_server() */
39 #define HUNTED_NOSUCH (-1) /**< if the hunted server is not found */
40 #define HUNTED_ISME 0 /**< if this server should execute the command */
41 #define HUNTED_PASS 1 /**< if message passed onwards successfully */
43 /* send sets for send_umode() */
44 #define ALL_UMODES 0 /**< both local and global user modes */
45 #define SEND_UMODES 1 /**< global user modes only */
46 #define SEND_UMODES_BUT_OPER 2 /**< global user modes except for FLAG_OPER */
48 /* used when sending to #mask or $mask */
50 #define MATCH_SERVER 1 /**< flag for relay_masked_message (etc) to indicate the mask matches a server name */
51 #define MATCH_HOST 2 /**< flag for relay_masked_message (etc) to indicate the mask matches host name */
53 /* used for parsing user modes */
54 #define ALLOWMODES_ANY 0 /**< Allow any user mode */
55 #define ALLOWMODES_DEFAULT 1 /**< Only allow the subset of modes that are legit defaults */
57 /** Formatter function for send_user_info().
58 * @param who Client being displayed.
59 * @param sptr Client requesting information.
60 * @param buf Message buffer that should receive the response text.
62 typedef void (*InfoFormatter)(struct Client* who, struct Client *sptr, struct MsgBuf* buf);
67 extern struct User* make_user(struct Client *cptr);
68 extern void free_user(struct User *user);
69 extern int register_user(struct Client* cptr, struct Client *sptr);
71 extern void user_count_memory(size_t* count_out, size_t* bytes_out);
73 extern int set_nick_name(struct Client* cptr, struct Client* sptr,
74 const char* nick, int parc, char* parv[]);
75 extern void send_umode_out(struct Client* cptr, struct Client* sptr,
76 struct Flags* old, int prop);
77 extern int whisper(struct Client* source, const char* nick,
78 const char* channel, const char* text, int is_notice);
79 extern void send_user_info(struct Client* to, char* names, int rpl,
82 extern int hide_hostmask(struct Client *cptr, unsigned int flags);
83 extern int set_user_mode(struct Client *cptr, struct Client *sptr,
84 int parc, char *parv[], int allow_modes);
85 extern int is_silenced(struct Client *sptr, struct Client *acptr);
86 extern int hunt_server_cmd(struct Client *from, const char *cmd,
87 const char *tok, struct Client *one,
88 int MustBeOper, const char *pattern, int server,
89 int parc, char *parv[]);
90 extern int hunt_server_prio_cmd(struct Client *from, const char *cmd,
91 const char *tok, struct Client *one,
92 int MustBeOper, const char *pattern,
93 int server, int parc, char *parv[]);
94 extern struct Client* next_client(struct Client* next, const char* ch);
95 extern char *umode_str(struct Client *cptr);
96 extern void send_umode(struct Client *cptr, struct Client *sptr,
97 struct Flags *old, int sendset);
98 extern void set_snomask(struct Client *, unsigned int, int);
99 extern int is_snomask(char *);
100 extern int check_target_limit(struct Client *sptr, void *target, const char *name,
102 extern void add_target(struct Client *sptr, void *target);
103 extern unsigned int umode_make_snomask(unsigned int oldmask, char *arg,
105 extern int send_supported(struct Client *cptr);
107 #define NAMES_ALL 1 /**< List all users in channel */
108 #define NAMES_VIS 2 /**< List only visible users in non-secret channels */
109 #define NAMES_EON 4 /**< Add an 'End Of Names' reply to the end */
110 #define NAMES_DEL 8 /**< Show delayed joined users only */
112 void do_names(struct Client* sptr, struct Channel* chptr, int filter);
114 #endif /* INCLUDED_s_user_h */