]> jfr.im git - irc/quakenet/snircd.git/blame - include/s_user.h
import of 2.10.12.07
[irc/quakenet/snircd.git] / include / s_user.h
CommitLineData
189935b1 1/** @file s_user.h
2 * @brief Miscellaneous user-related helper functions.
9f8856e9 3 * @version $Id: s_user.h,v 1.20.2.1 2006/02/16 03:49:54 entrope Exp $
189935b1 4 */
5#ifndef INCLUDED_s_user_h
6#define INCLUDED_s_user_h
7#ifndef INCLUDED_sys_types_h
8#include <sys/types.h>
9#define INCLUDED_sys_types_h
10#endif
11
12struct Client;
13struct User;
14struct Channel;
15struct MsgBuf;
16struct Flags;
17
18/*
19 * Macros
20 */
21
22/**
23 * Nick flood limit.
24 * Minimum time between nick changes.
25 * (The first two changes are allowed quickly after another however).
26 */
27#define NICK_DELAY 30
28
29/**
30 * Target flood time.
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.
34 */
35#define TARGET_DELAY 128
36
37/* return values for hunt_server() */
38
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 */
42
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 */
47
48/* used when sending to #mask or $mask */
49
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 */
52
189935b1 53/** Formatter function for send_user_info().
54 * @param who Client being displayed.
55 * @param sptr Client requesting information.
56 * @param buf Message buffer that should receive the response text.
57 */
58typedef void (*InfoFormatter)(struct Client* who, struct Client *sptr, struct MsgBuf* buf);
59
60/*
61 * Prototypes
62 */
63extern struct User* make_user(struct Client *cptr);
64extern void free_user(struct User *user);
9f8856e9 65extern int register_user(struct Client* cptr, struct Client *sptr);
189935b1 66
67extern void user_count_memory(size_t* count_out, size_t* bytes_out);
68
69extern int set_nick_name(struct Client* cptr, struct Client* sptr,
70 const char* nick, int parc, char* parv[]);
71extern void send_umode_out(struct Client* cptr, struct Client* sptr,
72 struct Flags* old, int prop);
73extern int whisper(struct Client* source, const char* nick,
74 const char* channel, const char* text, int is_notice);
75extern void send_user_info(struct Client* to, char* names, int rpl,
76 InfoFormatter fmt);
77
78extern int hide_hostmask(struct Client *cptr, unsigned int flags);
79extern int set_user_mode(struct Client *cptr, struct Client *sptr,
80 int parc, char *parv[]);
81extern int is_silenced(struct Client *sptr, struct Client *acptr);
82extern int hunt_server_cmd(struct Client *from, const char *cmd,
83 const char *tok, struct Client *one,
84 int MustBeOper, const char *pattern, int server,
85 int parc, char *parv[]);
86extern int hunt_server_prio_cmd(struct Client *from, const char *cmd,
87 const char *tok, struct Client *one,
88 int MustBeOper, const char *pattern,
89 int server, int parc, char *parv[]);
90extern struct Client* next_client(struct Client* next, const char* ch);
91extern char *umode_str(struct Client *cptr);
92extern void send_umode(struct Client *cptr, struct Client *sptr,
93 struct Flags *old, int sendset);
94extern void set_snomask(struct Client *, unsigned int, int);
95extern int is_snomask(char *);
96extern int check_target_limit(struct Client *sptr, void *target, const char *name,
97 int created);
98extern void add_target(struct Client *sptr, void *target);
99extern unsigned int umode_make_snomask(unsigned int oldmask, char *arg,
100 int what);
101extern int send_supported(struct Client *cptr);
102
103#define NAMES_ALL 1 /**< List all users in channel */
104#define NAMES_VIS 2 /**< List only visible users in non-secret channels */
105#define NAMES_EON 4 /**< Add an 'End Of Names' reply to the end */
106#define NAMES_DEL 8 /**< Show delayed joined users only */
107
108void do_names(struct Client* sptr, struct Channel* chptr, int filter);
109
110#endif /* INCLUDED_s_user_h */