1
0
mirror of https://github.com/anope/anope.git synced 2026-07-02 04:06:39 +02:00

BUILD : 1.7.5 (335) BUGS : 142, 152, 154, 155, 156, 157, 158 NOTES : Applied bugfix bundle patch from Trystan.

git-svn-id: svn://svn.anope.org/anope/trunk@335 31f1291d-b8d6-0310-a050-a5561fc1590b


git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@211 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b
2004-08-26 14:26:06 +00:00
parent b05797bb10
commit 5c3ee8a19a
42 changed files with 2149 additions and 613 deletions
+9
View File
@@ -6,6 +6,15 @@ Provided by Anope Dev. <dev@anope.org> - 2004
Provided by Trystan <trystan@nomadirc.net> - 2004
08/23 A New protocol independent design (aka anope-capab). [ #00]
08/28 A New IRCD document for adding new ircd support to new design. [ #00]
08/28 F Channel registration handling for non chanops. [#142]
08/28 F Protection from accessing unavailable struct data. [#152]
08/28 F Rage2 mode +M/+A channel support. [#154]
08/28 F Rage2 Beta6 support. [#155]
08/28 F Undefined references on botserv.c upon compilation. [#156]
08/28 F Memory leaks taken care of. [#157]
08/28 F Buffer preparation for vsnprintf() call. [#158]
Anope Version 1.7.5
-------------------
+7
View File
@@ -2,6 +2,13 @@ Anope Version S V N
-------------------
*** New Strings:
CHAN_REGISTER_NONE_CHANNEL
CHAN_SYMBOL_REQUIRED
OPER_SVSNICK_UNSUPPORTED
OPER_SQLINE_UNSUPPORTED
OPER_SVSO_UNSUPPORTED
OPER_UMODE_UNSUPPORTED
*** Mod Strings:
*** Del Strings:
+1 -1
View File
@@ -220,7 +220,7 @@ echo " 5) UltimateIRCd 3.0.0 [alpha26 or later]"
echo " 6) Hybrid IRCd 7.0 [experimental]"
echo " 7) ViagraIRCd 1.3.x [or later]"
echo " 8) PTlink 6.15.0 [experimental]"
echo " 9) RageIRCd 2.0 [beta-3 or later]"
echo " 9) RageIRCd 2.0.0 [beta-6 or later]"
echo " 10) Unreal 3.2 [Unreal 3.2 beta19 or later]"
+8 -10
View File
@@ -191,24 +191,22 @@ AC_ARG_WITH(ircd, [ --with-ircd=ircd Specify the first ircd type], [
elif test "$withval" = "IRC_BAHAMUT"; then
AC_DEFINE(IRC_BAHAMUT,1,"First IRCD type")
elif test "$withval" = "IRC_UNREAL"; then
AC_DEFINE(IRC_DREAMFORGE,1,"First IRCD type")
AC_DEFINE(IRC_UNREAL,1,"Second IRCD type")
AC_DEFINE(IRC_UNREAL31,1,"First IRCD type")
elif test "$withval" = "IRC_ULTIMATE"; then
AC_DEFINE(IRC_DREAMFORGE,1,"First IRCD type")
AC_DEFINE(IRC_ULTIMATE,1,"Second IRCD type")
AC_DEFINE(IRC_ULTIMATE,1,"First IRCD type")
elif test "$withval" = "IRC_ULTIMATE3"; then
AC_DEFINE(IRC_DREAMFORGE,1,"First IRCD type")
AC_DEFINE(IRC_ULTIMATE3,1,"Second IRCD type")
AC_DEFINE(IRC_ULTIMATE3,1,"First IRCD type")
elif test "$withval" = "IRC_HYBRID"; then
AC_DEFINE(IRC_HYBRID,1,"First IRCD type")
elif test "$withval" = "IRC_VIAGRA"; then
AC_DEFINE(IRC_BAHAMUT,1,"First IRCD type")
AC_DEFINE(IRC_VIAGRA,1,"Second IRCD type")
AC_DEFINE(IRC_VIAGRA,1,"First IRCD type")
elif test "$withval" = "IRC_PTLINK"; then
AC_DEFINE(IRC_PTLINK,1,"First IRCD type")
elif test "$withval" = "IRC_RAGE2"; then
AC_DEFINE(IRC_BAHAMUT,1,"First IRCD type")
AC_DEFINE(IRC_RAGE2,1,"Second IRCD type")
AC_DEFINE(IRC_RAGE2,1,"First IRCD type")
elif test "$withval" = "IRC_UNREAL32"; then
AC_DEFINE(IRC_UNREAL32,1,"First IRCD type")
fi
])
+309
View File
@@ -0,0 +1,309 @@
HOW TO ADD IRCD SUPPORT
1. Files to edit
2. Structure
3. Functions / Events
4. CAPAB/PROTOCTL
1. FILES TO EDIT
When preparing to add support to Anope for your ircd, you need to edit the
following files.
A. Make a copy of the .c and .h file of the IRCD that closely matches the ircd
that you are attempting to add support for.
B. Make a backup copy of services.h
C. Make a backup copy of Config, and src/Makefile
2. STRUCTURE
To allow for easy code change to support your ircd. There are two structs that
make up the simplest variables to allow you to quickly change out your ircd
without much work.
IRCDVar ircd[] = { }
This contains your basic ircd functions, here is a brief description of the
usage of each.
1. Name : this member tells Anope about the ircds name, it may contain text about its
name and version. This is used to identify the build on startup.
2. NickServ Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
3. ChanServ Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
4. MemoServ Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
5. HostServ Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag. - note if your ircd does not support hostserv,
you can make this NULL or +, as there is a check used before bringing hostserv online
6. OperServ Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
7. BotServ Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
8. HelpServ Mode : this is the user mode set by Anope, normally you want this to be a
some form of helper flag, or service flag.
9. Dev/Null Mode : this is the user mode set by Anope, normally you want this to be a
some form of user flag, or service flag.
10. Global Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
11. NickServ Alias Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
12. ChanServ Alias Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
13. MemoServ Alias Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
14. HostServ Alias Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag. - note if your ircd does not support hostserv,
you can make this NULL or +, as there is a check used before bringing hostserv online
15. OperServ Alias Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
16. BotServ Alias Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
17. HelpServ Alias Mode : this is the user mode set by Anope, normally you want this to be a
some form of helper flag, or service flag.
18. Dev/Null Alias Mode : this is the user mode set by Anope, normally you want this to be a
some form of user flag, or service flag.
19. Global Alias Mode : this is the user mode set by Anope, normally you want this to be a
some form of oper flag, or service flag.
20. BotServ's Bots Mode : this is the user mode set by Anope, normally you want this to be a
some form of service flag, you can use + for no mode at all
20. Max Channel Mode Symbols : this is the total number of possible, channel modes that can
appears before a nick. Remember to count each possible mode, so +ov is 2
21. Modes to Remove : this is every mode that Anope should remove when stripping channel modes
22. Mode used by BotServ bots : When a BotServ bot joins a channel, this is the mode set on them
normally you want them to protected and oped (+o)
23. SVSNICK : can the ircd use svsnick to change someones nick, otherwise kill is used, 1 = yes
0 = no
24. VHOST : can change a users host on the fly - enabling this will allow hostserv online, 1 = yes
0 = no
25. OWNER : has a channel umode for owning the channel, example Unreal has +q, 1 = yes
0 = no
26. OWNER MODE SET : what mode to set to make someone the owner, if the ircd doesn't support owners, set
this to NULL
27. OWNER MODE UNSET : what mode to unset to take away someone as owner, if the ircd doesn't support
owners, set this to NULL
28. Mode on Nick Register : what mode to set on NickServ registration if your ircd doesn't set a mode, set
this to NULL
29. Mode on Nick Unregister : what mode to set on NickServ unregistration if your ircd doesn't set a mode, set
this to NULL
30. Mode on Nick Change : what mode to set on nick change if your ircd doesn't set a mode, set
this to NULL
31. SGLINE : realname (geocs) bans, 1 = yes 0 = no
32. SQLINE : nick bans, 1 = yes 0 = no
33. SZLINE : szline bans, 1 = yes 0 = no
34. HALFOP : channel mode +h, 1 = yes 0 = no
35. Number of Server Args : when an ircd connects this is the number of parameters that are passed
36. Join to Set : services must join the channel to set modes, 1 = yes 0 = no
37. Join to Message : services must join the channel to send messages (can not override +n), 1 = yes 0 = no
38. Exceptions : channel mode +e, 1 = yes 0 = no
39. Time Stamp on topics Forward : Unreal ircds like their topic ts set forward by +1, 1 = yes 0 = no
40. Time Stamp on topics backwards : old dreamforge likes their topics with a ts that is set back by -1, 1 = yes 0 = no
41. Protected Umode : UMODE_ that defines the protected Umode, 0 = no, or the UMODE_
42. Admin : channel admin (Ultimate ircds), 1 = yes 0 = no
43. SQline Channels : sqline to ban channel names, 1 = yes 0 = no
44. Quit On Kill : when a user is killed a quit message is sent, 1 = yes 0 = no
45. SVSMODE -b : can use svsmode to unban addresses, 1 = yes 0 = no
46. Protect : channel protect +a (Unreal/Viagra ircds), 1 = yes 0 = no
47. Reverse : can do a reverse check when unbanning, dreamforge based ircds, 1 = yes 0 = no
48. Register Channels : supports setting a channel as registered, 1 = yes 0 = no
49. Registered Mode : mode to set set when registered CMODE_ , 0 = No
50. vident : vhost a users ident, 1 = yes 0 = no
51. svshold : instead of svsnick or kill, we can hold the nick, 1 = yes 0 = no
52. timestamp on mode : needs to send time stamp when modes are changed, 1 = yes 0 = no
53. NICKIP : on NICK the users IP address is sent, 1 = yes 0 = no
54. Umode : can use OperServ to change a users mode, 1 = yes 0 = no
55. O:line : can use OperServ to give a temp oline, 1 = yes 0 = no
56. Vhost On Nick : on NICK it sends the VHOST, 1 = yes 0 = no
57. Change Realname : change real name, 1 = yes 0 = no
58. Extra Help : if the ircd has more help use the language file value here, 0 = no
59. No Knock : CMODE_ that defines NO KNOCK, 0 = no
60. Admin Only : CMODE_ that defines Admin Only, 0 = no
61. Default Mlock : modes to default the mlock to, 0 = no
62. Vhost Umode : UMODE_ that defines vhost is enabled, 0 = no
63. Flood Mode : has flood mode, 1 = yes 0 = no
64. Link Mode : has linked mode, 1 = yes 0 = no
65. Cmode F : CMODE_ that defines flood mode, 0 = no
66. Cmode L : CMODE_ that defines Linked Mode, 0 = no
IRCDCAPAB ircdcap[] = { }
This struct is based of the CAPAB defines, you should review the the CAPAB table
below for how this to be done.
3. FUNCTIONS AND EVENTS
A brief word about functions and events. All events are captured via the
void moduleAddIRCDMsgs(void) {
m = createMessage("NICK", anope_event_nick);
addCoreMessage(IRCD,m);
}
Each event should have a event handler if its important enough to process by services.
All event functions should be formed like so
int anope_event_capab(char *source, int ac, char **av)
{
return MOD_CONT;
}
they will receive the source, this can be NULL at times depending on the event. AC is the
number of arguments that are in the event. and AV holds the values for each, so av[0] is
the first variable. Events are likely to pass to various upper level event handlers, see
the previous ircd source for how they handle these events.
All commands are formed like so
void anope_cmd_svsnoop(char *server, int set)
{
send_cmd(NULL, "SVSNOOP %s %s", server, (set ? "+" : "-"));
}
they may take any number of arguments, and come to a send_cmd() this root function is how
commands are sent to the ircd.
4. CAPAB/PROTOCTL
Most IRCD send a CAPAB or PROTOCTL line so that they can work out what each is
capable of doing. Anope has a function to read these lines and set itself up
to to hand these events better. When adding support for your ircd. Take the
following steps
1. in the ircd.c find the function anope_cmd_capab() this function will send
the CAPAB/PROTOCTL line (consult your ircd documentation for which to send)
then in a single line type in the tokens that anope must send. Here is an
example of Hybrid's capab line
/* CAPAB */
void anope_cmd_capab()
{
send_cmd(NULL, "CAPAB TS5 EX IE HOPS HUB AOPS");
}
2. in the ircd.h file make sure to place the defines (see below) that match your
ircds tokens, only use the ones that matter to your ircd. Should your ircd add
new features not covered in the defined, please contact the Anope Dev team
before doing so.
3. Ensure that the CAPAB/PROTOCTL event his handled correctly.
a. in the function "moduleAddIRCDMsgs" making sure that you have the following
two lines
m = createMessage("CAPAB", anope_event_capab);
addCoreMessage(IRCD,m);
b. Add the function to handle the event
int anope_event_capab(char *source, int ac, char **av)
{
capab_parse(ac, av);
return MOD_CONT;
}
this function
Define Table
======================================================================================================
DEFINE WORD | VALUE | TOKEN | IRCD Meaning
======================================================================================================
CAPAB_NOQUIT | 0x00000001 | NOQUIT | Supports NOQUIT
CAPAB_TSMODE | 0x00000002 | TS | Channel modes are TimeStamped (normal sent during PASS)
CAPAB_UNCONNECT | 0x00000004 | UNCONNECT | Supports UNCONNECT
CAPAB_NICKIP | 0x00000008 | NICKIP | IP in the NICK line
CAPAB_NSJOIN | 0x00000010 | SSJOIN | smart sjoin SSJOIN
CAPAB_ZIP | 0x00000020 | ZIP | server supports gz'd links
CAPAB_BURST | 0x00000040 | BURST | server supports BURST command
CAPAB_TS3 | 0x00000080 | TS3 | Supports the TS3 Protocol
CAPAB_TS5 | 0x00000100 | TS5 | Supports the TS5 Protocol
CAPAB_DKEY | 0x00000200 | DKEY | server supports dh-key exchange using "DKEY"
CAPAB_DOZIP | 0x00000400 | ZIP | output to this link shall be gzipped
CAPAB_DODKEY | 0x00000800 | DKEY | do I do dkey with this link?
CAPAB_QS | 0x00001000 | QS | Can handle quit storm removal
CAPAB_SCS | 0x00002000 | SCS | Supports String Cache System
CAPAB_PT4 | 0x00004000 | PT4 | PT4 Protocol Support
CAPAB_UID | 0x00008000 | UID | Can do UIDs
CAPAB_KNOCK | 0x00010000 | KNOCK | supports KNOCK
CAPAB_CLIENT | 0x00020000 | CLIENT | Supports CLIENT
CAPAB_IPV6 | 0x00040000 | IPV6 | Server is able to handle ipv6 address masks
CAPAB_SSJ5 | 0x00080000 | SSJ5 | Server supports smart join protocol 5
CAPAB_SN2 | 0x00100000 | SN2 | Supports SN2 protocol (SNICK 2)
CAPAB_VHOST | 0x00200000 | VHOST | Supports VHOST protocol
CAPAB_TOKEN | 0x00400000 | TOKEN | Supports tokenized server<->server commands
CAPAB_SSJ3 | 0x00800000 | SSJ3 | Server supports smart join protocol 3
CAPAB_NICK2 | 0x01000000 | NICK2 | supports the extended NICK command (version 2)
CAPAB_UMODE2 | 0x02000000 | UMODE2 | support for the UMODE2 command
CAPAB_VL | 0x04000000 | VL | Vline information is included in the info field
CAPAB_TLKEXT | 0x08000000 | TLKEXT | This allows 10 instead of 8 parameters in TKL's
+6 -7
View File
@@ -41,16 +41,15 @@
#define CMODE_t 0x00000020
#define CMODE_k 0x00000040 /* These two used only by ChanServ */
#define CMODE_l 0x00000080
#define CMODE_A 0x00000800
#define CMODE_R 0x00000100 /* Only identified users can join */
#define CMODE_r 0x00000200 /* Set for all registered channels */
#define CMODE_c 0x00000400 /* Colors can't be used */
#define CMODE_M 0x00000800 /* Non-regged nicks can't send messages */
#define CMODE_N 0x00001000
#define CMODE_S 0x00002000
#define CMODE_C 0x00004000
#define CMODE_c 0x00000400 /* Colors can't be used */
#define CMODE_M 0x00000800 /* Non-regged nicks can't send messages */
#define CMODE_O 0x00008000 /* Only opers can join */
#define CMODE_R 0x00000100 /* Only identified users can join */
#define CMODE_r 0x00000200 /* Set for all registered channels */
#define CMODE_I 0x08000000
#define CMODE_A 0x00008000
#define CMODE_O 0x00010000 /* Only opers can join */
#define DEFAULT_MLOCK CMODE_n | CMODE_t | CMODE_r
+5
View File
@@ -868,6 +868,11 @@ CHAN_REGISTERED
El canal %s esta registrat sota el teu nickname: %s
CHAN_PASSWORD_IS
La teva clau pel canal es %s - Recorda-la per un us futur.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+4
View File
@@ -874,6 +874,10 @@ CHAN_REGISTERED
Channel %s ist registriert unter deinem Nicknamen: %s
CHAN_PASSWORD_IS
Dein Channel-Passwort ist %s - behalte es für spätere Benutzung.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -853,6 +853,11 @@ CHAN_REGISTERED
Channel %s registered under your nickname: %s
CHAN_PASSWORD_IS
Your channel password is %s - remember it for later use.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -866,6 +866,11 @@ CHAN_REGISTERED
El canal %s esta registrado bajo tu nickname: %s
CHAN_PASSWORD_IS
Tu clave para el canal es %s - Recuerdala para uso futuro.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -869,6 +869,11 @@ CHAN_REGISTERED
Le channel %s a été enregistré sous votre nick: %s
CHAN_PASSWORD_IS
Le mot de passe du channel est %s - notez le pour une utilisation ultérieure.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -865,6 +865,11 @@ CHAN_REGISTERED
Ôï êáíÜëé %s åßíáé êáôï÷õñùìÝíï áðü ôï øåõäþíõìü óïõ: %s
CHAN_PASSWORD_IS
Ï êùäéêüò ôïõ êáíáëéïý åßíáé %s - èõìÞóïõ ôïí ãéáôß èá ôïí ÷ñåéáóôåßò ìåôÜ.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5 -1
View File
@@ -70,7 +70,6 @@ LANG_NAME
# %b = Hónap neve (rövid) %M = perc
# %d = nap a hónapban %S = másodperc
# %Y = év %Z = idõ zóne
# %A = hónap neve %B = nap neve
# ezt a formát használd az strftime() mikor a dátum és idõ
# együtt szükséges.
@@ -859,6 +858,11 @@ CHAN_REGISTERED
Regisztráltam a %s csatornát a (%s) nickre.
CHAN_PASSWORD_IS
Csatorna jelszava: %s - Jegyezd fel a késõbbi használathoz.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY válaszok
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -867,6 +867,11 @@ CHAN_REGISTERED
Il canale %s è stato registrato sotto il tuo nick: %s.
CHAN_PASSWORD_IS
La tua password di canale è %s - non dimenticarla!
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -862,6 +862,11 @@ CHAN_REGISTERED
Kanaal %s is geregistreerd onder jouw nickname: %s
CHAN_PASSWORD_IS
Het wachtwoord van je kanaal is %s - onthoudt dit voor later gebruik.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -943,6 +943,11 @@ CHAN_REGISTERED
CHAN_PASSWORD_IS
Has³o Twojego kana³u to %s
Zapamiêtaj do przysz³ego u¿ytku.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -867,6 +867,11 @@ CHAN_REGISTERED
O canal %s está registrado sob seu nick: %s
CHAN_PASSWORD_IS
A senha do seu canal é %s - guarde ela para uso posterior.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -861,6 +861,11 @@ CHAN_REGISTERED
Êàíàë %s çàðåãèñòðèðîâàí íà Âàñ: %s
CHAN_PASSWORD_IS
Ïàðîëü Âàøåãî êàíàëà - %s - íå çàáûâàéòå åãî!
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+5
View File
@@ -871,6 +871,11 @@ CHAN_REGISTERED
%s kanalý bu nicke kayýt edildi: %s
CHAN_PASSWORD_IS
Kanal þifreniz %s - ilerde kullanacaðýnýz için unutmayýnýz ve kimseye söylemeyiniz.
CHAN_REGISTER_NONE_CHANNEL
You have attempted to register a none existant channel %s
CHAN_SYMBOL_REQUIRED
Please use the symbol of # or & when attempting to register
# IDENTIFY responses
CHAN_IDENTIFY_SYNTAX
+163 -40
View File
@@ -402,18 +402,26 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (!fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
if (ircdcap->tsmode) {
if (uplink_capab & ircdcap->tsmode) {
send_cmd(source, "MODE %s 0 %s", dest, buf);
if (!buf) {
return;
}
if (ircdcap->tsmode) {
if (uplink_capab & ircdcap->tsmode) {
send_cmd(source, "MODE %s 0 %s", dest, buf);
} else {
send_cmd(source, "MODE %s %s", dest, buf);
}
} else {
send_cmd(source, "MODE %s %s", dest, buf);
}
} else {
send_cmd(source, "MODE %s %s", dest, buf);
}
}
@@ -652,9 +660,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (!fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!nick || !chan) {
return;
@@ -714,13 +726,19 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (!source || !user) {
if (!source || !user || !fmt) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
if (!buf) {
return;
}
send_cmd(source, "SVSKILL %s :%s", user, buf);
}
@@ -921,10 +939,18 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
if (!buf) {
return;
}
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
}
/* NOTICE */
@@ -932,9 +958,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -952,9 +985,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -979,9 +1019,16 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
}
@@ -1000,9 +1047,16 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -1012,9 +1066,16 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -1024,9 +1085,16 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -1036,9 +1104,16 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -1048,9 +1123,16 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -1094,9 +1176,17 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -1105,9 +1195,16 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -1117,9 +1214,17 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -1135,9 +1240,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -1183,9 +1292,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -1296,4 +1409,14 @@ void anope_cmd_svid_umode3(User * u, char *ts)
}
}
/* NICK <newnick> */
void anope_cmd_chg_nick(char *oldnick, char *newnick)
{
if (!oldnick || !newnick) {
return;
}
send_cmd(oldnick, "NICK %s", newnick);
}
#endif
+2 -1
View File
@@ -6,7 +6,7 @@
* Please read COPYING and README for furhter details.
*
* Based on the original code of Epona by Lara.
* Based on the original code of Services by Andy Church.
* Based on the original code of Services by Andy Church.
*
* $Id$
*
@@ -1025,6 +1025,7 @@ static void bot_kick(ChannelInfo * ci, User * u, int message, ...)
if (!fmt)
return;
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
av[0] = ci->name;
av[1] = u->nick;
+8 -3
View File
@@ -140,10 +140,15 @@ int chan_has_user_status(Channel * chan, User * user, int16 status)
{
struct u_chanlist *uc;
for (uc = user->chans; uc; uc = uc->next)
if (uc->chan == chan)
for (uc = user->chans; uc; uc = uc->next) {
if (uc->chan == chan) {
if (debug) {
alog("chan_has_user_status wanted %d the user is %d",
status, uc->status);
}
return (uc->status & status);
}
}
return 0;
}
+16 -2
View File
@@ -2515,6 +2515,21 @@ static int do_register(User * u)
return MOD_CONT;
}
/* Confirm that the channel is in the RFC spec */
if (*chan != '#' || *chan == '&') {
/* RFC says channels start with & or # so if the first is not # complain */
notice_lang(s_ChanServ, u, CHAN_SYMBOL_REQUIRED);
return MOD_CONT;
}
/* Throw a message that the channel is non existant */
if (!(c = findchan(chan))) {
alog("%s: %s attempted to register a non-existant channel [%s] ",
s_ChanServ, u->nick, chan);
notice_lang(s_NickServ, u, CHAN_REGISTER_NONE_CHANNEL, chan);
return MOD_CONT;
}
if (!desc) {
syntax_error(s_ChanServ, u, "REGISTER", CHAN_REGISTER_SYNTAX);
} else if (*chan == '&') {
@@ -2533,8 +2548,7 @@ static int do_register(User * u)
}
} else if (!stricmp(chan, "#")) {
notice_lang(s_ChanServ, u, CHAN_MAY_NOT_BE_REGISTERED, chan);
} else if (!(c = findchan(chan))
|| !chan_has_user_status(c, u, CUS_OP)) {
} else if (!chan_has_user_status(c, u, CUS_OP)) {
notice_lang(s_ChanServ, u, CHAN_MUST_BE_CHANOP);
} else if (!is_servadmin && nc->channelmax > 0
+1
View File
@@ -43,6 +43,7 @@ int snprintf(char *buf, size_t len, const char *fmt, ...)
va_start(args, fmt);
return vsnprintf(buf, len, fmt, args);
/* Again should have va_end() here */
}
#endif /* !HAVE_SNPRINTF */
+2
View File
@@ -655,6 +655,8 @@ void error(int linenum, char *message, ...)
va_start(args, message);
vsnprintf(buf, sizeof(buf), message, args);
va_end(args);
#ifndef NOT_MAIN
if (linenum)
alog("%s:%d: %s", SERVICES_CONF, linenum, buf);
+159 -35
View File
@@ -484,9 +484,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!nick || !chan) {
return;
@@ -521,14 +525,21 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (!source || !user) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "KILL %s :%s", user, buf);
}
@@ -582,9 +593,16 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
}
@@ -680,9 +698,17 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "MODE %s %s", dest, buf);
}
@@ -690,9 +716,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
@@ -701,9 +735,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -721,9 +762,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -755,9 +803,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -780,9 +832,16 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -792,9 +851,16 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -804,9 +870,16 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -816,9 +889,16 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -828,9 +908,16 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -874,9 +961,17 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -885,9 +980,16 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -897,9 +999,17 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -916,9 +1026,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -1120,4 +1234,14 @@ void anope_cmd_svid_umode3(User * u, char *ts)
// not used
}
/* NICK <newnick> */
void anope_cmd_chg_nick(char *oldnick, char *newnick)
{
if (!oldnick || !newnick) {
return;
}
send_cmd(oldnick, "NICK %s", newnick);
}
#endif
+158 -35
View File
@@ -391,9 +391,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -411,9 +418,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -438,9 +452,16 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "WALLOPS :%s", buf);
}
@@ -629,14 +650,21 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (!source || !user) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "KILL %s :%s", user, buf);
}
@@ -696,11 +724,15 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(nick, "PART %s :%s", chan, buf);
} else {
send_cmd(nick, "PART %s", chan);
@@ -850,9 +882,16 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -862,9 +901,16 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -874,9 +920,16 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -886,9 +939,16 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -898,9 +958,16 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -944,9 +1011,17 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -955,9 +1030,16 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -967,9 +1049,17 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -977,9 +1067,17 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "MODE %s %s", dest, buf);
}
@@ -994,9 +1092,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -1009,9 +1111,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
@@ -1025,9 +1135,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -1150,5 +1264,14 @@ void anope_cmd_svid_umode3(User * u, char *ts)
// not used
}
/* NICK <newnick> */
void anope_cmd_chg_nick(char *oldnick, char *newnick)
{
if (!oldnick || !newnick) {
return;
}
send_cmd(oldnick, "NICK %s", newnick);
}
#endif
+13
View File
@@ -125,6 +125,10 @@ void alog(const char *fmt, ...)
checkday();
if (!fmt) {
return;
}
va_start(args, fmt);
time(&t);
tm = *localtime(&t);
@@ -160,6 +164,7 @@ void alog(const char *fmt, ...)
privmsg(s_GlobalNoticer, LogChannel, str);
}
va_end(args);
errno = errno_save;
}
@@ -178,6 +183,10 @@ void log_perror(const char *fmt, ...)
checkday();
if (!fmt) {
return;
}
va_start(args, fmt);
time(&t);
tm = *localtime(&t);
@@ -207,6 +216,7 @@ void log_perror(const char *fmt, ...)
fprintf(stderr, ": %s\n", strerror(errno_save));
}
errno = errno_save;
va_end(args);
}
/*************************************************************************/
@@ -249,6 +259,8 @@ void fatal(const char *fmt, ...)
fprintf(stderr, "%sFATAL: %s\n", buf, buf2);
if (servsock >= 0)
anope_cmd_global(NULL, "FATAL ERROR! %s", buf2);
va_end(args);
exit(1);
}
@@ -293,6 +305,7 @@ void fatal_perror(const char *fmt, ...)
if (servsock >= 0)
anope_cmd_global(NULL, "FATAL ERROR! %s: %s", buf2,
strerror(errno_save));
va_end(args);
exit(1);
}
+3
View File
@@ -257,6 +257,9 @@ int process_numlist(const char *numstr, int *count_ret,
}
if (count_ret)
*count_ret = count;
va_end(args);
return retval;
}
+4 -2
View File
@@ -232,8 +232,10 @@ char *db_mysql_secure(char *pass)
memset(epass, '\0', BUFSIZE);
#ifdef USE_ENCRYPTION
/* If we use the builtin encryption don't double encrypt! */
snprintf(epass, sizeof(epass), "'%s'", pass);
if (pass) {
/* If we use the builtin encryption don't double encrypt! */
snprintf(epass, sizeof(epass), "'%s'", pass);
}
#else
if (!pass) {
+24 -2
View File
@@ -1154,7 +1154,18 @@ void cancel_user(User * u)
int nick_identified(User * u)
{
return u->na && (u->na->status & NS_IDENTIFIED);
if (u) {
if (u->na) {
if (u->na->status) {
return (u->na->status & NS_IDENTIFIED);
} else {
return 0;
}
} else {
return 0;
}
}
return 0;
}
/*************************************************************************/
@@ -1163,7 +1174,18 @@ int nick_identified(User * u)
int nick_recognized(User * u)
{
return u->na && (u->na->status & (NS_IDENTIFIED | NS_RECOGNIZED));
if (u) {
if (u->na) {
if (u->na->status) {
return (u->na->status & (NS_IDENTIFIED | NS_RECOGNIZED));
} else {
return 0;
}
} else {
return 0;
}
}
return 0;
}
/*************************************************************************/
-168
View File
@@ -1,168 +0,0 @@
/* Simple interfaces to various protocols.
*
* (C) 2003 Anope Team
* Contact us at info@anope.org
*
* Please read COPYING and README for furhter details.
*
* Based on the original code of Epona by Lara.
* Based on the original code of Services by Andy Church.
*
* $Id$
*
*/
#include "services.h"
/* Makes an permanent ban from all the servers. Assumes that the matching clients are killed. */
void s_akill(char *user, char *host, char *who, time_t when,
time_t expires, char *reason)
{
#if defined(IRC_BAHAMUT)
/* send_cmd(NULL, "AKILL %s %s %d %s %ld :%s", host, user, 86400*2, who, when, reason); */
send_cmd(NULL, "AKILL %s %s %d %s %ld :%s", host, user,
86400 * 2, who, time(NULL), reason);
#elif defined(IRC_UNREAL)
send_cmd(NULL, "TKL + G %s %s %s %ld %ld :%s", user, host, who, time(NULL) + 86400 * 2, /* Avoids filling the akill list of servers too much */
when, reason);
#elif defined(IRC_DREAMFORGE)
send_cmd(NULL, "AKILL %s %s :%s", host, user, reason);
#elif defined(IRC_PTLINK)
send_cmd(ServerName, "GLINE %s@%s %i %s :%s", user, host, 86400 * 2,
who, reason);
#elif defined(IRC_HYBRID)
send_cmd(s_OperServ, "KLINE * %ld %s %s :%s",
(expires - (long) time(NULL)), user, host, reason);
#endif
}
/*************************************************************************/
/* Removes a permanent ban from all the servers. */
void s_rakill(char *user, char *host)
{
#if defined(IRC_PTLINK)
send_cmd(NULL, "UNGLINE %s@%s", user, host);
#elif defined(IRC_UNREAL)
send_cmd(NULL, "TKL - G %s %s %s", user, host, s_OperServ);
#elif !defined(IRC_HYBRID)
send_cmd(NULL, "RAKILL %s %s", host, user);
#endif
}
/*************************************************************************/
void s_sgline(char *mask, char *reason)
{
#ifdef IRC_BAHAMUT
/* User *u; */
send_cmd(NULL, "SGLINE %d :%s:%s", strlen(mask), mask, reason);
/* Do things properly: kill all corresponding users as this is
unfortunately not done by the IRCds :/ */
/* Breaks things currently! */
/* for (u = firstuser(); u; u = nextuser())
if (match_wild_nocase(mask, u->realname))
send_cmd(NULL, "SVSKILL %s :G-Lined: %s", u->nick, reason); */
#endif
}
/*************************************************************************/
void s_sqline(char *mask, char *reason)
{
#ifdef IRC_BAHAMUT
if (*mask == '#') {
int i;
Channel *c, *next;
char *av[3];
struct c_userlist *cu, *cunext;
send_cmd(NULL, "SQLINE %s :%s", mask, reason);
for (i = 0; i < 1024; i++) {
for (c = chanlist[i]; c; c = next) {
next = c->next;
if (!match_wild_nocase(mask, c->name))
continue;
for (cu = c->users; cu; cu = cunext) {
cunext = cu->next;
if (is_oper(cu->user))
continue;
av[0] = c->name;
av[1] = cu->user->nick;
av[2] = reason;
send_cmd(s_OperServ, "KICK %s %s :Q-Lined: %s", av[0],
av[1], av[2]);
do_kick(s_ChanServ, 3, av);
}
}
}
} else {
#endif
send_cmd(NULL, "SQLINE %s :%s", mask, reason);
#ifdef IRC_BAHAMUT
}
#endif
}
/*************************************************************************/
void s_svsnoop(char *server, int set)
{
#ifndef IRC_HYBRID
#ifdef IRC_PTLINK
send_cmd(NULL, "SVSADMIN %s :%s", server, set ? "noopers" : "rehash");
#else
send_cmd(NULL, "SVSNOOP %s %s", server, (set ? "+" : "-"));
#endif
#endif
}
/*************************************************************************/
void s_szline(char *mask, char *reason)
{
#ifdef IRC_BAHAMUT
send_cmd(NULL, "SZLINE %s :%s", mask, reason);
#endif
}
/*************************************************************************/
void s_unsgline(char *mask)
{
#ifdef IRC_BAHAMUT
send_cmd(NULL, "UNSGLINE 0 :%s", mask);
#endif
}
/*************************************************************************/
void s_unsqline(char *mask)
{
#ifdef IRC_BAHAMUT
send_cmd(NULL, "UNSQLINE 0 %s", mask);
#else
send_cmd(NULL, "UNSQLINE %s", mask);
#endif
}
/*************************************************************************/
void s_unszline(char *mask)
{
#ifdef IRC_BAHAMUT
send_cmd(NULL, "UNSZLINE 0 %s", mask);
#endif
}
+162 -35
View File
@@ -541,14 +541,21 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (!source || !user) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "KILL %s :%s", user, buf);
}
@@ -709,9 +716,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
@@ -720,9 +735,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -740,9 +762,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -767,9 +796,16 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
}
@@ -788,9 +824,16 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -800,9 +843,16 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -812,9 +862,16 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -824,9 +881,16 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -836,9 +900,16 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -882,9 +953,17 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -893,9 +972,16 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -905,9 +991,17 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -915,9 +1009,17 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "MODE %s %s", dest, buf);
}
@@ -934,9 +1036,16 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -950,9 +1059,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -965,11 +1078,15 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(nick, "PART %s :%s", chan, buf);
} else {
send_cmd(nick, "PART %s", chan);
@@ -1213,5 +1330,15 @@ void anope_cmd_svid_umode3(User * u, char *ts)
/* Bahamuts have this extra one, since they can check on even nick changes */
}
/* NICK <newnick> */
void anope_cmd_chg_nick(char *oldnick, char *newnick)
{
if (!oldnick || !newnick) {
return;
}
send_cmd(oldnick, "NICK %s", newnick);
}
#endif
+187 -64
View File
@@ -20,15 +20,15 @@ const char version_protocol[] = "RageIRCd 2.0.x";
IRCDVar ircd[] = {
{"RageIRCd 2.0.*", /* ircd name */
"+dS", /* nickserv mode */
"+dS", /* chanserv mode */
"+dS", /* memoserv mode */
"+dS", /* hostserv mode */
"+diS", /* operserv mode */
"+dS", /* botserv mode */
"+dSh", /* helpserv mode */
"+diS", /* Dev/Null mode */
"+diS", /* Global mode */
"+d", /* nickserv mode */
"+d", /* chanserv mode */
"+d", /* memoserv mode */
"+d", /* hostserv mode */
"+di", /* operserv mode */
"+d", /* botserv mode */
"+dh", /* helpserv mode */
"+di", /* Dev/Null mode */
"+di", /* Global mode */
"+o", /* nickserv alias mode */
"+o", /* chanserv alias mode */
"+o", /* memoserv alias mode */
@@ -38,9 +38,9 @@ IRCDVar ircd[] = {
"+o", /* helpserv alias mode */
"+i", /* Dev/Null alias mode */
"+io", /* Global alias mode */
"+S", /* Used by BotServ Bots */
"+", /* Used by BotServ Bots */
3, /* Chan Max Symbols */
"-iklmnpRstcOASCNM", /* Modes to Remove */
"-iklmnpRstcOACNM", /* Modes to Remove */
"+o", /* Channel Umode used by Botserv bots */
1, /* SVSNICK */
1, /* Vhost */
@@ -52,38 +52,38 @@ IRCDVar ircd[] = {
"-r+d", /* Mode on Nick Change */
1, /* Supports SGlines */
1, /* Supports SQlines */
1, /* Supports SZlines */
0, /* Supports SZlines */
1, /* Supports Halfop +h */
3, /* Number of server args */
0, /* Join 2 Set */
0, /* Join 2 Message */
1, /* Has exceptions +e */
0, /* TS Topic Forward */
0, /* TS Topci Backward */
0, /* TS Topic Backward */
0, /* Protected Umode */
1, /* Has Admin */
1, /* Chan SQlines */
1, /* Quit on Kill */
1, /* SVSMODE unban */
0, /* SVSMODE unban */
0, /* Has Protect */
0, /* Reverse */
1, /* Chan Reg */
CMODE_r, /* Channel Mode */
0, /* vidents */
0, /* svshold */
1, /* svshold */
1, /* time stamp on mode */
0, /* NICKIP */
1, /* NICKIP */
0, /* UMODE */
0, /* O:LINE */
1, /* VHOST ON NICK */
0, /* Change RealName */
CHAN_HELP_ULTIMATE3, /* ChanServ extra */
0, /* No Knock */
CMODE_A, /* Admin Only */
DEFAULT_MLOCK, /* Default MLOCK */
UMODE_x, /* Vhost Mode */
0, /* +f */
0, /* +L */
CHAN_HELP_ULTIMATE3, /* ChanServ extra */
CMODE_p, /* No Knock */
CMODE_A, /* Admin Only */
DEFAULT_MLOCK, /* Default MLOCK */
UMODE_x, /* Vhost Mode */
0, /* +f */
0, /* +L */
0,
0,
1,
@@ -282,7 +282,6 @@ CBModeInfo cbmodeinfos[] = {
{'N', CMODE_N, 0, NULL, NULL},
{'O', CMODE_O, 0, NULL, NULL},
{'R', CMODE_R, 0, NULL, NULL},
{'S', CMODE_S, 0, NULL, NULL},
{0}
};
@@ -534,9 +533,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!nick || !chan) {
return;
@@ -557,12 +560,12 @@ void anope_cmd_topic(char *whosets, char *chan, char *whosetit,
void anope_cmd_vhost_off(char *nick)
{
send_cmd(s_HostServ, "SVSMODE %s -z", nick);
send_cmd(s_HostServ, "SVSMODE %s -x", nick);
}
void anope_cmd_vhost_on(char *nick, char *vIdent, char *vhost)
{
send_cmd(s_HostServ, "SVSMODE %s +z", nick);
send_cmd(s_HostServ, "SVSMODE %s +x", nick);
send_cmd(ServerName, "VHOST %s %s", nick, vhost);
}
@@ -587,12 +590,20 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (!source || !user) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "SVSKILL %s :%s", user, buf);
}
@@ -711,9 +722,16 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
}
@@ -722,9 +740,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
@@ -733,9 +759,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -753,9 +786,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -806,9 +846,16 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (ircdcap->tsmode) {
if (uplink_capab & ircdcap->tsmode) {
@@ -827,9 +874,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -884,9 +935,16 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -896,9 +954,16 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -908,9 +973,16 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -920,9 +992,16 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -932,9 +1011,16 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -978,9 +1064,17 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -989,9 +1083,16 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -1001,9 +1102,17 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -1060,9 +1169,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -1208,13 +1321,14 @@ void anope_cmd_pass(char *pass)
/* SVSHOLD - set */
void anope_cmd_svshold(char *nick)
{
/* Not supported */
send_cmd(ServerName, "SVSHOLD %s %d :%s", nick, NSReleaseTimeout,
"Being held for registered user");
}
/* SVSHOLD - release */
void anope_cmd_relase_svshold(char *nick)
{
/* Not supported */
send_cmd(ServerName, "SVSHOLD %s 0", nick);
}
void anope_cmd_svsnick(char *source, char *guest, time_t when)
@@ -1228,8 +1342,8 @@ void anope_cmd_svsnick(char *source, char *guest, time_t when)
void anope_cmd_guest_nick(char *nick, char *user, char *host, char *real,
char *modes)
{
send_cmd(NULL, "NICK %s 1 %ld %s %s %s 0 %s * :%s", nick, time(NULL),
user, host, ServerName, modes, real);
send_cmd(NULL, "SNICK %s %ld 1 %s %s 0 * %s 0 %s :%s", nick,
time(NULL), user, host, ServerName, modes, real);
}
@@ -1268,6 +1382,15 @@ void anope_cmd_svid_umode3(User * u, char *ts)
}
}
/* NICK <newnick> */
void anope_cmd_chg_nick(char *oldnick, char *newnick)
{
if (!oldnick || !newnick) {
return;
}
send_cmd(oldnick, "NICK %s", newnick);
}
#endif
+77 -34
View File
@@ -23,24 +23,34 @@ void send_cmd(const char *source, const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
vsend_cmd(source, fmt, args);
va_end(args);
if (fmt) {
va_start(args, fmt);
vsend_cmd(source, fmt, args);
va_end(args);
}
}
void vsend_cmd(const char *source, const char *fmt, va_list args)
{
char buf[BUFSIZE];
*buf = '\0';
vsnprintf(buf, sizeof(buf), fmt, args);
if (source) {
sockprintf(servsock, ":%s %s\r\n", source, buf);
if (debug)
alog("debug: Sent: :%s %s", source, buf);
} else {
sockprintf(servsock, "%s\r\n", buf);
if (debug)
alog("debug: Sent: %s", buf);
if (fmt) {
vsnprintf(buf, BUFSIZE - 1, fmt, args);
if (!buf) {
return;
}
if (source) {
sockprintf(servsock, ":%s %s\r\n", source, buf);
if (debug)
alog("debug: Sent: :%s %s", source, buf);
} else {
sockprintf(servsock, "%s\r\n", buf);
if (debug)
alog("debug: Sent: %s", buf);
}
}
}
@@ -50,14 +60,22 @@ void notice_server(char *source, Server * s, char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
vsnprintf(buf, sizeof(buf), fmt, args);
if (UsePrivmsg) {
anope_cmd_serv_privmsg(source, s->name, buf);
} else {
anope_cmd_serv_notice(source, s->name, buf);
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_serv_privmsg(source, s->name, buf);
} else {
anope_cmd_serv_notice(source, s->name, buf);
}
va_end(args);
}
}
@@ -67,14 +85,22 @@ void notice_user(char *source, User * u, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
vsnprintf(buf, sizeof(buf), fmt, args);
if (UsePrivmsg && (!u->na || (u->na->nc->flags & NI_MSG))) {
anope_cmd_privmsg2(source, u->nick, buf);
} else {
anope_cmd_notice2(source, u->nick, buf);
if (!buf) {
return;
}
if (UsePrivmsg && (!u->na || (u->na->nc->flags & NI_MSG))) {
anope_cmd_privmsg2(source, u->nick, buf);
} else {
anope_cmd_notice2(source, u->nick, buf);
}
va_end(args);
}
}
@@ -105,7 +131,7 @@ void notice_lang(char *source, User * dest, int message, ...)
char buf[4096]; /* because messages can be really big */
char *s, *t;
const char *fmt;
if (!dest)
if (!dest || !message)
return;
va_start(args, message);
fmt = getstring(dest->na, message);
@@ -125,6 +151,7 @@ void notice_lang(char *source, User * dest, int message, ...)
anope_cmd_notice2(source, dest->nick, *t ? t : " ");
}
}
va_end(args);
}
/*************************************************************************/
@@ -140,7 +167,7 @@ void notice_help(char *source, User * dest, int message, ...)
char *s, *t;
const char *fmt;
if (!dest)
if (!dest || !message)
return;
va_start(args, message);
fmt = getstring(dest->na, message);
@@ -166,6 +193,7 @@ void notice_help(char *source, User * dest, int message, ...)
anope_cmd_notice2(source, dest->nick, *outbuf ? outbuf : " ");
}
}
va_end(args);
}
/*************************************************************************/
@@ -175,14 +203,22 @@ void notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
vsnprintf(buf, sizeof(buf), fmt, args);
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
} else {
anope_cmd_notice2(source, dest, buf);
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
} else {
anope_cmd_notice2(source, dest, buf);
}
va_end(args);
}
}
@@ -193,9 +229,16 @@ void privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
vsnprintf(buf, sizeof(buf), fmt, args);
if (!buf) {
return;
}
anope_cmd_privmsg2(source, dest, buf);
}
+1
View File
@@ -439,6 +439,7 @@ int sockprintf(int s, char *fmt, ...)
va_start(args, fmt);
return buffered_write(s, buf, vsnprintf(buf, sizeof(buf), fmt, args));
/* no va_end() but not sure how to squeeze it in here */
}
/*************************************************************************/
+148 -34
View File
@@ -672,9 +672,16 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "KILL %s :%s", user, buf);
}
@@ -748,9 +755,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!nick || !chan) {
return;
@@ -777,9 +788,16 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -789,9 +807,16 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -801,9 +826,16 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -813,9 +845,16 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -825,9 +864,16 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -871,9 +917,17 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -882,9 +936,16 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -894,9 +955,17 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -905,9 +974,16 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
}
@@ -1089,9 +1165,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -1104,9 +1184,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
@@ -1115,9 +1203,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -1135,9 +1230,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -1177,9 +1279,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -1192,9 +1298,17 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "MODE %s %s", dest, buf);
}
+151 -34
View File
@@ -654,9 +654,16 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "SVSKILL %s :%s", user, buf);
}
@@ -974,9 +981,17 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "MODE %s %s", dest, buf);
}
@@ -993,9 +1008,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -1008,9 +1027,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
@@ -1019,9 +1046,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -1039,9 +1073,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -1078,9 +1119,16 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -1156,9 +1204,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!nick || !chan) {
return;
@@ -1185,9 +1237,16 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -1197,9 +1256,16 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -1209,9 +1275,16 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -1221,9 +1294,16 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -1233,9 +1313,16 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -1279,9 +1366,17 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -1290,9 +1385,16 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -1302,9 +1404,17 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -1313,9 +1423,16 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
}
+150 -33
View File
@@ -493,6 +493,16 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (!source || !user) {
return;
@@ -500,6 +510,7 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
va_end(args);
send_cmd(source, "KILL %s :%s", user, buf);
}
@@ -551,9 +562,17 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "MODE %s %s", dest, buf);
}
@@ -570,9 +589,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -585,9 +608,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
@@ -596,9 +627,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -616,9 +654,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -639,7 +684,6 @@ void anope_cmd_serv_privmsg(char *source, char *dest, char *msg)
}
void anope_cmd_bot_chan_mode(char *nick, char *chan)
{
anope_cmd_mode(nick, chan, "%s %s %s", ircd->botchanumode, nick, nick);
@@ -657,9 +701,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -747,9 +795,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!nick || !chan) {
return;
@@ -776,9 +828,16 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -788,9 +847,16 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -800,9 +866,16 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -812,9 +885,16 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -824,9 +904,16 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -870,9 +957,17 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -881,9 +976,16 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -893,9 +995,17 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -904,9 +1014,16 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
}
+147 -34
View File
@@ -495,13 +495,19 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (!source || !user) {
if (!source || !user || !fmt) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
if (!buf) {
return;
}
send_cmd(source, "KILL %s :%s", user, buf);
}
@@ -553,9 +559,17 @@ void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "MODE %s %s", dest, buf);
}
@@ -572,9 +586,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -587,9 +605,17 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
@@ -598,9 +624,16 @@ void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -618,9 +651,16 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -657,9 +697,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -747,9 +791,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!nick || !chan) {
return;
@@ -776,9 +824,16 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -788,9 +843,16 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -800,9 +862,16 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -812,9 +881,16 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -824,9 +900,16 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -870,9 +953,17 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -881,9 +972,16 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -893,9 +991,17 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -904,9 +1010,16 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
}
+164 -37
View File
@@ -664,9 +664,13 @@ void anope_cmd_part(char *nick, char *chan, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!nick || !chan) {
return;
@@ -720,24 +724,36 @@ void anope_cmd_svskill(char *source, char *user, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (!source || !user) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(source, "SVSKILL %s :%s", user, buf);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
send_cmd(source, "SVSKILL %s :%s", user, buf);
}
return;
}
void anope_cmd_mode(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (ircdcap->tsmode) {
if (uplink_capab & ircdcap->tsmode) {
@@ -755,9 +771,13 @@ void anope_cmd_quit(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "QUIT :%s", buf);
@@ -994,19 +1014,32 @@ void anope_cmd_notice_ops(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
send_cmd(NULL, "NOTICE @%s :%s", dest, buf);
}
return;
}
void anope_cmd_notice(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
if (UsePrivmsg) {
anope_cmd_privmsg2(source, dest, buf);
@@ -1024,9 +1057,17 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source, "PRIVMSG %s :%s", dest, buf);
}
@@ -1051,9 +1092,17 @@ void anope_cmd_global(char *source, const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(source ? source : ServerName, "GLOBOPS :%s", buf);
}
@@ -1072,9 +1121,17 @@ void anope_cmd_250(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "250 %s ", buf);
}
@@ -1084,9 +1141,17 @@ void anope_cmd_307(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "307 %s ", buf);
}
@@ -1096,9 +1161,17 @@ void anope_cmd_311(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "311 %s ", buf);
}
@@ -1108,9 +1181,17 @@ void anope_cmd_312(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "312 %s ", buf);
}
@@ -1120,9 +1201,17 @@ void anope_cmd_317(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(ServerName, "317 %s ", buf);
}
@@ -1166,9 +1255,18 @@ void anope_cmd_242(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "242 %s ", buf);
}
@@ -1177,9 +1275,17 @@ void anope_cmd_243(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
send_cmd(NULL, "243 %s ", buf);
}
@@ -1189,9 +1295,18 @@ void anope_cmd_211(const char *fmt, ...)
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (!buf) {
return;
}
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
send_cmd(NULL, "211 %s ", buf);
}
@@ -1215,9 +1330,13 @@ void anope_cmd_kick(char *source, char *chan, char *user, const char *fmt,
{
va_list args;
char buf[BUFSIZE];
*buf = '\0';
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
if (fmt) {
va_start(args, fmt);
vsnprintf(buf, BUFSIZE - 1, fmt, args);
va_end(args);
}
if (buf) {
send_cmd(source, "KICK %s %s :%s", chan, user, buf);
@@ -1344,6 +1463,14 @@ void anope_cmd_svid_umode3(User * u, char *ts)
}
}
/* NICK <newnick> */
void anope_cmd_chg_nick(char *oldnick, char *newnick)
{
if (!oldnick || !newnick) {
return;
}
send_cmd(oldnick, "NICK %s", newnick);
}
#endif
+5 -1
View File
@@ -8,10 +8,14 @@
VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="5"
VERSION_BUILD="334"
VERSION_BUILD="335"
# $Log$
#
# BUILD : 1.7.5 (335)
# BUGS : 142, 152, 154, 155, 156, 157, 158
# NOTES : Applied bugfix bundle patch from Trystan.
#
# BUILD : 1.7.5 (334)
# BUGS :
# NOTES : Oops in the Changes file... (bad me)