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

📄 perl.h

📁 早期freebsd实现
💻 H
📖 第 1 页 / 共 2 页
字号:
/* $RCSfile: perl.h,v $$Revision: 4.0.1.7 $$Date: 1993/02/05 19:40:30 $ * *    Copyright (c) 1991, Larry Wall * *    You may distribute under the terms of either the GNU General Public *    License or the Artistic License, as specified in the README file. * * $Log: perl.h,v $ * Revision 4.0.1.7  1993/02/05  19:40:30  lwall * patch36: worked around certain busted compilers that don't init statics right * * Revision 4.0.1.6  92/06/08  14:55:10  lwall * patch20: added Atari ST portability * patch20: bcopy() and memcpy() now tested for overlap safety * patch20: Perl now distinguishes overlapped copies from non-overlapped * patch20: removed implicit int declarations on functions *  * Revision 4.0.1.5  91/11/11  16:41:07  lwall * patch19: uts wrongly defines S_ISDIR() et al * patch19: too many preprocessors can't expand a macro right in #if * patch19: added little-endian pack/unpack options *  * Revision 4.0.1.4  91/11/05  18:06:10  lwall * patch11: various portability fixes * patch11: added support for dbz * patch11: added some support for 64-bit integers * patch11: hex() didn't understand leading 0x *  * Revision 4.0.1.3  91/06/10  01:25:10  lwall * patch10: certain pattern optimizations were botched *  * Revision 4.0.1.2  91/06/07  11:28:33  lwall * patch4: new copyright notice * patch4: made some allowances for "semi-standard" C * patch4: many, many itty-bitty portability fixes *  * Revision 4.0.1.1  91/04/11  17:49:51  lwall * patch1: hopefully straightened out some of the Xenix mess *  * Revision 4.0  91/03/20  01:37:56  lwall * 4.0 baseline. *  */#define VOIDWANT 1#include "config.h"#ifdef MYMALLOC#   ifdef HIDEMYMALLOC#	define malloc Mymalloc#	define realloc Myremalloc#	define free Myfree#   endif#   define safemalloc malloc#   define saferealloc realloc#   define safefree free#endif/* work around some libPW problems */#define fatal Myfatal#ifdef DOINITchar Error[1];#endif/* define this once if either system, instead of cluttering up the src */#if defined(MSDOS) || defined(atarist)#define DOSISH 1#endif#ifdef DOSISH/* This stuff now in the MS-DOS config.h file. */#else /* !MSDOS *//* * The following symbols are defined if your operating system supports * functions by that name.  All Unixes I know of support them, thus they * are not checked by the configuration script, but are directly defined * here. */#define HAS_ALARM#define HAS_CHOWN#define HAS_CHROOT#define HAS_FORK#define HAS_GETLOGIN#define HAS_GETPPID#define HAS_KILL#define HAS_LINK#define HAS_PIPE#define HAS_WAIT#define HAS_UMASK/* * The following symbols are defined if your operating system supports * password and group functions in general.  All Unix systems do. */#define HAS_GROUP#define HAS_PASSWD#endif /* !MSDOS */#if defined(__STDC__) || defined(_AIX) || defined(__stdc__)# define STANDARD_C 1#endif#if defined(HASVOLATILE) || defined(STANDARD_C)#define VOLATILE volatile#else#define VOLATILE#endif#ifdef IAMSUID#   ifndef TAINT#	define TAINT#   endif#endif#ifndef HAS_VFORK#   define vfork fork#endif#ifdef HAS_GETPGRP2#   ifndef HAS_GETPGRP#	define HAS_GETPGRP#   endif#   define getpgrp getpgrp2#endif#ifdef HAS_SETPGRP2#   ifndef HAS_SETPGRP#	define HAS_SETPGRP#   endif#   define setpgrp setpgrp2#endif#include <stdio.h>#include <ctype.h>#include <setjmp.h>#ifndef MSDOS#ifdef PARAM_NEEDS_TYPES#include <sys/types.h>#endif#include <sys/param.h>#endif#ifdef STANDARD_C/* Use all the "standard" definitions */#include <stdlib.h>#include <string.h>#define MEM_SIZE size_t#elsetypedef unsigned int MEM_SIZE;#endif /* STANDARD_C */#if defined(HAS_MEMCMP) && defined(mips) && defined(ultrix)#undef HAS_MEMCMP#endif#ifdef HAS_MEMCPY#  ifndef STANDARD_C#    ifndef memcpy	extern char * memcpy();#    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#  ifndef STANDARD_C#    ifndef memset	extern char *memset();#    endif#  endif#  define memzero(d,l) memset(d,0,l)#else#   ifndef memzero#	ifdef HAS_BZERO#	    define memzero(d,l) bzero(d,l)#	else#	    define memzero(d,l) my_bzero(d,l)#	endif#   endif#endif /* HAS_MEMSET */#ifdef HAS_MEMCMP#  ifndef STANDARD_C#    ifndef memcmp	extern int memcmp();#    endif#  endif#else#   ifndef memcmp#	define memcmp(s1,s2,l) my_memcmp(s1,s2,l)#   endif#endif /* HAS_MEMCMP *//* we prefer bcmp slightly for comparisons that don't care about ordering */#ifndef HAS_BCMP#   ifndef bcmp#	define bcmp(s1,s2,l) memcmp(s1,s2,l)#   endif#endif /* HAS_BCMP */#ifndef HAS_MEMMOVE#if defined(HAS_BCOPY) && defined(SAFE_BCOPY)#define memmove(d,s,l) bcopy(s,d,l)#else#if defined(HAS_MEMCPY) && defined(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#ifndef _TYPES_		/* If types.h defines this it's easy. */#ifndef major		/* Does everyone's types.h define this? */#include <sys/types.h>#endif#endif#ifdef I_NETINET_IN#include <netinet/in.h>#endif#include <sys/stat.h>#if defined(uts) || defined(UTekV)#undef S_ISDIR#undef S_ISCHR#undef S_ISBLK#undef S_ISREG#undef S_ISFIFO#undef S_ISLNK#define S_ISDIR(P) (((P)&S_IFMT)==S_IFDIR)#define S_ISCHR(P) (((P)&S_IFMT)==S_IFCHR)#define S_ISBLK(P) (((P)&S_IFMT)==S_IFBLK)#define S_ISREG(P) (((P)&S_IFMT)==S_IFREG)#define S_ISFIFO(P) (((P)&S_IFMT)==S_IFIFO)#ifdef S_IFLNK#define S_ISLNK(P) (((P)&S_IFMT)==S_IFLNK)#endif#endif#ifdef I_TIME#   include <time.h>#endif#ifdef I_SYS_TIME#   ifdef SYSTIMEKERNEL#	define KERNEL#   endif#   include <sys/time.h>#   ifdef SYSTIMEKERNEL#	undef KERNEL#   endif#endif#ifndef MSDOS#include <sys/times.h>#endif#if defined(HAS_STRERROR) && (!defined(HAS_MKDIR) || !defined(HAS_RMDIR))#undef HAS_STRERROR#endif#include <errno.h>#ifndef MSDOS#ifndef errnoextern int errno;     /* ANSI allows errno to be an lvalue expr */#endif#endif#ifndef strerror#ifdef HAS_STRERRORchar *strerror();#elseextern int sys_nerr;extern char *sys_errlist[];#define strerror(e) ((e) < 0 || (e) >= sys_nerr ? "(unknown)" : sys_errlist[e])#endif#endif#ifdef I_SYSIOCTL#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 HAS_NDBM#undef HAS_NDBM#endif#endif#ifdef WANT_DBZ#include <dbz.h>#define SOME_DBM#define dbm_fetch(db,dkey) fetch(dkey)#define dbm_delete(db,dkey) fatal("dbz doesn't implement delete")#define dbm_store(db,dkey,dcontent,flags) store(dkey,dcontent)#define dbm_close(db) dbmclose()#define dbm_firstkey(db) (fatal("dbz doesn't implement traversal"),fetch())#define nextkey() (fatal("dbz doesn't implement traversal"),fetch())#define dbm_nextkey(db) (fatal("dbz doesn't implement traversal"),fetch())#ifdef HAS_NDBM#undef HAS_NDBM#endif#ifndef HAS_ODBM#define HAS_ODBM#endif#else#ifdef HAS_GDBM#ifdef I_GDBM#include <gdbm.h>#endif#define SOME_DBM#ifdef HAS_NDBM#undef HAS_NDBM#endif#ifdef HAS_ODBM#undef HAS_ODBM#endif#else#ifdef HAS_NDBM#include <ndbm.h>#define SOME_DBM#ifdef HAS_ODBM#undef HAS_ODBM#endif#else#ifdef HAS_ODBM#ifdef NULL#undef NULL		/* suppress redefinition message */#endif#include <dbm.h>#ifdef NULL#undef NULL#endif#define NULL 0		/* silly thing is, we don't even use this */#define SOME_DBM#define dbm_fetch(db,dkey) fetch(dkey)#define dbm_delete(db,dkey) delete(dkey)#define dbm_store(db,dkey,dcontent,flags) store(dkey,dcontent)#define dbm_close(db) dbmclose()#define dbm_firstkey(db) firstkey()#endif /* HAS_ODBM */#endif /* HAS_NDBM */#endif /* HAS_GDBM */#endif /* WANT_DBZ */#ifdef SOME_DBMEXT char *dbmkey;EXT int dbmlen;#endif#if INTSIZE == 2#define htoni htons#define ntohi ntohs#else#define htoni htonl#define ntohi ntohl#endif#if defined(I_DIRENT)#   include <dirent.h>#   define DIRENT dirent#else#   ifdef I_SYS_NDIR#	include <sys/ndir.h>#	define DIRENT direct#   else#	ifdef I_SYS_DIR#	    ifdef hp9000s500#		include <ndir.h>	/* may be wrong in the future */#	    else#		include <sys/dir.h>#	    endif#	    define DIRENT direct#	endif#   endif#endif#ifdef FPUTS_BOTCH/* work around botch in SunOS 4.0.1 and 4.0.2 */#   ifndef fputs#	define fputs(str,fp) fprintf(fp,"%s",str)#   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.) */#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#   define S_IRGRP (S_IRUSR>>3)#   define S_IWGRP (S_IWUSR>>3)#   define S_IXGRP (S_IXUSR>>3)#   define S_IROTH (S_IRUSR>>6)#   define S_IWOTH (S_IWUSR>>6)#   define S_IXOTH (S_IXUSR>>6)#endif#ifndef S_ISUID#   define S_ISUID 04000#endif#ifndef S_ISGID#   define S_ISGID 02000#endif#ifdef f_next#undef f_next#endif#if defined(cray) || defined(gould) || defined(i860)#   define SLOPPYDIVIDE#endif#if defined(cray) || defined(convex) || defined (uts) || BYTEORDER > 0xffff#   define QUAD#endif#ifdef QUAD#   ifdef cray#	define quad int#   else#	if defined(convex) || defined (uts)#	    define quad long long#	else#	    define quad long#	endif#   endif#endiftypedef MEM_SIZE STRLEN;typedef struct arg ARG;typedef struct cmd CMD;typedef struct formcmd FCMD;typedef struct scanpat SPAT;typedef struct stio STIO;typedef struct sub SUBR;typedef struct string STR;typedef struct atbl ARRAY;typedef struct htbl HASH;typedef struct regexp REGEXP;

⌨️ 快捷键说明

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