[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [libmicrohttpd] 02/04: Added ability to compile demos witho
From: |
gnunet |
Subject: |
[GNUnet-SVN] [libmicrohttpd] 02/04: Added ability to compile demos without libmagic, added more accurate check for libmagic in configure. |
Date: |
Fri, 29 Sep 2017 22:06:04 +0200 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit 527700a01e67e35781a4ba789a43e4d982dd5b25
Author: Evgeny Grin (Karlson2k) <address@hidden>
AuthorDate: Fri Sep 29 21:54:05 2017 +0300
Added ability to compile demos without libmagic,
added more accurate check for libmagic in configure.
---
configure.ac | 36 ++++++++++++++++++++++++++++++------
src/examples/Makefile.am | 12 ++++++++----
src/examples/demo.c | 16 +++++++++++++++-
src/examples/demo_https.c | 16 +++++++++++++++-
4 files changed, 68 insertions(+), 12 deletions(-)
diff --git a/configure.ac b/configure.ac
index a5a48210..85da74cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1195,12 +1195,36 @@ then
fi
AM_CONDITIONAL([HAVE_CURL], [test "x$enable_curl" = "xyes"])
-mhd_have_magic_open='no'
-AC_CHECK_HEADERS([magic.h],
- [ AC_CHECK_LIB([[magic]], [[magic_open]], [[mhd_have_magic_open='yes']])
],[],
- [AC_INCLUDES_DEFAULT])
-
-AM_CONDITIONAL([HAVE_MAGIC], [[test "x$mhd_have_magic_open" = "xyes"]])
+mhd_have_libmagic="no"
+SAVE_LIBS="$LIBS"
+LIBS="$LIBS -lmagic"
+AC_MSG_CHECKING([[for suitable libmagic]])
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <magic.h>
+ ]],
+ [[
+ char var_data[256];
+ const char *var_mime;
+ magic_t var_magic = magic_open (MAGIC_MIME_TYPE);
+ (void)magic_load (var_magic, NULL);
+ var_data[0] = 0;
+ var_mime = magic_buffer (var_magic, var_data, 1);
+ magic_close (var_magic);
+ ]]
+ )
+ ],
+ [
+ AC_DEFINE([HAVE_LIBMAGIC], [1], [Define to 1 if you have suitable
libmagic.])
+ mhd_have_libmagic="yes"
+ AC_MSG_RESULT([[yes]])
+ ],
+ [AC_MSG_RESULT([[no]])
+ ]
+)
+LIBS="$SAVE_LIBS"
+AM_CONDITIONAL([HAVE_LIBMAGIC], [[test "x$mhd_have_libmagic" = "xyes"]])
# large file support (> 4 GB)
AC_SYS_LARGEFILE
diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am
index aae7ff48..58f4b4aa 100644
--- a/src/examples/Makefile.am
+++ b/src/examples/Makefile.am
@@ -38,7 +38,6 @@ endif
if HAVE_POSTPROCESSOR
noinst_PROGRAMS += \
post_example
-if HAVE_MAGIC
if HAVE_POSIX_THREADS
noinst_PROGRAMS += demo
if ENABLE_HTTPS
@@ -46,7 +45,6 @@ noinst_PROGRAMS += demo_https
endif
endif
endif
-endif
if ENABLE_DAUTH
noinst_PROGRAMS += \
@@ -100,7 +98,10 @@ demo_CPPFLAGS = \
$(AM_CPPFLAGS) $(CPU_COUNT_DEF)
demo_LDADD = \
$(top_builddir)/src/microhttpd/libmicrohttpd.la \
- $(PTHREAD_LIBS) -lmagic
+ $(PTHREAD_LIBS)
+if HAVE_LIBMAGIC
+demo_LDADD += -lmagic
+endif
demo_https_SOURCES = \
demo_https.c
@@ -110,7 +111,10 @@ demo_https_CPPFLAGS = \
$(AM_CPPFLAGS) $(CPU_COUNT_DEF)
demo_https_LDADD = \
$(top_builddir)/src/microhttpd/libmicrohttpd.la \
- $(PTHREAD_LIBS) -lmagic
+ $(PTHREAD_LIBS)
+if HAVE_LIBMAGIC
+demo_https_LDADD += -lmagic
+endif
benchmark_SOURCES = \
benchmark.c
diff --git a/src/examples/demo.c b/src/examples/demo.c
index f6187676..68b18ce2 100644
--- a/src/examples/demo.c
+++ b/src/examples/demo.c
@@ -35,7 +35,9 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
+#ifdef MHD_HAVE_LIBMAGIC
#include <magic.h>
+#endif /* MHD_HAVE_LIBMAGIC */
#include <limits.h>
#include <ctype.h>
@@ -52,12 +54,14 @@
*/
#define NUMBER_OF_THREADS CPU_COUNT
+#ifdef MHD_HAVE_LIBMAGIC
/**
* How many bytes of a file do we give to libmagic to determine the mime type?
* 16k might be a bit excessive, but ought not hurt performance much anyway,
* and should definitively be on the safe side.
*/
#define MAGIC_HEADER_SIZE (16 * 1024)
+#endif /* MHD_HAVE_LIBMAGIC */
/**
@@ -183,10 +187,12 @@ static struct MHD_Response *request_refused_response;
*/
static pthread_mutex_t mutex;
+#ifdef MHD_HAVE_LIBMAGIC
/**
* Global handle to MAGIC data.
*/
static magic_t magic;
+#endif /* MHD_HAVE_LIBMAGIC */
/**
@@ -686,8 +692,10 @@ generate_page (void *cls,
if (0 != strcmp (url, "/"))
{
/* should be file download */
+#ifdef MHD_HAVE_LIBMAGIC
char file_data[MAGIC_HEADER_SIZE];
ssize_t got;
+#endif /* MHD_HAVE_LIBMAGIC */
const char *mime;
if ( (0 != strcmp (method, MHD_HTTP_METHOD_GET)) &&
@@ -710,13 +718,15 @@ generate_page (void *cls,
return MHD_queue_response (connection,
MHD_HTTP_NOT_FOUND,
file_not_found_response);
+#ifdef MHD_HAVE_LIBMAGIC
/* read beginning of the file to determine mime type */
got = read (fd, file_data, sizeof (file_data));
+ (void) lseek (fd, 0, SEEK_SET);
if (-1 != got)
mime = magic_buffer (magic, file_data, got);
else
+#endif /* MHD_HAVE_LIBMAGIC */
mime = NULL;
- (void) lseek (fd, 0, SEEK_SET);
if (NULL == (response = MHD_create_response_from_fd (buf.st_size,
fd)))
@@ -866,8 +876,10 @@ main (int argc, char *const *argv)
#ifndef MINGW
ignore_sigpipe ();
#endif
+#ifdef MHD_HAVE_LIBMAGIC
magic = magic_open (MAGIC_MIME_TYPE);
(void) magic_load (magic, NULL);
+#endif /* MHD_HAVE_LIBMAGIC */
(void) pthread_mutex_init (&mutex, NULL);
file_not_found_response = MHD_create_response_from_buffer (strlen
(FILE_NOT_FOUND_PAGE),
@@ -905,7 +917,9 @@ main (int argc, char *const *argv)
MHD_destroy_response (internal_error_response);
update_cached_response (NULL);
(void) pthread_mutex_destroy (&mutex);
+#ifdef MHD_HAVE_LIBMAGIC
magic_close (magic);
+#endif /* MHD_HAVE_LIBMAGIC */
return 0;
}
diff --git a/src/examples/demo_https.c b/src/examples/demo_https.c
index 51574fd7..f9376de9 100644
--- a/src/examples/demo_https.c
+++ b/src/examples/demo_https.c
@@ -36,7 +36,9 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
+#ifdef MHD_HAVE_LIBMAGIC
#include <magic.h>
+#endif /* MHD_HAVE_LIBMAGIC */
#include <limits.h>
#include <ctype.h>
@@ -53,12 +55,14 @@
*/
#define NUMBER_OF_THREADS CPU_COUNT
+#ifdef MHD_HAVE_LIBMAGIC
/**
* How many bytes of a file do we give to libmagic to determine the mime type?
* 16k might be a bit excessive, but ought not hurt performance much anyway,
* and should definitively be on the safe side.
*/
#define MAGIC_HEADER_SIZE (16 * 1024)
+#endif /* MHD_HAVE_LIBMAGIC */
/**
@@ -184,10 +188,12 @@ static struct MHD_Response *request_refused_response;
*/
static pthread_mutex_t mutex;
+#ifdef MHD_HAVE_LIBMAGIC
/**
* Global handle to MAGIC data.
*/
static magic_t magic;
+#endif /* MHD_HAVE_LIBMAGIC */
/**
@@ -687,8 +693,10 @@ generate_page (void *cls,
if (0 != strcmp (url, "/"))
{
/* should be file download */
+#ifdef MHD_HAVE_LIBMAGIC
char file_data[MAGIC_HEADER_SIZE];
ssize_t got;
+#endif /* MHD_HAVE_LIBMAGIC */
const char *mime;
if (0 != strcmp (method, MHD_HTTP_METHOD_GET))
@@ -710,13 +718,15 @@ generate_page (void *cls,
return MHD_queue_response (connection,
MHD_HTTP_NOT_FOUND,
file_not_found_response);
+#ifdef MHD_HAVE_LIBMAGIC
/* read beginning of the file to determine mime type */
got = read (fd, file_data, sizeof (file_data));
+ (void) lseek (fd, 0, SEEK_SET);
if (-1 != got)
mime = magic_buffer (magic, file_data, got);
else
+#endif /* MHD_HAVE_LIBMAGIC */
mime = NULL;
- (void) lseek (fd, 0, SEEK_SET);
if (NULL == (response = MHD_create_response_from_fd (buf.st_size,
fd)))
@@ -915,8 +925,10 @@ main (int argc, char *const *argv)
#ifndef MINGW
ignore_sigpipe ();
#endif
+#ifdef MHD_HAVE_LIBMAGIC
magic = magic_open (MAGIC_MIME_TYPE);
(void) magic_load (magic, NULL);
+#endif /* MHD_HAVE_LIBMAGIC */
(void) pthread_mutex_init (&mutex, NULL);
file_not_found_response = MHD_create_response_from_buffer (strlen
(FILE_NOT_FOUND_PAGE),
@@ -956,7 +968,9 @@ main (int argc, char *const *argv)
MHD_destroy_response (internal_error_response);
update_cached_response (NULL);
(void) pthread_mutex_destroy (&mutex);
+#ifdef MHD_HAVE_LIBMAGIC
magic_close (magic);
+#endif /* MHD_HAVE_LIBMAGIC */
return 0;
}
--
To stop receiving notification emails like this one, please contact
address@hidden