m_cap: use rb_snprintf_append() instead of pointer math
This commit is contained in:
parent
105a4985b4
commit
ccb75e917e
1 changed files with 6 additions and 28 deletions
|
@ -152,20 +152,16 @@ clicap_generate(struct Client *source_p, const char *subcmd, int flags, int clea
|
||||||
{
|
{
|
||||||
char buf[BUFSIZE] = { 0 };
|
char buf[BUFSIZE] = { 0 };
|
||||||
char capbuf[BUFSIZE] = { 0 };
|
char capbuf[BUFSIZE] = { 0 };
|
||||||
char *p;
|
|
||||||
int buflen = 0;
|
int buflen = 0;
|
||||||
int curlen, mlen;
|
int curlen, mlen;
|
||||||
struct CapabilityEntry *entry;
|
struct CapabilityEntry *entry;
|
||||||
struct DictionaryIter iter;
|
struct DictionaryIter iter;
|
||||||
|
|
||||||
mlen = sprintf(buf, ":%s CAP %s %s",
|
mlen = snprintf(buf, sizeof buf, ":%s CAP %s %s",
|
||||||
me.name,
|
me.name,
|
||||||
EmptyString(source_p->name) ? "*" : source_p->name,
|
EmptyString(source_p->name) ? "*" : source_p->name,
|
||||||
subcmd);
|
subcmd);
|
||||||
|
|
||||||
p = capbuf;
|
|
||||||
buflen = mlen;
|
|
||||||
|
|
||||||
/* shortcut, nothing to do */
|
/* shortcut, nothing to do */
|
||||||
if(flags == -1)
|
if(flags == -1)
|
||||||
{
|
{
|
||||||
|
@ -199,43 +195,25 @@ clicap_generate(struct Client *source_p, const char *subcmd, int flags, int clea
|
||||||
caplen += strlen(data) + 1;
|
caplen += strlen(data) + 1;
|
||||||
|
|
||||||
/* \r\n\0, possible "-~=", space, " *" */
|
/* \r\n\0, possible "-~=", space, " *" */
|
||||||
if(buflen + caplen >= BUFSIZE - 10)
|
if(buflen + mlen >= BUFSIZE - 10)
|
||||||
{
|
{
|
||||||
/* remove our trailing space -- if buflen == mlen
|
/* remove our trailing space -- if buflen == mlen
|
||||||
* here, we didnt even succeed in adding one.
|
* here, we didnt even succeed in adding one.
|
||||||
*/
|
*/
|
||||||
if(buflen != mlen)
|
capbuf[buflen] = '\0';
|
||||||
*(p - 1) = '\0';
|
|
||||||
else
|
|
||||||
*p = '\0';
|
|
||||||
|
|
||||||
sendto_one(source_p, "%s * :%s", buf, capbuf);
|
sendto_one(source_p, "%s * :%s", buf, capbuf);
|
||||||
|
|
||||||
p = capbuf;
|
|
||||||
buflen = mlen;
|
buflen = mlen;
|
||||||
memset(capbuf, 0, sizeof capbuf);
|
memset(capbuf, 0, sizeof capbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(clear)
|
buflen = rb_snprintf_append(capbuf, sizeof capbuf, "%s%s%s%s ",
|
||||||
{
|
clear ? "-" : "", entry->cap, data != NULL ? "=" : "", data != NULL ? data : "");
|
||||||
*p++ = '-';
|
|
||||||
buflen++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data == NULL)
|
|
||||||
curlen = sprintf(p, "%s ", entry->cap);
|
|
||||||
else
|
|
||||||
curlen = sprintf(p, "%s=%s ", entry->cap, data);
|
|
||||||
|
|
||||||
p += curlen;
|
|
||||||
buflen += curlen;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remove trailing space */
|
/* remove trailing space */
|
||||||
if(buflen != mlen)
|
capbuf[buflen] = '\0';
|
||||||
*(p - 1) = '\0';
|
|
||||||
else
|
|
||||||
*p = '\0';
|
|
||||||
|
|
||||||
sendto_one(source_p, "%s :%s", buf, capbuf);
|
sendto_one(source_p, "%s :%s", buf, capbuf);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue