/tests/distaf/

lic License, version 2 (GPLv2), in all cases as published by the Free Software Foundation. */ #include #include #include #include #include #include "cli.h" #include "cli-cmd.h" #include "cli-mem-types.h" #include "protocol-common.h" #include static int cmd_done; static int cmd_sent; static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; static pthread_mutex_t cond_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t conn = PTHREAD_COND_INITIALIZER; static pthread_mutex_t conn_mutex = PTHREAD_MUTEX_INITIALIZER; int cli_op_ret = 0; int connected = 0; int cli_cmd_log_help_cbk (struct cli_state *state, struct cli_cmd_word *in_word, const char **words, int wordcount); static unsigned cli_cmd_needs_connection (struct cli_cmd_word *word) { if (!strcasecmp ("quit", word->word)) return 0; if (!strcasecmp ("help", word->word)) return 0; if (!strcasecmp ("getwd", word->word)) return 1; if (!strcasecmp ("exit", word->word)) return 0; return CLI_DEFAULT_CONN_TIMEOUT; } int cli_cmd_status_reset (void) { int ret = 0; ret = cli_cmd_lock (); { if (ret == 0) { cmd_sent = 0; cmd_done = 0; } } ret = cli_cmd_unlock (); return ret; } int cli_cmd_sent_status_get (int *status) { int ret = 0; GF_ASSERT (status); ret = cli_cmd_lock (); { if (ret == 0) *status = cmd_sent; } ret = cli_cmd_unlock (); return ret; } int cli_cmd_process (struct cli_state *state, int argc, char **argv) { int ret = 0; struct cli_cmd_word *word = NULL; struct cli_cmd_word *next = NULL; int i = 0; word = &state->tree.root; if (!argc) return 0; for (i = 0; i < argc; i++) { next = cli_cmd_nextword (word, argv[i]); word = next; if (!word) break; if (word->cbkfn) break; } if (!word) { cli_out ("unrecognized word: %s (position %d)", argv[i], i); return -1; } if (!word->cbkfn) { cli_out ("unrecognized command"); return -1; } if ( strcmp (word->word,"help")==0 ) goto callback; state->await_connected = cli_cmd_needs_connection (word); ret = cli_cmd_await_connected (state->await_connected); if (ret) { cli_out ("Connection failed. Please check if gluster " "daemon is operational."); gf_log ("", GF_LOG_INFO, "Exiting with: %d", ret); exit (ret); } callback: ret = word->cbkfn (state, word, (const char **)argv, argc); (void) cli_cmd_status_reset (); return ret; } int cli_cmd_input_token_count (const char *text) { int count = 0; const char *trav = NULL; int is_spc = 1; for (trav = text; *trav; trav++) { if (*trav ==