From 9ec8909fef512e71f3a002068cd0635cf959bef2 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Thu, 16 Mar 2017 22:01:49 +0100 Subject: Add command list_members --- command.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'command.c') diff --git a/command.c b/command.c index b701709..b38f3e6 100644 --- a/command.c +++ b/command.c @@ -153,6 +153,35 @@ static bool cmd_list_rooms(struct conn_data *data,const char *tag,const char **a return closed; } +static bool cmd_list_members(struct conn_data *data,const char *tag,const char **args){ + if(data->userid==-1){ + send_error(data->fd,tag,"Not logged in"); + return false; + } + i64 roomid=db_find_room(args[0]); + if(roomid==-1){ + send_error(data->fd,tag,"Room not found"); + return false; + } + if(!db_is_member(roomid,data->userid)){ + send_error(data->fd,tag,"Not in that room"); + return false; + } + + struct db_user_list ul=db_list_members(roomid); + if(ul.count<=0){ + db_nullify_user_list(ul); + return send_list(data->fd,tag,0,NULL); + } + const char *names[ul.count]; + for(i64 i=0;ifd,tag,ul.count,names); + db_nullify_user_list(ul); + return closed; +} + static bool cmd_create_room(struct conn_data *data,const char *tag,const char **args){ (void)args; if(data->userid==-1){ @@ -210,7 +239,7 @@ static bool cmd_send(struct conn_data *data,const char *tag,const char **args){ db_create_message(roomid,data->userid,make_timestamp(),args[1]); bool closed=send_ok(data->fd,tag); - struct db_user_list members=db_get_members(roomid); + struct db_user_list members=db_list_members(roomid); for(i64 i=0;i