1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-06 18:03:13 +02:00

More FORMAT_STRING() checking, get rid of old (non-)USE_VARARGS stuff.

Fix some more bugs (type differences) when compiling in DEBUGMODE.
This commit is contained in:
Bram Matthys
2019-08-24 19:37:25 +02:00
parent a3b5f29626
commit 9e02ca2b3c
11 changed files with 75 additions and 114 deletions
+8 -27
View File
@@ -118,19 +118,6 @@
#define RESTARTING_SYSTEMCALLS
#endif
/*
* If your host supports varargs and has vsprintf(), vprintf() and vscanf()
* C calls in its library, then you can define USE_VARARGS to use varargs
* instead of imitation variable arg passing.
*/
#define USE_VARARGS
/* NOTE: with current server code, varargs doesn't survive because it can't
* be used in a chain of 3 or more funtions which all have a variable
* number of params. If anyone has a solution to this, please notify
* the maintainer.
*/
/* DEBUGMODE: This should only be used when tracing a problem. It creates
* an insane amount of log output which can be very useful for debugging.
* You should *NEVER* enable this setting on production servers.
@@ -384,21 +371,15 @@
#endif
#ifdef DEBUGMODE
#ifndef _WIN32
extern void debug(int, char *, ...);
#define Debug(x) debug x
#define Debug(x) debug x
#define LOGFILE LPATH
#else
extern void debug(int, char *, ...);
#define Debug(x) debug x
#endif
#define LOGFILE LPATH
#else
#define Debug(x) ;
#if VMS
#define LOGFILE "NLA0:"
#else
#define LOGFILE "/dev/null"
#endif
#define Debug(x) ;
#if VMS
#define LOGFILE "NLA0:"
#else
#define LOGFILE "/dev/null"
#endif
#endif
+25 -25
View File
@@ -102,8 +102,8 @@ extern EVENT(e_clean_out_throttling_buckets);
extern void module_loadall(void);
extern long set_usermode(char *umode);
extern char *get_modestr(long umodes);
extern void config_error(FORMAT_STRING(char *format), ...) __attribute__((format(printf,1,2)));
extern void config_warn(FORMAT_STRING(char *format), ...) __attribute__((format(printf,1,2)));
extern void config_error(FORMAT_STRING(const char *format), ...) __attribute__((format(printf,1,2)));
extern void config_warn(FORMAT_STRING(const char *format), ...) __attribute__((format(printf,1,2)));
extern void config_error_missing(const char *filename, int line, const char *entry);
extern void config_error_unknown(const char *filename, int line, const char *block, const char *entry);
extern void config_error_unknownflag(const char *filename, int line, const char *block, const char *entry);
@@ -114,7 +114,7 @@ extern void config_error_empty(const char *filename, int line, const char *block
extern void config_warn_duplicate(const char *filename, int line, const char *entry);
extern int config_is_blankorempty(ConfigEntry *cep, const char *block);
extern MODVAR int config_verbose;
extern void config_progress(FORMAT_STRING(char *format), ...) __attribute__((format(printf,1,2)));
extern void config_progress(FORMAT_STRING(const char *format), ...) __attribute__((format(printf,1,2)));
extern void ipport_seperate(char *string, char **ip, char **port);
extern ConfigItem_class *Find_class(char *name);
extern ConfigItem_deny_dcc *Find_deny_dcc(char *name);
@@ -206,7 +206,7 @@ extern Ban *is_banned(aClient *, aChannel *, int, char **, char **);
extern Ban *is_banned_with_nick(aClient *, aChannel *, int, char *, char **, char **);
extern int parse_help(aClient *, char *, char *);
extern void ircd_log(int, FORMAT_STRING(char *), ...) __attribute__((format(printf,2,3)));
extern void ircd_log(int, FORMAT_STRING(const char *), ...) __attribute__((format(printf,2,3)));
extern aClient *find_client(char *, aClient *);
extern aClient *find_name(char *, aClient *);
extern aClient *find_nickserv(char *, aClient *);
@@ -280,27 +280,27 @@ extern void sendto_message_one(aClient *to, aClient *from, char *sender,
extern void sendto_channel(aChannel *chptr, aClient *from, aClient *skip,
int prefix, long clicap, int sendflags,
MessageTag *mtags,
FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,8,9)));
FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,8,9)));
extern void sendto_local_common_channels(aClient *user, aClient *skip,
long clicap, MessageTag *mtags,
FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,5,6)));
extern void sendto_match_servs(aChannel *, aClient *, FORMAT_STRING(char *), ...) __attribute__((format(printf,3,4)));
extern void sendto_match_butone(aClient *, aClient *, FORMAT_STRING(char *), int, MessageTag *,
FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,6,7)));
extern void sendto_all_butone(aClient *, aClient *, FORMAT_STRING(char *), ...) __attribute__((format(printf,3,4)));
extern void sendto_ops(FORMAT_STRING(char *), ...) __attribute__((format(printf,1,2)));
extern void sendto_ops_butone(FORMAT_STRING(aClient *), aClient *, char *, ...) __attribute__((format(printf,3,4)));
FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,5,6)));
extern void sendto_match_servs(aChannel *, aClient *, FORMAT_STRING(const char *), ...) __attribute__((format(printf,3,4)));
extern void sendto_match_butone(aClient *, aClient *, char *, int, MessageTag *,
FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,6,7)));
extern void sendto_all_butone(aClient *, aClient *, FORMAT_STRING(const char *), ...) __attribute__((format(printf,3,4)));
extern void sendto_ops(FORMAT_STRING(const char *), ...) __attribute__((format(printf,1,2)));
extern void sendto_ops_butone(aClient *, aClient *, FORMAT_STRING(const char *), ...) __attribute__((format(printf,3,4)));
extern void sendto_prefix_one(aClient *, aClient *, MessageTag *, FORMAT_STRING(const char *), ...) __attribute__((format(printf,4,5)));
extern void sendto_opers(FORMAT_STRING(char *), ...) __attribute__((format(printf,1,2)));
extern void sendto_umode(int, FORMAT_STRING(char *), ...) __attribute__((format(printf,2,3)));
extern void sendto_umode_global(int, FORMAT_STRING(char *), ...) __attribute__((format(printf,2,3)));
extern void sendto_snomask(int snomask, FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,2,3)));
extern void sendto_snomask_global(int snomask, FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,2,3)));
extern void sendnotice(aClient *to, FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,2,3)));
extern void sendto_opers(FORMAT_STRING(const char *), ...) __attribute__((format(printf,1,2)));
extern void sendto_umode(int, FORMAT_STRING(const char *), ...) __attribute__((format(printf,2,3)));
extern void sendto_umode_global(int, FORMAT_STRING(const char *), ...) __attribute__((format(printf,2,3)));
extern void sendto_snomask(int snomask, FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,2,3)));
extern void sendto_snomask_global(int snomask, FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,2,3)));
extern void sendnotice(aClient *to, FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,2,3)));
extern void sendnumeric(aClient *to, int numeric, ...);
extern void sendnumericfmt(aClient *to, int numeric, FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,3,4)));
extern void sendnumericfmt(aClient *to, int numeric, FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,3,4)));
extern void sendto_server(aClient *one, unsigned long caps, unsigned long nocaps, MessageTag *mtags, FORMAT_STRING(const char *format), ...) __attribute__((format(printf, 5, 6)));
extern void sendto_ops_and_log(FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,1,2)));
extern void sendto_ops_and_log(FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,1,2)));
extern MODVAR int writecalls, writeb[];
extern int deliver_it(aClient *cptr, char *str, int len, int *want_read);
@@ -445,7 +445,7 @@ extern char *strldup(const char *src, size_t n);
extern int dopacket(aClient *, char *, int);
extern void debug(int, FORMAT_STRING(char *), ...);
extern void debug(int, FORMAT_STRING(const char *), ...) __attribute__((format(printf,2,3)));
#if defined(DEBUGMODE)
extern void send_usage(aClient *, char *);
extern void count_memory(aClient *, char *);
@@ -523,7 +523,7 @@ extern TLSOptions *get_tls_options_for_client(aClient *acptr);
extern int outdated_tls_client(aClient *acptr);
extern char *outdated_tls_client_build_string(char *pattern, aClient *acptr);
extern long config_checkval(char *value, unsigned short flags);
extern void config_status(FORMAT_STRING(char *format), ...) __attribute__((format(printf,1,2)));
extern void config_status(FORMAT_STRING(const char *format), ...) __attribute__((format(printf,1,2)));
extern void init_random();
extern u_char getrandom8();
extern uint16_t getrandom16();
@@ -710,7 +710,7 @@ extern MODVAR aTKline *tklines[TKLISTLEN];
extern MODVAR aTKline *tklines_ip_hash[TKLIPHASHLEN1][TKLIPHASHLEN2];
extern char *cmdname_by_spamftarget(int target);
extern void unrealdns_delreq_bycptr(aClient *cptr);
extern void sendtxtnumeric(aClient *to, FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,2,3)));
extern void sendtxtnumeric(aClient *to, FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,2,3)));
extern void unrealdns_gethostbyname_link(char *name, ConfigItem_link *conf, int ipv4_only);
extern void unrealdns_delasyncconnects(void);
extern int is_autojoin_chan(char *chname);
@@ -741,7 +741,7 @@ extern MODVAR char *IsupportStrings[];
extern void finish_auth(aClient *acptr);
extern void read_packet(int fd, int revents, void *data);
extern int process_packet(aClient *cptr, char *readbuf, int length, int killsafely);
extern void sendto_realops_and_log(FORMAT_STRING(char *fmt), ...) __attribute__((format(printf,1,2)));
extern void sendto_realops_and_log(FORMAT_STRING(const char *fmt), ...) __attribute__((format(printf,1,2)));
extern int parse_chanmode(ParseMode *pm, char *modebuf_in, char *parabuf_in);
extern void config_report_ssl_error(void);
extern int dead_link(aClient *to, char *notice);
@@ -846,7 +846,7 @@ extern int is_handshake_finished(aClient *sptr);
extern void SetCapability(aClient *acptr, const char *token);
extern void ClearCapability(aClient *acptr, const char *token);
extern void new_message(aClient *sender, MessageTag *recv_mtags, MessageTag **mtag_list);
extern void new_message_special(aClient *sender, MessageTag *recv_mtags, MessageTag **mtag_list, FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,4,5)));
extern void new_message_special(aClient *sender, MessageTag *recv_mtags, MessageTag **mtag_list, FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,4,5)));
extern void generate_batch_id(char *str);
extern MessageTag *find_mtag(MessageTag *mtags, const char *token);
extern MessageTag *duplicate_mtag(MessageTag *mtag);
+2 -2
View File
@@ -36,8 +36,8 @@ extern char *collapse(char *pattern);
extern void clear_scache_hash_table(void);
/* send.c */
extern void sendto_one(aClient *, MessageTag *mtags, FORMAT_STRING(char *), ...) __attribute__((format(printf,3,4)));
extern void sendto_realops(FORMAT_STRING(char *pattern), ...) __attribute__((format(printf,1,2)));
extern void sendto_one(aClient *, MessageTag *mtags, FORMAT_STRING(const char *), ...) __attribute__((format(printf,3,4)));
extern void sendto_realops(FORMAT_STRING(const char *pattern), ...) __attribute__((format(printf,1,2)));
/* ircd.c */
extern EVENT(garbage_collect);
+1 -1
View File
@@ -186,7 +186,7 @@ Umode *UmodeAdd(Module *module, char ch, int global, int unset_on_deoper, int (*
Usermode_Table[i].flag = ch;
Usermode_Table[i].allowed = allowed;
Usermode_Table[i].unset_on_deoper = unset_on_deoper;
Debug((DEBUG_DEBUG, "UmodeAdd(%c) returning %04x",
Debug((DEBUG_DEBUG, "UmodeAdd(%c) returning %04lx",
ch, Usermode_Table[i].mode));
/* Update usermode table highest */
for (j = 0; j < UMODETABLESZ; j++)
+4 -4
View File
@@ -1536,7 +1536,7 @@ static void read_authports(int fd, int revents, void *data);
void ident_failed(aClient *cptr)
{
Debug((DEBUG_NOTICE, "ident_failed() for %x", cptr));
Debug((DEBUG_NOTICE, "ident_failed() for %p", cptr));
ircstp->is_abad++;
if (cptr->local->authfd != -1)
{
@@ -1573,7 +1573,7 @@ void start_auth(aClient *cptr)
finish_auth(cptr);
return;
}
Debug((DEBUG_NOTICE, "start_auth(%x) fd=%d, status=%d",
Debug((DEBUG_NOTICE, "start_auth(%p) fd=%d, status=%d",
cptr, cptr->fd, cptr->status));
snprintf(buf, sizeof buf, "identd: %s", get_client_name(cptr, TRUE));
if ((cptr->local->authfd = fd_socket(IsIPV6(cptr) ? AF_INET6 : AF_INET, SOCK_STREAM, 0, buf)) == -1)
@@ -1629,7 +1629,7 @@ static void send_authports(int fd, int revents, void *data)
int ulen, tlen;
aClient *cptr = data;
Debug((DEBUG_NOTICE, "write_authports(%x) fd %d authfd %d stat %d",
Debug((DEBUG_NOTICE, "write_authports(%p) fd %d authfd %d stat %d",
cptr, cptr->fd, cptr->local->authfd, cptr->status));
ircsnprintf(authbuf, sizeof(authbuf), "%d , %d\r\n",
@@ -1668,7 +1668,7 @@ static void read_authports(int fd, int revents, void *userdata)
aClient *cptr = userdata;
*system = *ruser = '\0';
Debug((DEBUG_NOTICE, "read_authports(%x) fd %d authfd %d stat %d",
Debug((DEBUG_NOTICE, "read_authports(%p) fd %d authfd %d stat %d",
cptr, cptr->fd, cptr->local->authfd, cptr->status));
/*
* Nasty. Cant allow any other reads from client fd while we're
+4 -12
View File
@@ -209,14 +209,6 @@ void config_free(ConfigFile *cfptr);
static ConfigFile *config_parse(char *filename, char *confdata);
static void config_entry_free(ConfigEntry *ceptr);
ConfigEntry *config_find_entry(ConfigEntry *ce, char *name);
/*
* Error handling
*/
void config_warn(char *format, ...);
void config_error(char *format, ...);
void config_status(char *format, ...);
void config_progress(char *format, ...);
#ifdef _WIN32
extern void win_log(char *format, ...);
@@ -1203,7 +1195,7 @@ ConfigEntry *config_find_entry(ConfigEntry *ce, char *name)
return cep;
}
void config_error(char *format, ...)
void config_error(FORMAT_STRING(const char *format), ...)
{
va_list ap;
char buffer[1024];
@@ -1266,7 +1258,7 @@ void config_error_empty(const char *filename, int line, const char *block,
filename, line, block, entry);
}
void config_status(char *format, ...)
void config_status(FORMAT_STRING(const char *format), ...)
{
va_list ap;
char buffer[1024];
@@ -1287,7 +1279,7 @@ void config_status(char *format, ...)
sendnotice(remote_rehash_client, "%s", buffer);
}
void config_warn(char *format, ...)
void config_warn(FORMAT_STRING(const char *format), ...)
{
va_list ap;
char buffer[1024];
@@ -1386,7 +1378,7 @@ int config_test_openfile(ConfigEntry *cep, int flags, mode_t mode, const char *e
return 0;
}
void config_progress(char *format, ...)
void config_progress(FORMAT_STRING(const char *format), ...)
{
va_list ap;
char buffer[1024];
+1 -13
View File
@@ -119,15 +119,7 @@ void flag_del(char ch)
static char debugbuf[4096];
#ifndef USE_VARARGS
/*VARARGS2*/
void debug(level, form, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)
int level;
char *form, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10;
{
#else
void debug(int level, char *form, ...)
#endif
void debug(int level, FORMAT_STRING(const char *form), ...)
{
int err = ERRNO;
@@ -136,11 +128,7 @@ void debug(int level, char *form, ...)
if ((debuglevel >= 0) && (level <= debuglevel))
{
#ifndef USE_VARARGS
(void)ircsnprintf(debugbuf, sizeof(debugbuf), form, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
#else
(void)ircvsnprintf(debugbuf, sizeof(debugbuf), form, vl);
#endif
#ifndef _WIN32
strlcat(debugbuf, "\n", sizeof(debugbuf));
+1 -1
View File
@@ -234,7 +234,7 @@ int found = 0;
}
/* irc logs.. */
void ircd_log(int flags, char *format, ...)
void ircd_log(int flags, FORMAT_STRING(const char *format), ...)
{
static int last_log_file_warning = 0;
static char recursion_trap=0;
+6 -6
View File
@@ -488,9 +488,9 @@ int check_ping(aClient *cptr)
int ping = 0;
ping = cptr->local->class ? cptr->local->class->pingfreq : iConf.handshake_timeout;
Debug((DEBUG_DEBUG, "c(%s)=%d p %d a %d", cptr->name,
Debug((DEBUG_DEBUG, "c(%s)=%d p %d a %lld", cptr->name,
cptr->status, ping,
TStime() - cptr->local->lasttime));
(long long)(TStime() - cptr->local->lasttime)));
/* If ping is less than or equal to the last time we received a command from them */
if (ping > (TStime() - cptr->local->lasttime))
@@ -518,10 +518,10 @@ int check_ping(aClient *cptr)
FALSE));
}
if (IsTLSAcceptHandshake(cptr))
Debug((DEBUG_DEBUG, "ssl accept handshake timeout: %s (%li-%li > %li)", cptr->local->sockhost,
TStime(), cptr->local->since, ping));
(void)ircsnprintf(scratch, sizeof(scratch), "Ping timeout: %ld seconds",
(long) (TStime() - cptr->local->lasttime));
Debug((DEBUG_DEBUG, "ssl accept handshake timeout: %s (%lld-%lld > %lld)", cptr->local->sockhost,
(long long)TStime(), (long long)cptr->local->since, (long long)ping));
(void)ircsnprintf(scratch, sizeof(scratch), "Ping timeout: %lld seconds",
(long long) (TStime() - cptr->local->lasttime));
return exit_client(cptr, cptr, &me, NULL, scratch);
}
else if (IsRegistered(cptr) &&
+2 -2
View File
@@ -1082,7 +1082,7 @@ int IsWebsocket(aClient *acptr)
return (MyConnect(acptr) && moddata_client(acptr, md).ptr) ? 1 : 0;
}
extern void send_raw_direct(aClient *user, char *pattern, ...);
extern void send_raw_direct(aClient *user, FORMAT_STRING(const char *pattern), ...);
/** Generic function to inform the user he/she has been banned.
* @param acptr The affected client.
@@ -1304,7 +1304,7 @@ void new_message(aClient *sender, MessageTag *recv_mtags, MessageTag **mtag_list
* identical to the message that is sent to clients (end-users).
* For example ":xyz JOIN #chan".
*/
void new_message_special(aClient *sender, MessageTag *recv_mtags, MessageTag **mtag_list, char *pattern, ...)
void new_message_special(aClient *sender, MessageTag *recv_mtags, MessageTag **mtag_list, FORMAT_STRING(const char *pattern), ...)
{
Hook *h;
va_list vl;
+21 -21
View File
@@ -155,7 +155,7 @@ int send_queued(aClient *to)
/*
* send message to single client
*/
void sendto_one(aClient *to, MessageTag *mtags, char *pattern, ...)
void sendto_one(aClient *to, MessageTag *mtags, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
va_start(vl, pattern);
@@ -356,7 +356,7 @@ void sendbufto_one(aClient *to, char *msg, unsigned int quick)
void sendto_channel(aChannel *chptr, aClient *from, aClient *skip,
int prefix, long clicap, int sendflags,
MessageTag *mtags,
char *pattern, ...)
FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
Member *lp;
@@ -474,7 +474,7 @@ good:
* what we had going on here.
* - kaniini
*/
void sendto_server(aClient *one, unsigned long caps, unsigned long nocaps, MessageTag *mtags, const char *format, ...)
void sendto_server(aClient *one, unsigned long caps, unsigned long nocaps, MessageTag *mtags, FORMAT_STRING(const char *format), ...)
{
aClient *cptr;
@@ -514,7 +514,7 @@ void sendto_server(aClient *one, unsigned long caps, unsigned long nocaps, Messa
* @param pattern The pattern (eg: ":%s NICK %s").
* @param ... The parameters for the pattern.
*/
void sendto_local_common_channels(aClient *user, aClient *skip, long clicap, MessageTag *mtags, char *pattern, ...)
void sendto_local_common_channels(aClient *user, aClient *skip, long clicap, MessageTag *mtags, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
Membership *channels;
@@ -585,7 +585,7 @@ static int match_it(aClient *one, char *mask, int what)
* either by user hostname or user servername.
*/
void sendto_match_butone(aClient *one, aClient *from, char *mask, int what,
MessageTag *mtags, char *pattern, ...)
MessageTag *mtags, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
int i;
@@ -632,7 +632,7 @@ void sendto_match_butone(aClient *one, aClient *from, char *mask, int what,
*
* Send to *local* ops only.
*/
void sendto_ops(char *pattern, ...)
void sendto_ops(FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
aClient *cptr;
@@ -655,7 +655,7 @@ void sendto_ops(char *pattern, ...)
*
* Send to specified umode
*/
void sendto_umode(int umodes, char *pattern, ...)
void sendto_umode(int umodes, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
aClient *cptr;
@@ -679,7 +679,7 @@ void sendto_umode(int umodes, char *pattern, ...)
*
* Send to specified umode *GLOBALLY* (on all servers)
*/
void sendto_umode_global(int umodes, char *pattern, ...)
void sendto_umode_global(int umodes, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
aClient *cptr;
@@ -727,7 +727,7 @@ void sendto_umode_global(int umodes, char *pattern, ...)
* @param pattern printf-style pattern, followed by parameters.
* This function does not send snomasks to non-opers.
*/
void sendto_snomask(int snomask, char *pattern, ...)
void sendto_snomask(int snomask, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
aClient *cptr;
@@ -749,7 +749,7 @@ void sendto_snomask(int snomask, char *pattern, ...)
* @param pattern printf-style pattern, followed by parameters
* This function does not send snomasks to non-opers.
*/
void sendto_snomask_global(int snomask, char *pattern, ...)
void sendto_snomask_global(int snomask, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
aClient *cptr;
@@ -824,7 +824,7 @@ void send_cap_notify(int add, char *token)
** one - client not to send message to
** from- client which message is from *NEVER* NULL!!
*/
void sendto_ops_butone(aClient *one, aClient *from, char *pattern, ...)
void sendto_ops_butone(aClient *one, aClient *from, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
int i;
@@ -854,7 +854,7 @@ void sendto_ops_butone(aClient *one, aClient *from, char *pattern, ...)
* they do not want or need the expanded prefix. In that case, simply
* use ircvsnprintf() directly.
*/
static int vmakebuf_local_withprefix(char *buf, size_t buflen, struct Client *from, const char *pattern, va_list vl)
static int vmakebuf_local_withprefix(char *buf, size_t buflen, struct Client *from, FORMAT_STRING(const char *pattern), va_list vl)
{
int len;
@@ -900,7 +900,7 @@ static int vmakebuf_local_withprefix(char *buf, size_t buflen, struct Client *fr
}
void vsendto_prefix_one(struct Client *to, struct Client *from, MessageTag *mtags,
const char *pattern, va_list vl)
FORMAT_STRING(const char *pattern), va_list vl)
{
char *mtags_str = mtags ? mtags_to_string(mtags, to) : NULL;
@@ -930,7 +930,7 @@ void vsendto_prefix_one(struct Client *to, struct Client *from, MessageTag *mtag
* -avalon
*/
void sendto_prefix_one(aClient *to, aClient *from, MessageTag *mtags, const char *pattern, ...)
void sendto_prefix_one(aClient *to, aClient *from, MessageTag *mtags, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
va_start(vl, pattern);
@@ -943,7 +943,7 @@ void sendto_prefix_one(aClient *to, aClient *from, MessageTag *mtags, const char
*
* Send to *local* ops only but NOT +s nonopers.
*/
void sendto_realops(char *pattern, ...)
void sendto_realops(FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
aClient *cptr;
@@ -962,7 +962,7 @@ void sendto_realops(char *pattern, ...)
}
/* Sends a message to all (local) opers AND logs to the ircdlog (as LOG_ERROR) */
void sendto_realops_and_log(char *fmt, ...)
void sendto_realops_and_log(FORMAT_STRING(const char *fmt), ...)
{
va_list vl;
static char buf[2048];
@@ -1123,7 +1123,7 @@ void sendto_one_nickcmd(aClient *cptr, aClient *sptr, char *umodes)
* has a % in their nick, which is a safe assumption since % is illegal.
*/
void sendnotice(aClient *to, char *pattern, ...)
void sendnotice(aClient *to, FORMAT_STRING(const char *pattern), ...)
{
static char realpattern[1024];
va_list vl;
@@ -1136,7 +1136,7 @@ char *name = *to->name ? to->name : "*";
va_end(vl);
}
void sendtxtnumeric(aClient *to, char *pattern, ...)
void sendtxtnumeric(aClient *to, FORMAT_STRING(const char *pattern), ...)
{
static char realpattern[1024];
va_list vl;
@@ -1162,7 +1162,7 @@ void sendnumeric(aClient *to, int numeric, ...)
}
/** Send numeric to IRC client */
void sendnumericfmt(aClient *to, int numeric, char *pattern, ...)
void sendnumericfmt(aClient *to, int numeric, FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
char realpattern[512];
@@ -1189,7 +1189,7 @@ void sendnumericfmt(aClient *to, int numeric, char *pattern, ...)
* By the way, did I already mention that you SHOULD NOT USE THIS
* FUNCTION? ;)
*/
void send_raw_direct(aClient *user, char *pattern, ...)
void send_raw_direct(aClient *user, FORMAT_STRING(FORMAT_STRING(const char *pattern)), ...)
{
va_list vl;
int sendlen;
@@ -1203,7 +1203,7 @@ void send_raw_direct(aClient *user, char *pattern, ...)
/** Send a message to all locally connected IRCOps and log the error.
*/
void sendto_ops_and_log(char *pattern, ...)
void sendto_ops_and_log(FORMAT_STRING(const char *pattern), ...)
{
va_list vl;
char buf[1024];