mirror of
https://git.gnunet.org/libmicrohttpd.git
synced 2026-09-25 04:09:31 +03:00
92 lines
2.7 KiB
C
92 lines
2.7 KiB
C
/*
|
|
This file is part of libmicrohttpd
|
|
Copyright (C) 2014-2016 Karlson2k (Evgeny Grin)
|
|
|
|
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 microhttpd/mhd_compat.h
|
|
* @brief Header for platform missing functions.
|
|
* @author Karlson2k (Evgeny Grin)
|
|
*
|
|
* Provides compatibility for platforms with some missing
|
|
* functionality.
|
|
* Any functions can be implemented as macro on some platforms
|
|
* unless explicitly marked otherwise.
|
|
* Any function argument can be skipped in macro, so avoid
|
|
* variable modification in function parameters.
|
|
*/
|
|
|
|
#ifndef MHD_COMPAT_H
|
|
#define MHD_COMPAT_H 1
|
|
|
|
#include "mhd_options.h"
|
|
#include <stdlib.h>
|
|
#ifdef HAVE_STRING_H /* for strerror() */
|
|
#include <string.h>
|
|
#endif /* HAVE_STRING_H */
|
|
|
|
/* MHD_strerror_ is strerror */
|
|
#define MHD_strerror_(errnum) strerror ((errnum))
|
|
|
|
/* Platform-independent snprintf name */
|
|
#if defined(HAVE_SNPRINTF)
|
|
#define MHD_snprintf_ snprintf
|
|
#else /* ! HAVE_SNPRINTF */
|
|
#if defined(_WIN32) && ! defined(__CYGWIN__)
|
|
/* Emulate snprintf function on W32 */
|
|
int W32_snprintf (char *__restrict s, size_t n, const char *__restrict format,
|
|
...);
|
|
|
|
#define MHD_snprintf_ W32_snprintf
|
|
#else /* ! _WIN32 || __CYGWIN__ */
|
|
#error \
|
|
Your platform does not support snprintf() and MHD does not know how to emulate it on your platform.
|
|
#endif /* ! _WIN32 || __CYGWIN__ */
|
|
#endif /* ! HAVE_SNPRINTF */
|
|
|
|
#ifdef HAVE_RANDOM
|
|
/**
|
|
* Generate pseudo random number at least 30-bit wide.
|
|
* @return pseudo random number at least 30-bit wide.
|
|
*/
|
|
#define MHD_random_() random ()
|
|
#else /* HAVE_RANDOM */
|
|
#ifdef HAVE_RAND
|
|
/**
|
|
* Generate pseudo random number at least 30-bit wide.
|
|
* @return pseudo random number at least 30-bit wide.
|
|
*/
|
|
#define MHD_random_() ( (((long) rand ()) << 15) + (long) rand () )
|
|
#endif /* HAVE_RAND */
|
|
#endif /* HAVE_RANDOM */
|
|
|
|
#ifdef HAVE_CALLOC
|
|
/**
|
|
* MHD_calloc_ is platform-independent calloc()
|
|
*/
|
|
#define MHD_calloc_(n,s) calloc ((n),(s))
|
|
#else /* ! HAVE_CALLOC */
|
|
/**
|
|
* MHD_calloc_ is platform-independent calloc()
|
|
*/
|
|
void *MHD_calloc_ (size_t nelem, size_t elsize);
|
|
|
|
#endif /* ! HAVE_CALLOC */
|
|
|
|
#endif /* MHD_COMPAT_H */
|