X-Git-Url: https://git.octo.it/?p=collection4.git;a=blobdiff_plain;f=src%2Faction_search.c;h=27b6a0efb2e700d18c5c83431bc3d18dbc9abc0c;hp=96874608ebf132b2d654a2c5625ddbf7877ed21c;hb=d00ed057f5ca87431c18ecbf9c45364eb85c24f4;hpb=a179bbd8ce683ab581b1adb7eb0cfc5360c5308e diff --git a/src/action_search.c b/src/action_search.c index 9687460..27b6a0e 100644 --- a/src/action_search.c +++ b/src/action_search.c @@ -36,6 +36,7 @@ #include "graph_instance.h" #include "graph_list.h" #include "utils_cgi.h" +#include "utils_search.h" #include #include @@ -145,7 +146,8 @@ static int print_graph_inst_html (graph_config_t *cfg, /* {{{ */ struct page_data_s { - const char *search_term; + char *search_term; + search_info_t *search_info; }; typedef struct page_data_s page_data_t; @@ -156,7 +158,6 @@ static int print_search_result (void *user_data) /* {{{ */ /* graph_index = */ -1, /* graph_limit = */ 20, /* graph_more = */ 0, /* inst_index = */ -1, /* inst_limit = */ 5, /* inst more = */ 0, /* search_term = */ pg_data->search_term }; - char *term_lc; char *search_term_html; assert (pg_data->search_term != NULL); @@ -168,28 +169,9 @@ static int print_search_result (void *user_data) /* {{{ */ printf (" \n"); @@ -254,49 +236,51 @@ static int print_search_form (void *user_data) /* {{{ */ return (0); } /* }}} int print_search_form */ -static int search_html (const char *term) /* {{{ */ +static int search_html (page_data_t *pg_data) /* {{{ */ { - page_data_t pg_data; page_callbacks_t pg_callbacks = PAGE_CALLBACKS_INIT; char title[512]; - if (term != NULL) + if (pg_data->search_term != NULL) snprintf (title, sizeof (title), "Graphs matching \"%s\"", - term); + pg_data->search_term); else strncpy (title, "Search", sizeof (title)); title[sizeof (title) - 1] = 0; - memset (&pg_data, 0, sizeof (pg_data)); - pg_data.search_term = term; - pg_callbacks.top_right = html_print_search_box; pg_callbacks.middle_left = left_menu; - if (term != NULL) + if (pg_data->search_term != NULL) pg_callbacks.middle_center = print_search_result; else pg_callbacks.middle_center = print_search_form; - html_print_page (title, &pg_callbacks, &pg_data); + html_print_page (title, &pg_callbacks, pg_data); return (0); } /* }}} int search_html */ int action_search (void) /* {{{ */ { - char *search; + page_data_t pg_data; int status; - gl_update (); - - search = strtolower_copy (param ("q")); - if ((search != NULL) && (search[0] == 0)) + pg_data.search_term = strtolower_copy (param ("q")); + if ((pg_data.search_term != NULL) && (pg_data.search_term[0] == 0)) + { + free (pg_data.search_term); + pg_data.search_term = NULL; + pg_data.search_info = NULL; + } + else { - free (search); - search = NULL; + pg_data.search_info = search_parse (pg_data.search_term); } - status = search_html (search); - free (search); + + status = search_html (&pg_data); + + free (pg_data.search_term); + search_destroy (pg_data.search_info); return (status); } /* }}} int action_search */