aboutsummaryrefslogtreecommitdiff
path: root/weechat/net.c
diff options
context:
space:
mode:
Diffstat (limited to 'weechat/net.c')
-rw-r--r--weechat/net.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/weechat/net.c b/weechat/net.c
index b8e3827..656a7a5 100644
--- a/weechat/net.c
+++ b/weechat/net.c
@@ -347,6 +347,26 @@ void net_handle_recv(int fd,const char *msg){
res.room[roomlen]='\0';
cb(fd,res,payload);
free(res.room);
+ } else if(cmdlen==6&&memcmp(cmd,"online",6)==0){
+ const char *q;
+ if(*p=='\0'||(q=strchr(p+1,' '))==NULL){
+ fprintf(debugf,"net_handle_recv: not enough arguments to 'online' <%s>\n",msg);
+ return;
+ }
+ const char *nump=p+1;
+ const char *usernamep=q+1;
+ const char *endp;
+ struct net_response res=(struct net_response){
+ .type=NET_ONLINE,
+ .online.username=strdup(usernamep),
+ .online.num=strtol(nump,(char**)&endp,10)
+ };
+ if(nump[0]==' '||*endp!=' '){
+ fprintf(debugf,"net_handle_recv: invalid number argument to 'online' <%s>\n",msg);
+ return;
+ }
+ cb(fd,res,payload);
+ free(res.online.username);
} else {
fprintf(debugf,"net_handle_recv: unknown command <%s>\n",msg);
}