From f982fb95044581435e31c765487b45d5ee963519 Mon Sep 17 00:00:00 2001 From: arf20 Date: Tue, 2 Dec 2025 00:00:12 +0100 Subject: search actually working :D --- main.c | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 19d7730..9aa7e76 100644 --- a/main.c +++ b/main.c @@ -41,6 +41,27 @@ static char *index_format_template = NULL; static index_t g_index = NULL; +static const char *result_html_template = + "

%s

%s
\n"; + + +static const char * +generate_results_html(results_t *results) +{ + static char buff[65535]; + + char *pos = buff; + + for (int i = 0; i < results->size; i++) { + pos += snprintf(pos, 65535 - (pos - buff), + result_html_template, + results->results[i]->name, + results->results[i]->path + ); + } + + return buff; +} enum MHD_Result answer_to_connection( void *cls, struct MHD_Connection *connection, @@ -69,8 +90,7 @@ enum MHD_Result answer_to_connection( int ret; if (strcmp(method, "GET") == 0 && strcmp(url, "/") == 0) { - snprintf(buff, BUFF_SIZE, - index_format_template); + snprintf(buff, BUFF_SIZE, index_format_template, "", ""); response = MHD_create_response_from_buffer(strlen(buff), (void*)buff, MHD_RESPMEM_PERSISTENT); @@ -80,20 +100,19 @@ enum MHD_Result answer_to_connection( MHD_destroy_response(response); } else if (strcmp(method, "GET") == 0 && strcmp(url, "/query") == 0) { - snprintf(buff, BUFF_SIZE, - index_format_template); - const char *query = MHD_lookup_connection_value(connection, MHD_GET_ARGUMENT_KIND, "query"); results_t *results = index_lookup(g_index, LOOKUP_SUBSTR, query); - printf("results\n"); - for (size_t i = 0; i < results->size; i++) - printf("\t%s\n", results->results[i]->name); + + snprintf(buff, BUFF_SIZE, index_format_template, query, + generate_results_html(results)); response = MHD_create_response_from_buffer(strlen(buff), (void*)buff, MHD_RESPMEM_PERSISTENT); + results_destroy(results); + printf("%d\n", 200); ret = MHD_queue_response(connection, MHD_HTTP_OK, response); MHD_destroy_response(response); @@ -123,7 +142,7 @@ int main() { fseek(tf, 0, SEEK_END); size_t tfs = ftell(tf); rewind(tf); - index_format_template = malloc(tfs); + index_format_template = malloc(tfs + 1); fread(index_format_template, 1, tfs, tf); fclose(tf); index_format_template[tfs] = '\0'; -- cgit v1.2.3