static void handle_main_input(struct regedit *regedit, int c) { switch (c) { case '\t': regedit->tree_input = !regedit->tree_input; print_heading(regedit); break; default: if (regedit->tree_input) { handle_tree_input(regedit, c); } else { handle_value_input(regedit, c); } } }
static void handle_main_input(struct regedit *regedit, int c) { switch (c) { case 18: { /* CTRL-R */ struct tree_node *root, *node; const char **path; node = tree_view_get_current_node(regedit->keys); path = tree_node_get_path(regedit, node); SMB_ASSERT(path != NULL); root = tree_node_new_root(regedit, regedit->registry_context); SMB_ASSERT(root != NULL); tree_view_set_root(regedit->keys, root); tree_view_set_path(regedit->keys, path); node = tree_view_get_current_node(regedit->keys); value_list_load(regedit->vl, node->key); tree_view_show(regedit->keys); value_list_show(regedit->vl); print_path(regedit, node); talloc_free(discard_const(path)); break; } case 'f': case 'F': case '/': { int rv; struct regedit_search_opts *opts; struct tree_node *node; opts = ®edit->active_search; rv = dialog_search_input(regedit, opts); if (rv == DIALOG_OK) { SMB_ASSERT(opts->query != NULL); opts->match = find_substring_nocase; node = regedit->keys->root->child_head; if (opts->search_case) { opts->match = find_substring; } if (!opts->search_recursive) { node = tree_view_get_current_node(regedit->keys); node = tree_node_first(node); } regedit_search(regedit, node, NULL, SEARCH_NEXT); } break; } case 'x': regedit_search_repeat(regedit, SEARCH_NEXT); break; case 'X': regedit_search_repeat(regedit, SEARCH_PREV); break; case '\t': regedit->tree_input = !regedit->tree_input; print_heading(regedit); break; default: if (regedit->tree_input) { handle_tree_input(regedit, c); } else { handle_value_input(regedit, c); } } }