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

📄 perl.h

📁 MSYS在windows下模拟了一个类unix的终端
💻 H
📖 第 1 页 / 共 5 页
字号:
#ifdef PERL_MICRO /* Last chance to export Perl_my_swap */#  define MYSWAP#endif#if !defined(PERL_FOR_X2P) && !defined(WIN32)#  include "embed.h"#endif#define MEM_SIZE Size_t#if defined(STANDARD_C) && defined(I_STDDEF)#   include <stddef.h>#   define STRUCT_OFFSET(s,m)  offsetof(s,m)#else#   define STRUCT_OFFSET(s,m)  (Size_t)(&(((s *)0)->m))#endif#if defined(I_STRING) || defined(__cplusplus)#   include <string.h>#else#   include <strings.h>#endif/* This comes after <stdlib.h> so we don't try to change the standard * library prototypes; we'll use our own in proto.h instead. */#ifdef MYMALLOC#  ifdef PERL_POLLUTE_MALLOC#   ifndef PERL_EXTMALLOC_DEF#    define Perl_malloc		malloc#    define Perl_calloc		calloc#    define Perl_realloc	realloc#    define Perl_mfree		free#   endif#  else#    define EMBEDMYMALLOC	/* for compatibility */#  endifMalloc_t Perl_malloc (MEM_SIZE nbytes);Malloc_t Perl_calloc (MEM_SIZE elements, MEM_SIZE size);Malloc_t Perl_realloc (Malloc_t where, MEM_SIZE nbytes);/* 'mfree' rather than 'free', since there is already a 'perl_free' * that causes clashes with case-insensitive linkers */Free_t   Perl_mfree (Malloc_t where);typedef struct perl_mstats perl_mstats_t;#  define safemalloc  Perl_malloc#  define safecalloc  Perl_calloc#  define saferealloc Perl_realloc#  define safefree    Perl_mfree#else  /* MYMALLOC */#  define safemalloc  safesysmalloc#  define safecalloc  safesyscalloc#  define saferealloc safesysrealloc#  define safefree    safesysfree#endif /* MYMALLOC */#if !defined(HAS_STRCHR) && defined(HAS_INDEX) && !defined(strchr)#define strchr index#define strrchr rindex#endif#ifdef I_MEMORY#  include <memory.h>#endif#ifdef HAS_MEMCPY#  if !defined(STANDARD_C) && !defined(I_STRING) && !defined(I_MEMORY)#    ifndef memcpy        extern char * memcpy (char*, char*, int);#    endif#  endif#else#   ifndef memcpy#	ifdef HAS_BCOPY#	    define memcpy(d,s,l) bcopy(s,d,l)#	else#	    define memcpy(d,s,l) my_bcopy(s,d,l)#	endif#   endif#endif /* HAS_MEMCPY */#ifdef HAS_MEMSET#  if !defined(STANDARD_C) && !defined(I_STRING) && !defined(I_MEMORY)#    ifndef memset	extern char *memset (char*, int, int);#    endif#  endif#else#  define memset(d,c,l) my_memset(d,c,l)#endif /* HAS_MEMSET */#if !defined(HAS_MEMMOVE) && !defined(memmove)#   if defined(HAS_BCOPY) && defined(HAS_SAFE_BCOPY)#	define memmove(d,s,l) bcopy(s,d,l)#   else#	if defined(HAS_MEMCPY) && defined(HAS_SAFE_MEMCPY)#	    define memmove(d,s,l) memcpy(d,s,l)#	else#	    define memmove(d,s,l) my_bcopy(s,d,l)#	endif#   endif#endif#if defined(mips) && defined(ultrix) && !defined(__STDC__)#   undef HAS_MEMCMP#endif#if defined(HAS_MEMCMP) && defined(HAS_SANE_MEMCMP)#  if !defined(STANDARD_C) && !defined(I_STRING) && !defined(I_MEMORY)#    ifndef memcmp	extern int memcmp (char*, char*, int);#    endif#  endif#  ifdef BUGGY_MSC  #  pragma function(memcmp)#  endif#else#   ifndef memcmp#	define memcmp 	my_memcmp#   endif#endif /* HAS_MEMCMP && HAS_SANE_MEMCMP */#ifndef memzero#   ifdef HAS_MEMSET#	define memzero(d,l) memset(d,0,l)#   else#	ifdef HAS_BZERO#	    define memzero(d,l) bzero(d,l)#	else#	    define memzero(d,l) my_bzero(d,l)#	endif#   endif#endif#ifndef memchr#   ifndef HAS_MEMCHR#       define memchr(s,c,n) ninstr((char*)(s), ((char*)(s)) + n, &(c), &(c) + 1)#   endif#endif#ifndef HAS_BCMP#   ifndef bcmp#	define bcmp(s1,s2,l) memcmp(s1,s2,l)#   endif#endif /* !HAS_BCMP */#ifdef I_NETINET_IN#   include <netinet/in.h>#endif#ifdef I_ARPA_INET#   include <arpa/inet.h>#endif#if defined(SF_APPEND) && defined(USE_SFIO) && defined(I_SFIO)/* <sfio.h> defines SF_APPEND and <sys/stat.h> might define SF_APPEND * (the neo-BSD seem to do this).  */#   undef SF_APPEND#endif#ifdef I_SYS_STAT#   include <sys/stat.h>#endif/* The stat macros for Amdahl UTS, Unisoft System V/88 (and derivatives   like UTekV) are broken, sometimes giving false positives.  Undefine   them here and let the code below set them to proper values.   The ghs macro stands for GreenHills Software C-1.8.5 which   is the C compiler for sysV88 and the various derivatives.   This header file bug is corrected in gcc-2.5.8 and later versions.   --Kaveh Ghazi (ghazi@noc.rutgers.edu) 10/3/94.  */#if defined(uts) || (defined(m88k) && defined(ghs))#   undef S_ISDIR#   undef S_ISCHR#   undef S_ISBLK#   undef S_ISREG#   undef S_ISFIFO#   undef S_ISLNK#endif#ifdef I_TIME#   include <time.h>#endif#ifdef I_SYS_TIME#   ifdef I_SYS_TIME_KERNEL#	define KERNEL#   endif#   include <sys/time.h>#   ifdef I_SYS_TIME_KERNEL#	undef KERNEL#   endif#endif#if defined(HAS_TIMES) && defined(I_SYS_TIMES)#    include <sys/times.h>#endif#if defined(HAS_STRERROR) && (!defined(HAS_MKDIR) || !defined(HAS_RMDIR))#   undef HAS_STRERROR#endif#include <errno.h>#if defined(WIN32) && (defined(PERL_OBJECT) || defined(PERL_IMPLICIT_SYS) || defined(PERL_CAPI))#  define WIN32SCK_IS_STDSCK		/* don't pull in custom wsock layer */#endif#if defined(HAS_SOCKET) && !defined(VMS) /* VMS handles sockets via vmsish.h */# include <sys/socket.h># if defined(USE_SOCKS) && defined(I_SOCKS)#   if !defined(INCLUDE_PROTOTYPES)#       define INCLUDE_PROTOTYPES /* for <socks.h> */#       define PERL_SOCKS_NEED_PROTOTYPES#   endif#   ifdef USE_THREADS#       define PERL_USE_THREADS /* store our value */#       undef USE_THREADS#   endif#   include <socks.h>#   ifdef USE_THREADS#       undef USE_THREADS /* socks.h does this on its own */#   endif#   ifdef PERL_USE_THREADS#       define USE_THREADS /* restore our value */#       undef PERL_USE_THREADS#   endif#   ifdef PERL_SOCKS_NEED_PROTOTYPES /* keep cpp space clean */#       undef INCLUDE_PROTOTYPES#       undef PERL_SOCKS_NEED_PROTOTYPES#   endif#   ifdef USE_64_BIT_ALL#       define SOCKS_64BIT_BUG /* until proven otherwise */#   endif# endif # ifdef I_NETDB#  include <netdb.h># endif# ifndef ENOTSOCK#  ifdef I_NET_ERRNO#   include <net/errno.h>#  endif# endif#endif#ifdef SETERRNO# undef SETERRNO  /* SOCKS might have defined this */#endif#ifdef VMS#   define SETERRNO(errcode,vmserrcode) \	STMT_START {			\	    set_errno(errcode);		\	    set_vaxc_errno(vmserrcode);	\	} STMT_END#else#   define SETERRNO(errcode,vmserrcode) (errno = (errcode))#endif#ifdef USE_THREADS#  define ERRSV (thr->errsv)#  define DEFSV THREADSV(0)#  define SAVE_DEFSV save_threadsv(0)#else#  define ERRSV GvSV(PL_errgv)#  define DEFSV GvSV(PL_defgv)#  define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv))#endif /* USE_THREADS */#define ERRHV GvHV(PL_errgv)	/* XXX unused, here for compatibility */#ifndef errno	extern int errno;     /* ANSI allows errno to be an lvalue expr.			       * For example in multithreaded environments			       * something like this might happen:			       * extern int *_errno(void);			       * #define errno (*_errno()) */#endif#ifdef HAS_STRERROR#       ifdef VMS	char *strerror (int,...);#       else#ifndef DONT_DECLARE_STD	char *strerror (int);#endif#       endif#       ifndef Strerror#           define Strerror strerror#       endif#else#    ifdef HAS_SYS_ERRLIST	extern int sys_nerr;	extern char *sys_errlist[];#       ifndef Strerror#           define Strerror(e) \		((e) < 0 || (e) >= sys_nerr ? "(unknown)" : sys_errlist[e])#       endif#   endif#endif#ifdef I_SYS_IOCTL#   ifndef _IOCTL_#	include <sys/ioctl.h>#   endif#endif#if defined(mc300) || defined(mc500) || defined(mc700) || defined(mc6000)#   ifdef HAS_SOCKETPAIR#	undef HAS_SOCKETPAIR#   endif#   ifdef I_NDBM#	undef I_NDBM#   endif#endif#if INTSIZE == 2#   define htoni htons#   define ntohi ntohs#else#   define htoni htonl#   define ntohi ntohl#endif/* Configure already sets Direntry_t */#if defined(I_DIRENT)#   include <dirent.h>    /* NeXT needs dirent + sys/dir.h */#   if  defined(I_SYS_DIR) && (defined(NeXT) || defined(__NeXT__))#	include <sys/dir.h>#   endif#else#   ifdef I_SYS_NDIR#	include <sys/ndir.h>#   else#	ifdef I_SYS_DIR#	    ifdef hp9000s500#		include <ndir.h>	/* may be wrong in the future */#	    else#		include <sys/dir.h>#	    endif#	endif#   endif#endif#ifdef FPUTS_BOTCH/* work around botch in SunOS 4.0.1 and 4.0.2 */#   ifndef fputs#	define fputs(sv,fp) fprintf(fp,"%s",sv)#   endif#endif/* * The following gobbledygook brought to you on behalf of __STDC__. * (I could just use #ifndef __STDC__, but this is more bulletproof * in the face of half-implementations.) */#ifdef I_SYSMODE#include <sys/mode.h>#endif#ifndef S_IFMT#   ifdef _S_IFMT#	define S_IFMT _S_IFMT#   else#	define S_IFMT 0170000#   endif#endif#ifndef S_ISDIR#   define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR)#endif#ifndef S_ISCHR#   define S_ISCHR(m) ((m & S_IFMT) == S_IFCHR)#endif#ifndef S_ISBLK#   ifdef S_IFBLK#	define S_ISBLK(m) ((m & S_IFMT) == S_IFBLK)#   else#	define S_ISBLK(m) (0)#   endif#endif#ifndef S_ISREG#   define S_ISREG(m) ((m & S_IFMT) == S_IFREG)#endif#ifndef S_ISFIFO#   ifdef S_IFIFO#	define S_ISFIFO(m) ((m & S_IFMT) == S_IFIFO)#   else#	define S_ISFIFO(m) (0)#   endif#endif#ifndef S_ISLNK#   ifdef _S_ISLNK#	define S_ISLNK(m) _S_ISLNK(m)#   else#	ifdef _S_IFLNK#	    define S_ISLNK(m) ((m & S_IFMT) == _S_IFLNK)#	else#	    ifdef S_IFLNK#		define S_ISLNK(m) ((m & S_IFMT) == S_IFLNK)#	    else#		define S_ISLNK(m) (0)#	    endif#	endif#   endif#endif#ifndef S_ISSOCK#   ifdef _S_ISSOCK#	define S_ISSOCK(m) _S_ISSOCK(m)#   else#	ifdef _S_IFSOCK#	    define S_ISSOCK(m) ((m & S_IFMT) == _S_IFSOCK)#	else#	    ifdef S_IFSOCK#		define S_ISSOCK(m) ((m & S_IFMT) == S_IFSOCK)#	    else#		define S_ISSOCK(m) (0)#	    endif#	endif#   endif#endif#ifndef S_IRUSR#   ifdef S_IREAD#	define S_IRUSR S_IREAD#	define S_IWUSR S_IWRITE#	define S_IXUSR S_IEXEC#   else#	define S_IRUSR 0400#	define S_IWUSR 0200#	define S_IXUSR 0100#   endif#endif#ifndef S_IRGRP#   ifdef S_IRUSR#       define S_IRGRP (S_IRUSR>>3)#       define S_IWGRP (S_IWUSR>>3)#       define S_IXGRP (S_IXUSR>>3)#   else#       define S_IRGRP 0040#       define S_IWGRP 0020#       define S_IXGRP 0010#   endif#endif#ifndef S_IROTH#   ifdef S_IRUSR#       define S_IROTH (S_IRUSR>>6)#       define S_IWOTH (S_IWUSR>>6)#       define S_IXOTH (S_IXUSR>>6)#   else#       define S_IROTH 0040#       define S_IWOTH 0020#       define S_IXOTH 0010#   endif#endif#ifndef S_ISUID#   define S_ISUID 04000#endif#ifndef S_ISGID#   define S_ISGID 02000#endif#ifndef S_IRWXU#   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)#endif #ifndef S_IRWXG#   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)#endif #ifndef S_IRWXO#   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)#endif #ifndef S_IREAD#   define S_IREAD S_IRUSR#endif#ifndef S_IWRITE#   define S_IWRITE S_IWUSR#endif#ifndef S_IEXEC#   define S_IEXEC S_IXUSR#endif

⌨️ 快捷键说明

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