All pastes #26450 Raw Edit

Someone

public text v1 · immutable
#26450 ·published 2005-10-24 04:53 UTC
rendered paste body
int opbx_cli_command(int fd, char *s)
{
        char *argv[OPBX_MAX_ARGS];
        struct opbx_cli_entry *e;
        int x;
        char *dup;
        int tws;

        if ((dup = parse_args(s, &x, argv, sizeof(argv) / sizeof(argv[0]), &tws))) {
                /* We need at least one entry, or ignore */
                if (x > 0) {
                        opbx_mutex_lock(&clilock);
                        e = find_cli(argv, 0);
                        if (e)
                                e->inuse++;
                        opbx_mutex_unlock(&clilock);
                        if (e) {
                                switch(e->handler(fd, x, argv)) {
                                case RESULT_SHOWUSAGE:
                                        opbx_cli(fd, "%s", e->usage);
                                        break;
                                }
                        } else
                                opbx_cli(fd, "No such command '%s' (type 'help' for help)\n", find_best(argv));
                        if (e) {
                                opbx_mutex_lock(&clilock);
                                e->inuse--;
                                opbx_mutex_unlock(&clilock);
                        }
                }
                free(dup);
        } else {
                opbx_log(LOG_WARNING, "Out of memory\n");
                return -1;
        }
        return 0;
}