X-Git-Url: http://git.meshlink.io/?p=meshlink;a=blobdiff_plain;f=examples%2Fgroupchat.c;fp=examples%2Fgroupchat.c;h=18e6f6194b0c67fe58a4a5083e09677adbdea34b;hp=75e259db7d1d8ed16caee6e7cac92abe9b0043f4;hb=8d4b96efb7955eaa96174af4804597f92e124041;hpb=d9a6e9b7951388016638d05656645b22d8723fdb diff --git a/examples/groupchat.c b/examples/groupchat.c index 75e259db..18e6f619 100644 --- a/examples/groupchat.c +++ b/examples/groupchat.c @@ -80,16 +80,9 @@ static void node_status(meshlink_handle_t *mesh, meshlink_node_t *node, bool rea } } -static meshlink_node_t **nodes; -static size_t nnodes; - static void parse_command(meshlink_handle_t *mesh, char *buf) { char *arg = strchr(buf, ' '); char *arg1 = NULL; - meshlink_submesh_t *s = NULL; - static meshlink_submesh_t **submesh = NULL; - static size_t nmemb = 0; - size_t i; if(arg) { *arg++ = 0; @@ -103,38 +96,38 @@ static void parse_command(meshlink_handle_t *mesh, char *buf) { } if(!strcasecmp(buf, "invite")) { - char *invitation; - if(!arg) { fprintf(stderr, "/invite requires an argument!\n"); return; } - if(arg1) { + meshlink_submesh_t *s = NULL; - submesh = devtool_get_all_submeshes(mesh, submesh, &nmemb); + if(arg1) { + size_t nmemb; + meshlink_submesh_t **submeshes = devtool_get_all_submeshes(mesh, NULL, &nmemb); - if(!submesh || !nmemb) { + if(!submeshes || !nmemb) { fprintf(stderr, "Group does not exist!\n"); return; } - for(i = 0; i < nmemb; i++) { - if(!strcmp(arg1, submesh[i]->name)) { - s = submesh[i]; + for(size_t i = 0; i < nmemb; i++) { + if(!strcmp(arg1, submeshes[i]->name)) { + s = submeshes[i]; break; - } else { - s = NULL; } } + free(submeshes); + if(!s) { fprintf(stderr, "Group is not yet created!\n"); return; } } - invitation = meshlink_invite(mesh, s, arg); + char *invitation = meshlink_invite(mesh, s, arg); if(!invitation) { fprintf(stderr, "Could not invite '%s': %s\n", arg, meshlink_strerror(meshlink_errno)); @@ -191,7 +184,9 @@ static void parse_command(meshlink_handle_t *mesh, char *buf) { return; } - if(!(s = meshlink_submesh_open(mesh, arg))) { + meshlink_submesh_t *s = meshlink_submesh_open(mesh, arg); + + if(!s) { fprintf(stderr, "Could not create group: %s\n", meshlink_strerror(meshlink_errno)); } else { fprintf(stderr, "Group '%s' created!\n", s->name); @@ -256,25 +251,29 @@ static void parse_command(meshlink_handle_t *mesh, char *buf) { meshlink_submesh_t *node_group = NULL; if(!arg) { - nodes = meshlink_get_all_nodes(mesh, nodes, &nnodes); + size_t nnodes; + meshlink_node_t **nodes = meshlink_get_all_nodes(mesh, NULL, &nnodes); if(!nnodes) { fprintf(stderr, "Could not get list of nodes: %s\n", meshlink_strerror(meshlink_errno)); - } else { - fprintf(stderr, "%lu known nodes:\n", (unsigned long)nnodes); + return; + } - for(size_t i = 0; i < nnodes; i++) { - fprintf(stderr, " %lu. %s", (unsigned long)i, nodes[i]->name); + fprintf(stderr, "%lu known nodes:\n", (unsigned long)nnodes); - if((node_group = meshlink_get_node_submesh(mesh, nodes[i]))) { - fprintf(stderr, "\t%s", node_group->name); - } + for(size_t i = 0; i < nnodes; i++) { + fprintf(stderr, " %lu. %s", (unsigned long)i, nodes[i]->name); - fprintf(stderr, "\n"); + if((node_group = meshlink_get_node_submesh(mesh, nodes[i]))) { + fprintf(stderr, "\t%s", node_group->name); } fprintf(stderr, "\n"); } + + fprintf(stderr, "\n"); + + free(nodes); } else { meshlink_node_t *node = meshlink_get_node(mesh, arg); @@ -296,45 +295,47 @@ static void parse_command(meshlink_handle_t *mesh, char *buf) { return; } - submesh = devtool_get_all_submeshes(mesh, submesh, &nmemb); + size_t nmemb; + meshlink_submesh_t **submeshes = devtool_get_all_submeshes(mesh, NULL, &nmemb); - if(!submesh || !nmemb) { + if(!submeshes || !nmemb) { fprintf(stderr, "Group does not exist!\n"); return; } - for(i = 0; i < nmemb; i++) { - if(!strcmp(arg, submesh[i]->name)) { - s = submesh[i]; + meshlink_submesh_t *s = NULL; + + for(size_t i = 0; i < nmemb; i++) { + if(!strcmp(arg, submeshes[i]->name)) { + s = submeshes[i]; break; - } else { - s = NULL; } } + free(submeshes); + if(!s) { fprintf(stderr, "Group %s does not exist!\n", arg); return; } - nodes = meshlink_get_all_nodes_by_submesh(mesh, s, nodes, &nnodes); + size_t nnodes; + meshlink_node_t **nodes = meshlink_get_all_nodes_by_submesh(mesh, s, NULL, &nnodes); - if(!nodes) { + if(!nodes || !nnodes) { fprintf(stderr, "Group %s does not contain any nodes!\n", arg); return; } - if(nnodes <= 0) { - fprintf(stderr, "Could not get list of nodes for group %s: %s\n", arg, meshlink_strerror(meshlink_errno)); - } else { - fprintf(stderr, "%zu known nodes in group %s:", nnodes, arg); - - for(size_t i = 0; i < nnodes; i++) { - fprintf(stderr, " %s", nodes[i]->name); - } + fprintf(stderr, "%zu known nodes in group %s:", nnodes, arg); - fprintf(stderr, "\n"); + for(size_t i = 0; i < nnodes; i++) { + fprintf(stderr, " %s", nodes[i]->name); } + + fprintf(stderr, "\n"); + + free(nodes); } else if(!strcasecmp(buf, "quit")) { fprintf(stderr, "Bye!\n"); fclose(stdin);