Beispiel #1
0
Datei: srv.c Projekt: m101/ihf
int main(int argc, char *argv[]) {
    struct ihf_msg *msg = NULL;
    uint8_t *req = NULL;
    int ret = 0;
    int len;

    req = malloc(sizeof(char) * BUFMAX);
    if (!req) {
        fprintf(stderr, "cannot allocate receiving request buffer !\n");
        ret = -1;
        goto exit;
    }
    len = read(STDIN_FILENO, req, BUFMAX);

    msg = msg_unpack(req, len);
    if (!msg) {
        fprintf(stderr, "error unpacking message\n");
        ret = -1;
        goto exit;
    }
    switch (msg->type) {
        case MSG_TYPE_INIT:
            cmd_init();
            break;
        case MSG_TYPE_KILL:
            cmd_kill();
            break;
        case MSG_TYPE_EXEC:
            cmd_exec(msg->arg, msg->arglen);
            break;
        case MSG_TYPE_READ:
            cmd_read();
            break;
        case MSG_TYPE_WRITE:
            cmd_write(msg->arg, msg->arglen);
            break;
        default:
            fprintf(stderr, "unknown request type %d\n", msg->type);
            ret = -1;
            goto exit;
    }

exit:
    if (req)
        free(req);
    if (msg)
        free(msg);

    return ret;
}
Beispiel #2
0
static int
run_cmd(int argc, char **argv)
{
	if (strncmp(argv[0], "help", 4) == 0)
		usage(stdout, 0);
	else if (strncmp(argv[0], "version", 8) == 0) {
		about();
		return 0;
	}
	else if (strncmp(argv[0], "hate", 5) == 0)
		return cmd_hate(argc, argv);
	else if (strncmp(argv[0], "love", 5) == 0)
		return cmd_love(argc, argv);
	else if (strncmp(argv[0], "kill", 5) == 0)
		return cmd_kill(argc, argv);
	else if (strncmp(argv[0], "unkill", 7) == 0)
		return cmd_unkill(argc, argv);
	else if (strncmp(argv[0], "rate", 5) == 0)
		return cmd_rate(argc, argv);
	else if (strncmp(argv[0], "rateabs", 8) == 0)
		return cmd_rate_absolute(argc, argv);
	else if (strncmp(argv[0], "list", 5) == 0)
		return cmd_list(argc, argv);
	else if (strncmp(argv[0], "listinfo", 9) == 0)
		return cmd_listinfo(argc, argv);
	else if (strncmp(argv[0], "addtag", 7) == 0)
		return cmd_addtag(argc, argv);
	else if (strncmp(argv[0], "rmtag", 6) == 0)
		return cmd_rmtag(argc, argv);
	else if (strncmp(argv[0], "listtags", 9) == 0)
		return cmd_listtags(argc, argv);
	else if (strncmp(argv[0], "count", 6) == 0)
		return cmd_count(argc, argv);
	else if (strncmp(argv[0], "karma", 6) == 0)
		return cmd_karma(argc, argv);
	fprintf(stderr, "Unknown command `%s'\n", argv[0]);
	usage(stderr, 1);
}
Beispiel #3
0
void		my_cmd2(char **com, int const cfd)
{
  if (strcmp(com[0], "/part") == 0)
    cmd_part(com, cfd);
  else if (strcmp(com[0], "/list") == 0)
    cmd_list(com, cfd);
  else if (strcmp(com[0], "/quit") == 0)
    cmd_quit(com, cfd);
  else if (strcmp(com[0], "/users") == 0)
    cmd_users(com, cfd);
  else if (strcmp(com[0], "/msg") == 0)
    cmd_mp(com, cfd);
  else if (strcmp(com[0], "/topic") == 0)
    cmd_topic(com, cfd);
  else if (strcmp(com[0], "/kick") == 0)
    cmd_kick(com, cfd);
  else if (strcmp(com[0], "/kill") == 0)
    cmd_kill(com, cfd);
  else if (strcmp(com[0], "/ping") == 0)
    dprintf(cfd, "PING \r\n");
  else
    cmd_msg(com, cfd);
}
Beispiel #4
0
int
main(int argc, char **argv)
{
    struct arguments args;
    int rc;

    rc = -1;
    memset(&args, 0, sizeof(args));
    argp_parse(&argp, argc, argv, 0, 0, &args);
    switch (args.cmd) {
    case CMD_INIT:
        rc = cmd_init(&args);
        break;
    case CMD_LIST:
        rc = cmd_list(&args);
        break;
    case CMD_INSERT:
        rc = cmd_insert(&args);
        break;
    case CMD_RETRIEVE:
        rc = cmd_retrieve(&args);
        break;
    case CMD_KILL:
        rc = cmd_kill(&args);
        break;
    case CMD_INTERACTIVE:
        rc = cmd_interactive(&args);
        break;
    default:
        fprintf(stderr, "invalid command\n");
        goto out;
    }

 out:
    return rc;
}