⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 missing.h

📁 使用最广泛的radius的linux的源码
💻 H
字号:
#ifndef _FR_MISSING_H#define _FR_MISSING_H/* * missing.h	Replacements for functions that are or can be *		missing on some platforms. * * Version:	$Id: missing.h,v 1.42 2008/02/16 09:20:06 aland Exp $ * */#include <freeradius-devel/ident.h>RCSIDH(missing_h, "$Id: missing.h,v 1.42 2008/02/16 09:20:06 aland Exp $")#include <freeradius-devel/autoconf.h>#ifdef HAVE_STDINT_H#include <stdint.h>#endif#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_INTTYPES_H#include <inttypes.h>#endif#ifdef HAVE_STRINGS_H#include <strings.h>#endif#ifdef HAVE_STRING_H#include <string.h>#endif#ifdef HAVE_NETDB_H#include <netdb.h>#endif#ifdef HAVE_NETINET_IN_H#include	<netinet/in.h>#endif#ifdef HAVE_ARPA_INET_H#include	<arpa/inet.h>#endif#ifdef HAVE_SYS_SELECT_H#include <sys/select.h>#endif#ifdef HAVE_SYS_SOCKET_H#include <sys/socket.h>#endif#ifdef HAVE_UNISTD_H#include <unistd.h>#endif/* *  Check for inclusion of <time.h>, versus <sys/time.h> *  Taken verbatim from the autoconf manual. */#if TIME_WITH_SYS_TIME# include <sys/time.h># include <time.h>#else# ifdef HAVE_SYS_TIME_H#  include <sys/time.h># else#  include <time.h># endif#endif/* *	Don't look for winsock.h if we're on cygwin. */#ifndef __CYGWIN__#ifdef HAVE_WINSOCK_H#include <winsock.h>#endif#endif#ifdef __APPLE__#undef DARWIN#define DARWIN (1)#endif/* *	Functions from missing.c */#ifndef HAVE_STRNCASECMPextern int strncasecmp(char *s1, char *s2, int n);#endif#ifndef HAVE_STRCASECMPextern int strcasecmp(char *s1, char *s2);#endif#ifndef HAVE_STRSEPextern char *strsep(char **stringp, const char *delim);#endif#ifndef HAVE_LOCALTIME_Rstruct tm;struct tm *localtime_r(const time_t *l_clock, struct tm *result);#endif#ifndef HAVE_CTIME_Rchar *ctime_r(const time_t *l_clock, char *l_buf);#endif#if defined(NEED_DECLARATION_CRYPT) || !defined(HAVE_CRYPT)char *crypt(char *key, char *salt);#endif#ifdef NEED_DECLARATION_STRNCASECMPint strncasecmp(char *s1, char *s2, int n);#endif#ifdef NEED_DECLARATION_STRCASECMPint strcasecmp(char *s1, char *s2);#endif#if defined(NEED_DECLARATION_INET_ATON) || !defined(HAVE_INET_ATON)struct in_addr;int inet_aton(const char *cp, struct in_addr *inp);#endif#ifndef HAVE_SETLINEBUF#ifdef HAVE_SETVBUF#define setlinebuf(x) setvbuf(x, NULL, _IOLBF, 0)#else#define setlinebuf(x)     0#endif#endif#ifdef NEED_DECLARATION_SETLINEBUF#define setlinebuf(x)     0#endif#ifdef NEED_DECLARATION_GETUSERSHELLchar *getusershell(void);#endif#ifdef NEED_DECLARATION_ENDUSERSHELLvoid endusershell(void);#endif#ifndef INADDR_ANY#define INADDR_ANY      ((uint32_t) 0x00000000)#endif#ifndef INADDR_LOOPBACK#define INADDR_LOOPBACK ((uint32_t) 0x7f000001) /* Inet 127.0.0.1 */#endif#ifndef INADDR_NONE#define INADDR_NONE     ((uint32_t) 0xffffffff)#endif#ifndef INADDRSZ#define INADDRSZ 4#endif#ifndef INET_ADDRSTRLEN#define INET_ADDRSTRLEN 16#endif#ifndef AF_UNSPEC#define AF_UNSPEC 0#endif#ifndef AF_INET6#define AF_INET6 10#endif#ifndef HAVE_STRUCT_IN6_ADDRstruct in6_addr{	union {		uint8_t	u6_addr8[16];		uint16_t u6_addr16[8];		uint32_t u6_addr32[4];	} in6_u;#define s6_addr			in6_u.u6_addr8#define s6_addr16		in6_u.u6_addr16#define s6_addr32		in6_u.u6_addr32};#ifndef IN6ADDRSZ#define IN6ADDRSZ 16#endif#ifndef INET6_ADDRSTRLEN#define INET6_ADDRSTRLEN 46#endif#ifndef IN6ADDR_ANY_INIT#define IN6ADDR_ANY_INIT 	{{{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }}}#endif#ifndef IN6ADDR_LOOPBACK_INIT#define IN6ADDR_LOOPBACK_INIT 	{{{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }}}#endif#ifndef IN6_IS_ADDR_UNSPECIFIED#define IN6_IS_ADDR_UNSPECIFIED(a) \	(((__const uint32_t *) (a))[0] == 0				      \	 && ((__const uint32_t *) (a))[1] == 0				      \	 && ((__const uint32_t *) (a))[2] == 0				      \	 && ((__const uint32_t *) (a))[3] == 0)#endif#ifndef IN6_IS_ADDR_LOOPBACK#define IN6_IS_ADDR_LOOPBACK(a) \	(((__const uint32_t *) (a))[0] == 0				      \	 && ((__const uint32_t *) (a))[1] == 0				      \	 && ((__const uint32_t *) (a))[2] == 0				      \	 && ((__const uint32_t *) (a))[3] == htonl (1))#endif#ifndef IN6_IS_ADDR_MULTICAST#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)#endif#ifndef IN6_IS_ADDR_LINKLOCAL#define IN6_IS_ADDR_LINKLOCAL(a) \	((((__const uint32_t *) (a))[0] & htonl (0xffc00000))		      \	 == htonl (0xfe800000))#endif#ifndef IN6_IS_ADDR_SITELOCAL#define IN6_IS_ADDR_SITELOCAL(a) \	((((__const uint32_t *) (a))[0] & htonl (0xffc00000))		      \	 == htonl (0xfec00000))#endif#ifndef IN6_IS_ADDR_V4MAPPED#define IN6_IS_ADDR_V4MAPPED(a) \	((((__const uint32_t *) (a))[0] == 0)				      \	 && (((__const uint32_t *) (a))[1] == 0)			      \	 && (((__const uint32_t *) (a))[2] == htonl (0xffff)))#endif#ifndef IN6_IS_ADDR_V4COMPAT#define IN6_IS_ADDR_V4COMPAT(a) \	((((__const uint32_t *) (a))[0] == 0)				      \	 && (((__const uint32_t *) (a))[1] == 0)			      \	 && (((__const uint32_t *) (a))[2] == 0)			      \	 && (ntohl (((__const uint32_t *) (a))[3]) > 1))#endif#ifndef IN6_ARE_ADDR_EQUAL#define IN6_ARE_ADDR_EQUAL(a,b) \	((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0])     \	 && (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1])  \	 && (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2])  \	 && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))#endif#endif /* HAVE_STRUCT_IN6_ADDR *//* *	Functions from getaddrinfo.c */#ifndef HAVE_STRUCT_SOCKADDR_STORAGEstruct sockaddr_storage{    uint16_t ss_family; 	/* Address family, etc.  */    char ss_padding[128 - (sizeof(uint16_t))];};#endif /* HAVE_STRUCT_SOCKADDR_STORAGE */#ifndef HAVE_STRUCT_ADDRINFO/* for old netdb.h */#ifndef EAI_SERVICE#define EAI_MEMORY      2#define EAI_FAMILY      5    /* ai_family not supported */#define EAI_NONAME      8    /* hostname nor servname provided, or not known */#define EAI_SERVICE     9   /* servname not supported for ai_socktype */#endif/* dummy value for old netdb.h */#ifndef AI_PASSIVE#define AI_PASSIVE      1#define AI_CANONNAME    2#define AI_NUMERICHOST  4#define NI_NUMERICHOST  2#define NI_NAMEREQD     4#define NI_NUMERICSERV  8struct addrinfo{  int ai_flags;			/* Input flags.  */  int ai_family;		/* Protocol family for socket.  */  int ai_socktype;		/* Socket type.  */  int ai_protocol;		/* Protocol for socket.  */  socklen_t ai_addrlen;		/* Length of socket address.  */  struct sockaddr *ai_addr;	/* Socket address for socket.  */  char *ai_canonname;		/* Canonical name for service location.  */  struct addrinfo *ai_next;	/* Pointer to next in list.  */};#endif /* AI_PASSIVE */#endif /* HAVE_STRUCT_ADDRINFO *//* Translate name of a service location and/or a service name to set of   socket addresses. */#ifndef HAVE_GETADDRINFOextern int getaddrinfo (const char *__name,			const char *__service,			const struct addrinfo *__req,			struct addrinfo **__pai);/* Free `addrinfo' structure AI including associated storage.  */extern void freeaddrinfo (struct addrinfo *__ai);/* Convert error return from getaddrinfo() to a string.  */extern const char *gai_strerror (int __ecode);#endif/* Translate a socket address to a location and service name. */#ifndef HAVE_GETNAMEINFOextern int getnameinfo (const struct sockaddr *__sa,			socklen_t __salen, char *__host,			size_t __hostlen, char *__serv,			size_t __servlen, unsigned int __flags);#endif/* *	Functions from snprintf.c */#ifndef HAVE_VSNPRINTF#include <stdarg.h>extern int vsnprintf(char *str, size_t count, const char *fmt, va_list arg);#endif#ifndef HAVE_SNPRINTFextern int snprintf(char *str, size_t count, const char *fmt, ...);#endif/* *	Functions from strl{cat,cpy}.c */#ifndef HAVE_STRLCPYextern size_t strlcpy(char *dst, const char *src, size_t siz);#endif#ifndef HAVE_STRLCATextern size_t strlcat(char *dst, const char *src, size_t siz);#endif#ifndef INT16SZ#define INT16SZ (2)#endif#ifndef HAVE_GMTIME_Rstruct tm *gmtime_r(const time_t *l_clock, struct tm *result);#endif#ifndef HAVE_GETTIMEOFDAYint gettimeofday (struct timeval *tv, void *tz);#endif#ifdef WIN32#undef mkdir#define mkdir(_d, _p) mkdir(_d)#define FR_DIR_SEP '\\'#define FR_DIR_IS_RELATIVE(p) ((*p && (p[1] != ':')) || ((*p != '\\') && (*p != '\\')))#else#define FR_DIR_SEP '/'#define FR_DIR_IS_RELATIVE(p) ((*p) != '/')#endif#ifdef HAVE_SYS_LOCKING_H#include <sys/locking.h>#define lockf _locking#define F_ULOCK _LK_UNLCK /* Unlock locked sections. */#define F_LOCK  _LK_LOCK  /* Lock a section for exclusive use. */#define F_TLOCK _LK_NBLCK /* Test and lock a section for exclusive use */#define F_TEST  _LK_RLCK  /* Test section for locks by other processes. */#endif#ifndef offsetof# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)#endif#endif /* _FR_MISSING_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -