From ee1eb89e9a486f8a67f1fab0e997c9268fc138be Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Sat, 19 Nov 2022 23:18:44 +0100 Subject: [PATCH] Handlers in another function --- Makefile | 11 ++++++++--- handlers.c | 41 +++++++++++++++++++++++++++++++++++++++++ handlers.h | 25 +++++++++++++++++++++++++ handlers.o | Bin 0 -> 6272 bytes main.c | 44 +++----------------------------------------- main.o | Bin 0 -> 11144 bytes 6 files changed, 77 insertions(+), 44 deletions(-) create mode 100644 handlers.c create mode 100644 handlers.h create mode 100644 handlers.o create mode 100644 main.o diff --git a/Makefile b/Makefile index b0d5c45..479abfb 100644 --- a/Makefile +++ b/Makefile @@ -5,13 +5,18 @@ CC = gcc CFLAGS = -Wall -g -O2 LDFLAGS = -lmicrohttpd +OBJFILES = main.o handlers.o +DEPS = handlers.h all: nasuh-server -nasuh-server: main.c - $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) +%.o: %.c $(DEPS) + $(CC) -c -o $@ $< $(CFLAGS) + +nasuh-server: $(OBJFILES) + $(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS) clean: - rm -f nasuh-server + rm -f nasuh-server *.o # end of Makefile diff --git a/handlers.c b/handlers.c new file mode 100644 index 0000000..704ff67 --- /dev/null +++ b/handlers.c @@ -0,0 +1,41 @@ +// +// Created by hamo on 11/19/22. +// + +#include "handlers.h" + +enum MHD_Result + handle_all(void * cls, + struct MHD_Connection * connection, + const char * url, + const char * method, + const char * version, + const char * upload_data, + size_t * upload_data_size, + void ** ptr) { + static int dummy; + const char * page = cls; + struct MHD_Response * response; + int ret; + + if (0 != strcmp(method, "GET")) + return MHD_NO; /* unexpected method */ + if (&dummy != *ptr) + { + /* The first time only the headers are valid, + do not respond in the first round... */ + *ptr = &dummy; + return MHD_YES; + } + if (0 != *upload_data_size) + return MHD_NO; /* upload data in a GET!? */ + *ptr = NULL; /* clear context pointer */ + response = MHD_create_response_from_buffer (strlen(page), + (void*) page, + MHD_RESPMEM_PERSISTENT); + ret = MHD_queue_response(connection, + MHD_HTTP_OK, + response); + MHD_destroy_response(response); + return ret; +} diff --git a/handlers.h b/handlers.h new file mode 100644 index 0000000..f80caa0 --- /dev/null +++ b/handlers.h @@ -0,0 +1,25 @@ +// +// Created by hamo on 11/19/22. +// +#include +#include +#include + +#ifndef NASUH_HANDLERS_H +#define NASUH_HANDLERS_H + +#define PAGE "nasuh search engine"\ + "all your programming needs" + +enum MHD_Result + handle_all(void * cls, + struct MHD_Connection * connection, + const char * url, + const char * method, + const char * version, + const char * upload_data, + size_t * upload_data_size, + void ** ptr); + + +#endif //NASUH_HANDLERS_H diff --git a/handlers.o b/handlers.o new file mode 100644 index 0000000000000000000000000000000000000000..0a18a151aa9a81c790b3491cc5de8984f8480bc2 GIT binary patch literal 6272 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 -#include #include #include - -#define PAGE "nasuh search engine"\ - "all your programming needs" - -static enum MHD_Result -ahc_echo(void * cls, - struct MHD_Connection * connection, - const char * url, - const char * method, - const char * version, - const char * upload_data, - size_t * upload_data_size, - void ** ptr) { - static int dummy; - const char * page = cls; - struct MHD_Response * response; - int ret; - - if (0 != strcmp(method, "GET")) - return MHD_NO; /* unexpected method */ - if (&dummy != *ptr) - { - /* The first time only the headers are valid, - do not respond in the first round... */ - *ptr = &dummy; - return MHD_YES; - } - if (0 != *upload_data_size) - return MHD_NO; /* upload data in a GET!? */ - *ptr = NULL; /* clear context pointer */ - response = MHD_create_response_from_buffer (strlen(page), - (void*) page, - MHD_RESPMEM_PERSISTENT); - ret = MHD_queue_response(connection, - MHD_HTTP_OK, - response); - MHD_destroy_response(response); - return ret; -} +#include +#include "handlers.h" int main(int argc, char ** argv) { @@ -54,7 +16,7 @@ int main(int argc, atoi(argv[1]), NULL, NULL, - &ahc_echo, + &handle_all, PAGE, MHD_OPTION_END); if (d == NULL) diff --git a/main.o b/main.o new file mode 100644 index 0000000000000000000000000000000000000000..077d86927bf05d7228df5b7baf40874d49284255 GIT binary patch literal 11144 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