diff -ur ircservices-5.1.20-old/send.c ircservices-5.1.20/send.c --- ircservices-5.1.20-old/send.c 2009-08-20 13:24:40.000000000 +0200 +++ ircservices-5.1.20/send.c 2009-08-20 13:35:12.000000000 +0200 @@ -143,13 +143,26 @@ va_end(args); } +#define SVSMODE "SVSMODE" +#define SVS_SIZE 7 +#define SVS2MODE "SVS2MODE" +#define SVS2_SIZE 8 void vsend_cmd(const char *source, const char *fmt, va_list args) { char buf[BUFSIZE]; if (!servsock) return; - vsnprintf(buf, sizeof(buf), fmt, args); + + /* SVS2MODE's only, by Dirk Lehmann */ + if (strncmp(fmt, SVSMODE, SVS_SIZE)) + vsnprintf(buf, sizeof(buf), fmt, args); + else { + strncpy(buf, SVS2MODE, SVS2_SIZE); + vsnprintf(buf + SVS2_SIZE, sizeof(buf) - SVS2_SIZE, + fmt + SVS_SIZE, args); + } + if (source) { if (servsock) sockprintf(servsock, ":%s %s\r\n", source, buf);