void * cli_batch (void *d) { struct cli_state *state = NULL; int ret = 0; state = d; ret = cli_cmd_process (state, state->argc, state->argv); gf_log ("", GF_LOG_INFO, "Exiting with: %d", ret); exit (ret); return NULL; }
int cli_cmd_process_line (struct cli_state *state, const char *text) { int count = 0; char **tokens = NULL; char **tokenp = NULL; char *token = NULL; char *copy = NULL; char *saveptr = NULL; int i = 0; int ret = -1; count = cli_cmd_input_token_count (text); tokens = calloc (count + 1, sizeof (*tokens)); if (!tokens) return -1; copy = strdup (text); if (!copy) goto out; tokenp = tokens; for (token = strtok_r (copy, " \t\r\n", &saveptr); token; token = strtok_r (NULL, " \t\r\n", &saveptr)) { *tokenp = strdup (token); if (!*tokenp) goto out; tokenp++; i++; } ret = cli_cmd_process (state, count, tokens); out: free (copy); if (tokens) cli_cmd_tokens_destroy (tokens); return ret; }