/* * Take a line of input and process it, return TRUE if profanity is to * continue, FALSE otherwise */ gboolean process_input(char *inp) { log_debug("Input received: %s", inp); gboolean result = FALSE; g_strstrip(inp); // add line to history if something typed if (strlen(inp) > 0) { cmd_history_append(inp); } // just carry on if no input if (strlen(inp) == 0) { result = TRUE; // handle command if input starts with a '/' } else if (inp[0] == '/') { char *inp_cpy = strdup(inp); char *command = strtok(inp_cpy, " "); result = cmd_execute(command, inp); free(inp_cpy); // call a default handler if input didn't start with '/' } else { result = cmd_execute_default(inp); } ui_input_clear(); roster_reset_search_attempts(); return result; }
void find_twice_returns_first_when_two_match_and_reset(void **state) { roster_create(); roster_add("James", NULL, NULL, NULL, FALSE); roster_add("Jamie", NULL, NULL, NULL, FALSE); roster_add("Bob", NULL, NULL, NULL, FALSE); char *result1 = roster_contact_autocomplete("Jam"); roster_reset_search_attempts(); char *result2 = roster_contact_autocomplete(result1); assert_string_equal("James", result2); free(result1); free(result2); roster_destroy(); }