/* * Read and process poll commands * Return: -1 for quit command * 0 otherwise */ char * process_args(int cmd_argc, char **cmd_argv, Poll **poll_list_ptr) { // some commands need the poll_list head and others // require the address of that head Poll *poll_list = *poll_list_ptr; if (strcmp(cmd_argv[0], "list_polls") == 0 && cmd_argc == 1) { char *buf; buf = print_polls(poll_list); printf("%s", buf); free(buf); } else if (strcmp(cmd_argv[0], "create_poll") == 0 && cmd_argc >= 3) { int label_count = cmd_argc - 2; int result = create_poll(cmd_argv[1], &cmd_argv[2], label_count, poll_list_ptr); if (result == 1) { char *ans = malloc(13); strcpy(ans, "Poll exists"); return ans; } } else if (strcmp(cmd_argv[0], "vote") == 0 && cmd_argc == 3) { char *poll_name = cmd_argv[1]; // better name for clarity of code below // try to add participant to this poll vote(poll_name, poll_list, cmd_argv[2]); } else if (strcmp(cmd_argv[0], "delete_poll") == 0 && cmd_argc == 2) { if (delete_poll(cmd_argv[1], poll_list_ptr) == 1) { char *ans2 = malloc(15); strcpy(ans2, "No poll exists"); return ans2; } } else if (strcmp(cmd_argv[0], "poll_info") == 0 && cmd_argc == 2) { char *buffer; buffer = print_poll_info(cmd_argv[1], poll_list); return buffer; } else if(strcmp(cmd_argv[0], "comment") == 0 && cmd_argc == 3){ comment(cmd_argv[1], poll_list, cmd_argv[2]); }else{ char *ans1 = malloc(17); strcpy(ans1, "Incorrect syntax"); return ans1; } char *ans4 = malloc(5); strcpy(ans4, "NULL"); return ans4; }
/* strawpoll: create polls */ int CmdHandler::strawpoll(char *out, struct command *c) { int opt; static struct l_option long_opts[] = { { "binary", NO_ARG, 'b' }, { "captcha", NO_ARG, 'c' }, { "help", NO_ARG, 'h' }, { "multi", NO_ARG, 'm' }, { 0, 0, 0 } }; if (!P_ALMOD(c->privileges)) { PERM_DENIED(out, c->nick, c->argv[0]); return EXIT_FAILURE; } opt_init(); binary = captcha = multi = false; while ((opt = l_getopt_long(c->argc, c->argv, "bcm", long_opts)) != EOF) { switch (opt) { case 'b': binary = true; break; case 'c': captcha = true; break; case 'h': HELPMSG(out, CMDNAME, CMDUSAGE, CMDDESCR); return EXIT_SUCCESS; case 'm': multi = true; break; case '?': snprintf(out, MAX_MSG, "%s", l_opterr()); return EXIT_FAILURE; default: return EXIT_FAILURE; } } if (l_optind == c->argc) { USAGEMSG(out, CMDNAME, CMDUSAGE); return EXIT_FAILURE; } return create_poll(out, poll, c); }