Fix adm privmsg parsing.
This commit is contained in:
parent
a7e5ca3d0b
commit
b095e53efb
38
src/bip.c
38
src/bip.c
@ -2003,6 +2003,44 @@ int adm_bip(bip_t *bip, struct link_client *ic, struct line *line,
|
|||||||
{
|
{
|
||||||
int admin = LINK(ic)->user->admin;
|
int admin = LINK(ic)->user->admin;
|
||||||
|
|
||||||
|
if (privmsg) {
|
||||||
|
char *linestr = line->elemv[2];
|
||||||
|
char *ptr = line->elemv[2], *eptr;
|
||||||
|
int slen;
|
||||||
|
|
||||||
|
if (line->elemc != 3)
|
||||||
|
return OK_FORGET;
|
||||||
|
|
||||||
|
line->elemc--;
|
||||||
|
|
||||||
|
while((eptr = strstr(ptr, " "))) {
|
||||||
|
slen = eptr - ptr;
|
||||||
|
if (slen == 0) {
|
||||||
|
ptr++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
line->elemv = realloc(line->elemv,
|
||||||
|
line->elemc * sizeof(char *));
|
||||||
|
line->elemv[line->elemc] = malloc(slen + 1);
|
||||||
|
memcpy(line->elemv[line->elemc], ptr, slen);
|
||||||
|
line->elemv[line->elemc][slen] = 0;
|
||||||
|
line->elemc++;
|
||||||
|
ptr = eptr + 1;
|
||||||
|
}
|
||||||
|
eptr = ptr + strlen(ptr);
|
||||||
|
slen = eptr - ptr;
|
||||||
|
if (slen != 0) {
|
||||||
|
line->elemv = realloc(line->elemv,
|
||||||
|
(line->elemc + 1) * sizeof(char *));
|
||||||
|
slen = eptr - ptr;
|
||||||
|
line->elemv[line->elemc] = malloc(slen + 1);
|
||||||
|
memcpy(line->elemv[line->elemc], ptr, slen);
|
||||||
|
line->elemv[line->elemc][slen] = 0;
|
||||||
|
line->elemc++;
|
||||||
|
}
|
||||||
|
free(linestr);
|
||||||
|
}
|
||||||
|
|
||||||
if (line->elemc < privmsg + 2)
|
if (line->elemc < privmsg + 2)
|
||||||
return OK_FORGET;
|
return OK_FORGET;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user