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:
parent
b05797bb10
commit
5c3ee8a19a
@@ -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
|
||||
-------------------
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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
|
||||
])
|
||||
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user