diff options
author | tomsmeding <tom.smeding@gmail.com> | 2017-04-15 18:53:00 +0200 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2017-04-15 19:04:18 +0200 |
commit | 95eec6affee455e1ba935a1781495682b2ee7e9a (patch) | |
tree | 0bec9887dc2d36c04413e0e1a5afa1f11a076455 /weechat/net.c | |
parent | e6bb11fc2801ca5be48ddceeecc5001cd5c39ef6 (diff) |
weechat: Handle _push online
Diffstat (limited to 'weechat/net.c')
-rw-r--r-- | weechat/net.c | 20 |
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); } |