diff options
author | montellese <montellese@xbmc.org> | 2015-03-13 00:45:47 +0100 |
---|---|---|
committer | montellese <montellese@xbmc.org> | 2015-03-13 00:48:14 +0100 |
commit | 0e4e1d7ab3e4fd1d45f63c4ec01c14a34db79f46 (patch) | |
tree | 8cb6fa41d38d6b27a76b2d7f4bffa9f6717a0923 /lib/libmicrohttpd/src/examples/fileserver_example_external_select.c | |
parent | 337f5f1e2b8a6c0bee39e202e93103b37e7b993a (diff) |
lib: get rid of copy of libmicrohttpd
Diffstat (limited to 'lib/libmicrohttpd/src/examples/fileserver_example_external_select.c')
-rw-r--r-- | lib/libmicrohttpd/src/examples/fileserver_example_external_select.c | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/lib/libmicrohttpd/src/examples/fileserver_example_external_select.c b/lib/libmicrohttpd/src/examples/fileserver_example_external_select.c deleted file mode 100644 index 6867335b1b..0000000000 --- a/lib/libmicrohttpd/src/examples/fileserver_example_external_select.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - This file is part of libmicrohttpd - (C) 2007, 2008 Christian Grothoff (and other contributing authors) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ -/** - * @file fileserver_example_external_select.c - * @brief minimal example for how to use libmicrohttpd to server files - * @author Christian Grothoff - */ - -#include "platform.h" -#include <microhttpd.h> -#include <sys/stat.h> -#include <unistd.h> - -#define PAGE "<html><head><title>File not found</title></head><body>File not found</body></html>" - -static int -file_reader (void *cls, uint64_t pos, char *buf, int max) -{ - FILE *file = cls; - - fseek (file, pos, SEEK_SET); - return fread (buf, 1, max, file); -} - -static int -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 aptr; - struct MHD_Response *response; - int ret; - FILE *file; - struct stat buf; - - if (0 != strcmp (method, MHD_HTTP_METHOD_GET)) - return MHD_NO; /* unexpected method */ - if (&aptr != *ptr) - { - /* do never respond on first call */ - *ptr = &aptr; - return MHD_YES; - } - *ptr = NULL; /* reset when done */ - file = fopen (&url[1], "rb"); - if (file == NULL) - { - response = MHD_create_response_from_data (strlen (PAGE), - (void *) PAGE, - MHD_NO, MHD_NO); - ret = MHD_queue_response (connection, MHD_HTTP_NOT_FOUND, response); - MHD_destroy_response (response); - } - else - { - stat (&url[1], &buf); - response = MHD_create_response_from_callback (buf.st_size, 32 * 1024, /* 32k page size */ - &file_reader, - file, - (MHD_ContentReaderFreeCallback) - & fclose); - ret = MHD_queue_response (connection, MHD_HTTP_OK, response); - MHD_destroy_response (response); - } - return ret; -} - -int -main (int argc, char *const *argv) -{ - struct MHD_Daemon *d; - time_t end; - time_t t; - struct timeval tv; - fd_set rs; - fd_set ws; - fd_set es; - int max; - unsigned long long mhd_timeout; - - if (argc != 3) - { - printf ("%s PORT SECONDS-TO-RUN\n", argv[0]); - return 1; - } - d = MHD_start_daemon (MHD_USE_DEBUG, - atoi (argv[1]), - NULL, NULL, &ahc_echo, PAGE, MHD_OPTION_END); - if (d == NULL) - return 1; - end = time (NULL) + atoi (argv[2]); - while ((t = time (NULL)) < end) - { - tv.tv_sec = end - t; - tv.tv_usec = 0; - max = 0; - FD_ZERO (&rs); - FD_ZERO (&ws); - FD_ZERO (&es); - if (MHD_YES != MHD_get_fdset (d, &rs, &ws, &es, &max)) - break; /* fatal internal error */ - if (MHD_get_timeout (d, &mhd_timeout) == MHD_YES) - - { - if (tv.tv_sec * 1000 < mhd_timeout) - { - tv.tv_sec = mhd_timeout / 1000; - tv.tv_usec = (mhd_timeout - (tv.tv_sec * 1000)) * 1000; - } - } - select (max + 1, &rs, &ws, &es, &tv); - MHD_run (d); - } - MHD_stop_daemon (d); - return 0; -} |