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_dirs.c | |
parent | 337f5f1e2b8a6c0bee39e202e93103b37e7b993a (diff) |
lib: get rid of copy of libmicrohttpd
Diffstat (limited to 'lib/libmicrohttpd/src/examples/fileserver_example_dirs.c')
-rw-r--r-- | lib/libmicrohttpd/src/examples/fileserver_example_dirs.c | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/lib/libmicrohttpd/src/examples/fileserver_example_dirs.c b/lib/libmicrohttpd/src/examples/fileserver_example_dirs.c deleted file mode 100644 index 04519c63ea..0000000000 --- a/lib/libmicrohttpd/src/examples/fileserver_example_dirs.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - This file is part of libmicrohttpd - (C) 2007 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.c - * @brief example for how to use libmicrohttpd to serve files (with directory support) - * @author Christian Grothoff - */ - -#include "platform.h" -#include <dirent.h> -#include <microhttpd.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 -dir_reader (void *cls, uint64_t pos, char *buf, int max) -{ - struct dirent *e; - if (max < 512) - return 0; - do - { - e = readdir (cls); - if (e == NULL) - return -1; - } while (e->d_name[0] == '.'); - return snprintf (buf, max, - "<a href=\"/%s\">%s</a><br>", - e->d_name, - e->d_name); -} - - -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_callback (MHD_SIZE_UNKNOWN, - 32 * 1024, - &dir_reader, - opendir ("."), - (MHD_ContentReaderFreeCallback) &closedir); - ret = MHD_queue_response (connection, MHD_HTTP_OK, 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; - - if (argc != 2) - { - printf ("%s PORT\n", argv[0]); - return 1; - } - d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION | MHD_USE_DEBUG, - atoi (argv[1]), - NULL, NULL, &ahc_echo, PAGE, MHD_OPTION_END); - if (d == NULL) - return 1; - while (1) sleep (1); - MHD_stop_daemon (d); - return 0; -} |