📄 dbipport.h
字号:
HEADER } if (!defined $diff) { $diff = run_diff('diff -u', $file, $str); } if (!defined $diff) { $diff = run_diff('diff', $file, $str); } if (!defined $diff) { error("Cannot generate a diff. Please install Text::Diff or use --copy."); return; } print F $diff;}sub run_diff{ my($prog, $file, $str) = @_; my $tmp = 'dppptemp'; my $suf = 'aaa'; my $diff = ''; local *F; while (-e "$tmp.$suf") { $suf++ } $tmp = "$tmp.$suf"; if (open F, ">$tmp") { print F $str; close F; if (open F, "$prog $file $tmp |") { while (<F>) { s/\Q$tmp\E/$file.patched/; $diff .= $_; } close F; unlink $tmp; return $diff; } unlink $tmp; } else { error("Cannot open '$tmp' for writing: $!"); } return undef;}sub can_use{ eval "use @_;"; return $@ eq '';}sub rec_depend{ my $func = shift; my %seen; return () unless exists $depends{$func}; grep !$seen{$_}++, map { ($_, rec_depend($_)) } @{$depends{$func}};}sub parse_version{ my $ver = shift; if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) { return ($1, $2, $3); } elsif ($ver !~ /^\d+\.[\d_]+$/) { die "cannot parse version '$ver'\n"; } $ver =~ s/_//g; $ver =~ s/$/000000/; my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; $v = int $v; $s = int $s; if ($r < 5 || ($r == 5 && $v < 6)) { if ($s % 10) { die "cannot parse version '$ver'\n"; } } return ($r, $v, $s);}sub format_version{ my $ver = shift; $ver =~ s/$/000000/; my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; $v = int $v; $s = int $s; if ($r < 5 || ($r == 5 && $v < 6)) { if ($s % 10) { die "invalid version '$ver'\n"; } $s /= 10; $ver = sprintf "%d.%03d", $r, $v; $s > 0 and $ver .= sprintf "_%02d", $s; return $ver; } return sprintf "%d.%d.%d", $r, $v, $s;}sub info{ $opt{quiet} and return; print @_, "\n";}sub diag{ $opt{quiet} and return; $opt{diag} and print @_, "\n";}sub warning{ $opt{quiet} and return; print "*** ", @_, "\n";}sub error{ print "*** ERROR: ", @_, "\n";}my %given_hints;sub hint{ $opt{quiet} and return; $opt{hints} or return; my $func = shift; exists $hints{$func} or return; $given_hints{$func}++ and return; my $hint = $hints{$func}; $hint =~ s/^/ /mg; print " --- hint for $func ---\n", $hint;}sub usage{ my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms; my %M = ( 'I' => '*' ); $usage =~ s/^\s*perl\s+\S+/$^X $0/; $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; print <<ENDUSAGE;Usage: $usageSee perldoc $0 for details.ENDUSAGE exit 2;}__DATA__*/#ifndef _P_P_PORTABILITY_H_#define _P_P_PORTABILITY_H_#ifndef DPPP_NAMESPACE# define DPPP_NAMESPACE DPPP_#endif#define DPPP_CAT2(x,y) CAT2(x,y)#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)#ifndef PERL_REVISION# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))# define PERL_PATCHLEVEL_H_IMPLICIT# include <patchlevel.h># endif# if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))# include <could_not_find_Perl_patchlevel.h># endif# ifndef PERL_REVISION# define PERL_REVISION (5) /* Replace: 1 */# define PERL_VERSION PATCHLEVEL# define PERL_SUBVERSION SUBVERSION /* Replace PERL_PATCHLEVEL with PERL_VERSION */ /* Replace: 0 */# endif#endif#define PERL_BCDVERSION ((PERL_REVISION * 0x1000000L) + (PERL_VERSION * 0x1000L) + PERL_SUBVERSION)/* It is very unlikely that anyone will try to use this with Perl 6 (or greater), but who knows. */#if PERL_REVISION != 5# error ppport.h only works with Perl version 5#endif /* PERL_REVISION != 5 */#ifdef I_LIMITS# include <limits.h>#endif#ifndef PERL_UCHAR_MIN# define PERL_UCHAR_MIN ((unsigned char)0)#endif#ifndef PERL_UCHAR_MAX# ifdef UCHAR_MAX# define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX)# else# ifdef MAXUCHAR# define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR)# else# define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0)# endif# endif#endif#ifndef PERL_USHORT_MIN# define PERL_USHORT_MIN ((unsigned short)0)#endif#ifndef PERL_USHORT_MAX# ifdef USHORT_MAX# define PERL_USHORT_MAX ((unsigned short)USHORT_MAX)# else# ifdef MAXUSHORT# define PERL_USHORT_MAX ((unsigned short)MAXUSHORT)# else# ifdef USHRT_MAX# define PERL_USHORT_MAX ((unsigned short)USHRT_MAX)# else# define PERL_USHORT_MAX ((unsigned short)~(unsigned)0)# endif# endif# endif#endif#ifndef PERL_SHORT_MAX# ifdef SHORT_MAX# define PERL_SHORT_MAX ((short)SHORT_MAX)# else# ifdef MAXSHORT /* Often used in <values.h> */# define PERL_SHORT_MAX ((short)MAXSHORT)# else# ifdef SHRT_MAX# define PERL_SHORT_MAX ((short)SHRT_MAX)# else# define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1))# endif# endif# endif#endif#ifndef PERL_SHORT_MIN# ifdef SHORT_MIN# define PERL_SHORT_MIN ((short)SHORT_MIN)# else# ifdef MINSHORT# define PERL_SHORT_MIN ((short)MINSHORT)# else# ifdef SHRT_MIN# define PERL_SHORT_MIN ((short)SHRT_MIN)# else# define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3))# endif# endif# endif#endif#ifndef PERL_UINT_MAX# ifdef UINT_MAX# define PERL_UINT_MAX ((unsigned int)UINT_MAX)# else# ifdef MAXUINT# define PERL_UINT_MAX ((unsigned int)MAXUINT)# else# define PERL_UINT_MAX (~(unsigned int)0)# endif# endif#endif#ifndef PERL_UINT_MIN# define PERL_UINT_MIN ((unsigned int)0)#endif#ifndef PERL_INT_MAX# ifdef INT_MAX# define PERL_INT_MAX ((int)INT_MAX)# else# ifdef MAXINT /* Often used in <values.h> */# define PERL_INT_MAX ((int)MAXINT)# else# define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1))# endif# endif#endif#ifndef PERL_INT_MIN# ifdef INT_MIN# define PERL_INT_MIN ((int)INT_MIN)# else# ifdef MININT# define PERL_INT_MIN ((int)MININT)# else# define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3))# endif# endif#endif#ifndef PERL_ULONG_MAX# ifdef ULONG_MAX# define PERL_ULONG_MAX ((unsigned long)ULONG_MAX)# else# ifdef MAXULONG# define PERL_ULONG_MAX ((unsigned long)MAXULONG)# else# define PERL_ULONG_MAX (~(unsigned long)0)# endif# endif#endif#ifndef PERL_ULONG_MIN# define PERL_ULONG_MIN ((unsigned long)0L)#endif#ifndef PERL_LONG_MAX# ifdef LONG_MAX# define PERL_LONG_MAX ((long)LONG_MAX)# else# ifdef MAXLONG# define PERL_LONG_MAX ((long)MAXLONG)# else# define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1))# endif# endif#endif#ifndef PERL_LONG_MIN# ifdef LONG_MIN# define PERL_LONG_MIN ((long)LONG_MIN)# else# ifdef MINLONG# define PERL_LONG_MIN ((long)MINLONG)# else# define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3))# endif# endif#endif#if defined(HAS_QUAD) && (defined(convex) || defined(uts))# ifndef PERL_UQUAD_MAX# ifdef ULONGLONG_MAX# define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX)# else# ifdef MAXULONGLONG# define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG)# else# define PERL_UQUAD_MAX (~(unsigned long long)0)# endif# endif# endif# ifndef PERL_UQUAD_MIN# define PERL_UQUAD_MIN ((unsigned long long)0L)# endif# ifndef PERL_QUAD_MAX# ifdef LONGLONG_MAX# define PERL_QUAD_MAX ((long long)LONGLONG_MAX)# else# ifdef MAXLONGLONG# define PERL_QUAD_MAX ((long long)MAXLONGLONG)# else# define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1))# endif# endif# endif# ifndef PERL_QUAD_MIN# ifdef LONGLONG_MIN# define PERL_QUAD_MIN ((long long)LONGLONG_MIN)# else# ifdef MINLONGLONG# define PERL_QUAD_MIN ((long long)MINLONGLONG)# else# define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3))# endif# endif# endif#endif/* This is based on code from 5.003 perl.h */#ifdef HAS_QUAD# ifdef cray#ifndef IVTYPE# define IVTYPE int#endif#ifndef IV_MIN# define IV_MIN PERL_INT_MIN#endif#ifndef IV_MAX# define IV_MAX PERL_INT_MAX#endif#ifndef UV_MIN# define UV_MIN PERL_UINT_MIN#endif#ifndef UV_MAX# define UV_MAX PERL_UINT_MAX#endif# ifdef INTSIZE#ifndef IVSIZE# define IVSIZE INTSIZE#endif# endif# else# if defined(convex) || defined(uts)#ifndef IVTYPE# define IVTYPE long long#endif#ifndef IV_MIN# define IV_MIN PERL_QUAD_MIN#endif#ifndef IV_MAX# define IV_MAX PERL_QUAD_MAX#endif#ifndef UV_MIN# define UV_MIN PERL_UQUAD_MIN#endif#ifndef UV_MAX# define UV_MAX PERL_UQUAD_MAX#endif# ifdef LONGLONGSIZE#ifndef IVSIZE# define IVSIZE LONGLONGSIZE#endif# endif# else#ifndef IVTYPE# define IVTYPE long#endif#ifndef IV_MIN# define IV_MIN PERL_LONG_MIN#endif#ifndef IV_MAX# define IV_MAX PERL_LONG_MAX#endif#ifndef UV_MIN# define UV_MIN PERL_ULONG_MIN#endif#ifndef UV_MAX# define UV_MAX PERL_ULONG_MAX#endif# ifdef LONGSIZE#ifndef IVSIZE# define IVSIZE LONGSIZE#endif# endif# endif# endif#ifndef IVSIZE# define IVSIZE 8#endif#ifndef PERL_QUAD_MIN# define PERL_QUAD_MIN IV_MIN#endif#ifndef PERL_QUAD_MAX# define PERL_QUAD_MAX IV_MAX#endif#ifndef PERL_UQUAD_MIN# define PERL_UQUAD_MIN UV_MIN#endif#ifndef PERL_UQUAD_MAX# define PERL_UQUAD_MAX UV_MAX#endif#else#ifndef IVTYPE# define IVTYPE long#endif#ifndef IV_MIN# define IV_MIN PERL_LONG_MIN#endif#ifndef IV_MAX# define IV_MAX PERL_LONG_MAX#endif#ifndef UV_MIN# define UV_MIN PERL_ULONG_MIN#endif#ifndef UV_MAX# define UV_MAX PERL_ULONG_MAX#endif#endif#ifndef IVSIZE# ifdef LONGSIZE# define IVSIZE LONGSIZE# else# define IVSIZE 4 /* A bold guess, but the best we can make. */# endif#endif#ifndef UVTYPE# define UVTYPE unsigned IVTYPE#endif#ifndef UVSIZE# define UVSIZE IVSIZE#endif#ifndef sv_setuv# define sv_setuv(sv, uv) \ STMT_START { \ UV TeMpUv = uv; \ if (TeMpUv <= IV_MAX) \ sv_setiv(sv, TeMpUv); \ else \ sv_setnv(sv, (double)TeMpUv); \ } STMT_END#endif#ifndef newSVuv# define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv))#endif#ifndef sv_2uv# define sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv)))#endif#ifndef SvUVX# define SvUVX(sv) ((UV)SvIVX(sv))#endif#ifndef SvUVXx# define SvUVXx(sv) SvUVX(sv)#endif#ifndef SvUV# define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv))#endif#ifndef SvUVx# define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv))#endif/* Hint: sv_uv * Always use the SvUVx() macro instead of sv_uv(). */#ifndef sv_uv# define sv_uv(sv) SvUVx(sv)#endif#ifndef XST_mUV# define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) )#endif#ifndef XSRETURN_UV# define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END#endif#ifndef PUSHu# define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END#endif#ifndef XPUSHu# define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END#endif#if (PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5))/* Replace: 1 */# define PL_DBsingle DBsi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -