diff options
-rwxr-xr-x | Configure | 361 | ||||
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | README.cygwin | 33 | ||||
-rw-r--r-- | Todo-5.6 | 7 | ||||
-rw-r--r-- | config_h.SH | 14 | ||||
-rw-r--r-- | embed.h | 16 | ||||
-rwxr-xr-x | embed.pl | 21 | ||||
-rw-r--r-- | hints/solaris_2.sh | 6 | ||||
-rw-r--r-- | lib/ExtUtils/MM_VMS.pm | 2 | ||||
-rw-r--r-- | lib/File/Find.pm | 3 | ||||
-rw-r--r-- | objXSUB.h | 8 | ||||
-rw-r--r-- | op.h | 3 | ||||
-rw-r--r-- | perlapi.c | 14 | ||||
-rw-r--r-- | pod/Makefile | 397 | ||||
-rw-r--r-- | pod/perlapi.pod | 963 | ||||
-rw-r--r-- | pod/perlintern.pod | 3 | ||||
-rw-r--r-- | pod/perltoc.pod | 688 | ||||
-rw-r--r-- | pod/perlutil.pod | 185 | ||||
-rw-r--r-- | pod/roffitall | 136 | ||||
-rw-r--r-- | proto.h | 4 | ||||
-rw-r--r-- | utf8.c | 5 | ||||
-rw-r--r-- | utils/h2xs.PL | 60 | ||||
-rw-r--r-- | vms/vms.c | 77 |
23 files changed, 2059 insertions, 948 deletions
@@ -20,7 +20,7 @@ # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ # -# Generated on Wed May 31 23:34:04 EET DST 2000 [metaconfig 3.0 PL70] +# Generated on Tue Jun 27 04:45:48 EET DST 2000 [metaconfig 3.0 PL70] # (with additional metaconfig patches by perlbug@perl.com) cat >/tmp/c1$$ <<EOF @@ -288,7 +288,6 @@ bincompat5005='' d_bincompat5005='' byteorder='' cc='' -gccversion='' ccflags='' cppflags='' ldflags='' @@ -597,6 +596,7 @@ fflushNULL='' fflushall='' fpossize='' fpostype='' +gccversion='' gidformat='' gidsign='' gidsize='' @@ -2798,7 +2798,11 @@ int main() { #endif } EOP - ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1 + case "$cc" in + '') modelcc="$cc" ;; + *) modelcc="cc" ;; + esac + ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1 if $test -f pdp11 && ./pdp11 2>/dev/null; then dflt='unsplit split' else @@ -3075,6 +3079,47 @@ fi if $test -f cc.cbu; then . ./cc.cbu fi +: Quick sanity check, we will do a fuller one later when we know +: the various flags and libs +$rm -f try try.* +$cat >try.c <<EOM +int main(int argc, char *argv[]) { + return 0; +} +EOM +if $cc -o try try.c; then + : +else + echo "Uh-oh, the C compiler "$cc" doesn't seem to be working..." >&4 + despair=yes + trygcc=yes + case "$cc" in + *gcc) trygcc=no ;; + esac + case "`$cc -v 2>&1`" in + *gcc*) trygcc=no ;; + esac + if $test X"$trygcc" = Xyes; then + if gcc -o try try.c; then + echo " " + echo "You seem to have a working gcc, though." + rp="Do you want to use it?" + dflt=y + . ./myread + case "$ans" in + [yY]*) cc=gcc; despair=no ;; + esac + fi + fi + if $test X"$despair" = Xyes; then + echo "You need to find a working C compiler." >&4 + echo "I cannot continue any further, aborting." >&4 + exit 1 + fi +fi +$rm -f try try.* + + echo " " echo "Checking for GNU cc in disguise and/or its version number..." >&4 $cat >gccvers.c <<EOM @@ -3113,6 +3158,154 @@ case "$gccversion" in 1*) cpp=`./loc gcc-cpp $cpp $pth` ;; esac +: see how we invoke the C preprocessor +echo " " +echo "Now, how can we feed standard input to your C preprocessor..." >&4 +cat <<'EOT' >testcpp.c +#define ABC abc +#define XYZ xyz +ABC.XYZ +EOT +cd .. +if test ! -f cppstdin; then + if test "X$osname" = "Xaix" -a "X$gccversion" = X; then + # AIX cc -E doesn't show the absolute headerfile + # locations but we'll cheat by using the -M flag. + echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin + else + echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin + fi +else + echo "Keeping your $hint cppstdin wrapper." +fi +chmod 755 cppstdin +wrapper=`pwd`/cppstdin +ok='false' +cd UU + +if $test "X$cppstdin" != "X" && \ + $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 +then + echo "You used to use $cppstdin $cppminus so we'll use that again." + case "$cpprun" in + '') echo "But let's see if we can live without a wrapper..." ;; + *) + if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 + then + echo "(And we'll use $cpprun $cpplast to preprocess directly.)" + ok='true' + else + echo "(However, $cpprun $cpplast does not work, let's see...)" + fi + ;; + esac +else + case "$cppstdin" in + '') ;; + *) + echo "Good old $cppstdin $cppminus does not seem to be of any help..." + ;; + esac +fi + +if $ok; then + : nothing +elif echo 'Maybe "'"$cc"' -E" will work...'; \ + $cc -E <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "Yup, it does." + x_cpp="$cc -E" + x_minus=''; +elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \ + $cc -E - <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "Yup, it does." + x_cpp="$cc -E" + x_minus='-'; +elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \ + $cc -P <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "Yipee, that works!" + x_cpp="$cc -P" + x_minus=''; +elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \ + $cc -P - <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "At long last!" + x_cpp="$cc -P" + x_minus='-'; +elif echo 'No such luck, maybe "'$cpp'" will work...'; \ + $cpp <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "It works!" + x_cpp="$cpp" + x_minus=''; +elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \ + $cpp - <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "Hooray, it works! I was beginning to wonder." + x_cpp="$cpp" + x_minus='-'; +elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \ + $wrapper <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + x_cpp="$wrapper" + x_minus='' + echo "Eureka!" +else + dflt='' + rp="No dice. I can't find a C preprocessor. Name one:" + . ./myread + x_cpp="$ans" + x_minus='' + $x_cpp <testcpp.c >testcpp.out 2>&1 + if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "OK, that will do." >&4 + else +echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4 + exit 1 + fi +fi + +case "$ok" in +false) + cppstdin="$x_cpp" + cppminus="$x_minus" + cpprun="$x_cpp" + cpplast="$x_minus" + set X $x_cpp + shift + case "$1" in + "$cpp") + echo "Perhaps can we force $cc -E using a wrapper..." + if $wrapper <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 + then + echo "Yup, we can." + cppstdin="$wrapper" + cppminus=''; + else + echo "Nope, we'll have to live without it..." + fi + ;; + esac + case "$cpprun" in + "$wrapper") + cpprun='' + cpplast='' + ;; + esac + ;; +esac + +case "$cppstdin" in +"$wrapper"|'cppstdin') ;; +*) $rm -f $wrapper;; +esac +$rm -f testcpp.c testcpp.out + : decide how portable to be. Allow command line overrides. case "$d_portable" in "$undef") ;; @@ -3406,7 +3599,7 @@ if $test -f /bin/mips && /bin/mips; then /bsd43 #endif EOCP - if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then + if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then dflt='/bsd43/usr/include' incpath='/bsd43' mips_type='BSD 4.3' @@ -3439,154 +3632,6 @@ y) fn=d/ ;; esac -: see how we invoke the C preprocessor -echo " " -echo "Now, how can we feed standard input to your C preprocessor..." >&4 -cat <<'EOT' >testcpp.c -#define ABC abc -#define XYZ xyz -ABC.XYZ -EOT -cd .. -if test ! -f cppstdin; then - if test "X$osname" = "Xaix" -a "X$gccversion" = X; then - # AIX cc -E doesn't show the absolute headerfile - # locations but we'll cheat by using the -M flag. - echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin - else - echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin - fi -else - echo "Keeping your $hint cppstdin wrapper." -fi -chmod 755 cppstdin -wrapper=`pwd`/cppstdin -ok='false' -cd UU - -if $test "X$cppstdin" != "X" && \ - $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 -then - echo "You used to use $cppstdin $cppminus so we'll use that again." - case "$cpprun" in - '') echo "But let's see if we can live without a wrapper..." ;; - *) - if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 - then - echo "(And we'll use $cpprun $cpplast to preprocess directly.)" - ok='true' - else - echo "(However, $cpprun $cpplast does not work, let's see...)" - fi - ;; - esac -else - case "$cppstdin" in - '') ;; - *) - echo "Good old $cppstdin $cppminus does not seem to be of any help..." - ;; - esac -fi - -if $ok; then - : nothing -elif echo 'Maybe "'"$cc"' -E" will work...'; \ - $cc -E <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Yup, it does." - x_cpp="$cc -E" - x_minus=''; -elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \ - $cc -E - <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Yup, it does." - x_cpp="$cc -E" - x_minus='-'; -elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \ - $cc -P <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Yipee, that works!" - x_cpp="$cc -P" - x_minus=''; -elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \ - $cc -P - <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "At long last!" - x_cpp="$cc -P" - x_minus='-'; -elif echo 'No such luck, maybe "'$cpp'" will work...'; \ - $cpp <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "It works!" - x_cpp="$cpp" - x_minus=''; -elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \ - $cpp - <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Hooray, it works! I was beginning to wonder." - x_cpp="$cpp" - x_minus='-'; -elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \ - $wrapper <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - x_cpp="$wrapper" - x_minus='' - echo "Eureka!" -else - dflt='' - rp="No dice. I can't find a C preprocessor. Name one:" - . ./myread - x_cpp="$ans" - x_minus='' - $x_cpp <testcpp.c >testcpp.out 2>&1 - if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "OK, that will do." >&4 - else -echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4 - exit 1 - fi -fi - -case "$ok" in -false) - cppstdin="$x_cpp" - cppminus="$x_minus" - cpprun="$x_cpp" - cpplast="$x_minus" - set X $x_cpp - shift - case "$1" in - "$cpp") - echo "Perhaps can we force $cc -E using a wrapper..." - if $wrapper <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 - then - echo "Yup, we can." - cppstdin="$wrapper" - cppminus=''; - else - echo "Nope, we'll have to live without it..." - fi - ;; - esac - case "$cpprun" in - "$wrapper") - cpprun='' - cpplast='' - ;; - esac - ;; -esac - -case "$cppstdin" in -"$wrapper"|'cppstdin') ;; -*) $rm -f $wrapper;; -esac -$rm -f testcpp.c testcpp.out - : Set private lib path case "$plibpth" in '') if ./mips; then @@ -9190,10 +9235,6 @@ eval $inlibc set getespwnam d_getespwnam eval $inlibc -: see if getespwnam exists -set getespwnam d_getespwnam -eval $inlibc - : see if getfsstat exists set getfsstat d_getfsstat @@ -9376,10 +9417,6 @@ eval $hasproto set getprpwnam d_getprpwnam eval $inlibc -: see if getprpwnam exists -set getprpwnam d_getprpwnam -eval $inlibc - : see if getpwent exists set getpwent d_getpwent eval $inlibc @@ -14358,10 +14395,6 @@ eval $inhdr set prot.h i_prot eval $inhdr -: see if this is a prot.h system -set prot.h i_prot -eval $inhdr - echo " " $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 $cat <<'EOSH' > Cppsym.know @@ -1190,6 +1190,7 @@ pod/perltoot.pod Tom's object-oriented tutorial pod/perltootc.pod Tom's object-oriented tutorial (more on class data) pod/perltrap.pod Trap info pod/perlunicode.pod Unicode support info +pod/perlutil.pod Accompanying utilities explained pod/perlvar.pod Variable info pod/perlxs.pod XS api info pod/perlxstut.pod XS tutorial diff --git a/README.cygwin b/README.cygwin index eb6c289881..2a95ab97c3 100644 --- a/README.cygwin +++ b/README.cygwin @@ -31,7 +31,7 @@ about this project can be found at: A recent net or commercial release of Cygwin is required. -At the time this document was written, Cygwin 1.1.1 was current. +At the time this document was last updated, Cygwin 1.1.2 was current. B<NOTE:> At this point, minimal effort has been made to provide compatibility with old (beta) Cygwin releases. The focus has been to @@ -138,6 +138,11 @@ The MD5 port was done by Andy Piper: ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Okhapkin_Sergey/libcrypt.tgz +There is also a Linux compatible 56 bit DES crypt port by Corinna +Vinschen: + + ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/porters/Vinschen_Corinna/V1.1.1/crypt-1.0.tar.gz + =item * C<-lgdbm> (C<use GDBM_File>) GDBM is available for Cygwin. GDBM's ndbm/dbm compatibility feature @@ -353,7 +358,10 @@ these options, these tests will fail: =head2 Hard Links FAT partitions do not support hard links (whereas NTFS does), in which -case Cygwin implements link() by copying the file. These tests will fail: +case Cygwin implements link() by copying the file. On remote (network) +drives Cygwin's stat() always sets C<st_nlink> to 1, so the link count +for remote directories and files is not available. In both cases, +these tests will fail: Failed Test List of failed ------------------------------------ @@ -431,7 +439,9 @@ printable characters except these: : * ? " < > | -File names are case insensitive, but case preserving. +File names are case insensitive, but case preserving. A pathname +that contains a backslash is a Win32 pathname (and not subject to the +translations applied to POSIX style pathnames). =item * Text/Binary @@ -450,13 +460,13 @@ The text/binary issue is covered at length in the Cygwin documentation. =item * F<.exe> -The Cygwin stat() makes the F<.exe> extension transparent by looking for -F<foo.exe> when you ask for F<foo> (unless a F<foo> also exists). Cygwin -does not require a F<.exe> extension, but I<gcc> adds it automatically -when building a program. However, when accessing an executable as a -normal file (e.g., I<cp> in a makefile) the F<.exe> is not transparent. -The I<install> included with Cygwin automatically appends a F<.exe> -when necessary. +The Cygwin stat(), lstat() and readlink() functions make the F<.exe> +extension transparent by looking for F<foo.exe> when you ask for F<foo> +(unless a F<foo> also exists). Cygwin does not require a F<.exe> +extension, but I<gcc> adds it automatically when building a program. +However, when accessing an executable as a normal file (e.g., I<cp> +in a makefile) the F<.exe> is not transparent. The I<install> included +with Cygwin automatically appends a F<.exe> when necessary. =item * chown() @@ -558,6 +568,7 @@ be kept as clean as possible. - require MM_Cygwin.pm lib/ExtUtils/MM_Cygwin.pm - canonpath, cflags, manifypods, perl_archive + lib/File/Find.pm - on remote drives stat() always sets st_nlink to 1 lib/File/Spec/Unix.pm - preserve //unc lib/perl5db.pl - use stdin not /dev/tty utils/perlcc.PL - DynaLoader.a in compile, -DUSEIMPORTLIB @@ -586,4 +597,4 @@ Teun Burgers <burgers@ecn.nl>. =head1 HISTORY -Last updated: 5 May 2000 +Last updated: 20 June 2000 @@ -43,9 +43,6 @@ Namespace cleanup API-space: complete the list of things that constitute public api Configure - fix the vicious cyclic multidependency of cc <-> libpth <-> loclibpth - libswanted <-> usethreads <-> use64bitint <-> use64bitall <-> - uselargefiles <-> ... make configuring+building away from source directory work (VPATH et al) this is related to: cross-compilation configuring (see Todo) _r support (see Todo for mode detailed description) @@ -57,7 +54,7 @@ Configure PREFERABLY AS AN EXTENSION IPv6 support: see RFC2292, RFC2553 PREFERABLY AS AN EXTENSION - there already is Socket6 + there already is Socket6 in CPAN Long doubles figure out where the PV->NV->PV conversion gets it wrong at least @@ -170,3 +167,5 @@ Documentation spot-check all new modules for completeness better docs for pack()/unpack() reorg tutorials vs. reference sections + make roffitall to be dynamical about its pods and libs + diff --git a/config_h.SH b/config_h.SH index 122cabe262..21eb607cf1 100644 --- a/config_h.SH +++ b/config_h.SH @@ -1204,18 +1204,18 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This macro surrounds its token with double quotes. */ #if $cpp_stuff == 1 -# define CAT2(a,b) a/**/b -# define STRINGIFY(a) "a" +#define CAT2(a,b) a/**/b +#define STRINGIFY(a) "a" /* If you can get stringification with catify, tell me how! */ #endif #if $cpp_stuff == 42 -# define PeRl_CaTiFy(a, b) a ## b -# define PeRl_StGiFy(a) #a +#define PeRl_CaTiFy(a, b) a ## b +#define PeRl_StGiFy(a) #a /* the additional level of indirection enables these macros to be * used as arguments to other macros. See K&R 2nd ed., page 231. */ -# define CAT2(a,b) PeRl_CaTiFy(a,b) -# define StGiFy(a) PeRl_StGiFy(a) -# define STRINGIFY(a) PeRl_StGiFy(a) +#define CAT2(a,b) PeRl_CaTiFy(a,b) +#define StGiFy(a) PeRl_StGiFy(a) +#define STRINGIFY(a) PeRl_StGiFy(a) #endif #if $cpp_stuff != 1 && $cpp_stuff != 42 # include "Bletch: How does this C preprocessor catenate tokens?" @@ -721,6 +721,8 @@ #define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed #define utf8_distance Perl_utf8_distance #define utf8_hop Perl_utf8_hop +#define utf8_to_bytes Perl_utf8_to_bytes +#define bytes_to_utf8 Perl_bytes_to_utf8 #define utf8_to_uv Perl_utf8_to_uv #define uv_to_utf8 Perl_uv_to_utf8 #define vivify_defelem Perl_vivify_defelem @@ -850,8 +852,6 @@ #define do_trans_UU_simple S_do_trans_UU_simple #define do_trans_UU_count S_do_trans_UU_count #define do_trans_UU_complex S_do_trans_UU_complex -#define do_trans_UC_simple S_do_trans_UC_simple -#define do_trans_CU_simple S_do_trans_CU_simple #define do_trans_UC_trivial S_do_trans_UC_trivial #define do_trans_CU_trivial S_do_trans_CU_trivial #endif @@ -2170,6 +2170,8 @@ #define utf16_to_utf8_reversed(a,b,c) Perl_utf16_to_utf8_reversed(aTHX_ a,b,c) #define utf8_distance(a,b) Perl_utf8_distance(aTHX_ a,b) #define utf8_hop(a,b) Perl_utf8_hop(aTHX_ a,b) +#define utf8_to_bytes(a,b) Perl_utf8_to_bytes(aTHX_ a,b) +#define bytes_to_utf8(a,b) Perl_bytes_to_utf8(aTHX_ a,b) #define utf8_to_uv(a,b) Perl_utf8_to_uv(aTHX_ a,b) #define uv_to_utf8(a,b) Perl_uv_to_utf8(aTHX_ a,b) #define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a) @@ -2293,8 +2295,6 @@ #define do_trans_UU_simple(a) S_do_trans_UU_simple(aTHX_ a) #define do_trans_UU_count(a) S_do_trans_UU_count(aTHX_ a) #define do_trans_UU_complex(a) S_do_trans_UU_complex(aTHX_ a) -#define do_trans_UC_simple(a) S_do_trans_UC_simple(aTHX_ a) -#define do_trans_CU_simple(a) S_do_trans_CU_simple(aTHX_ a) #define do_trans_UC_trivial(a) S_do_trans_UC_trivial(aTHX_ a) #define do_trans_CU_trivial(a) S_do_trans_CU_trivial(aTHX_ a) #endif @@ -4252,6 +4252,10 @@ #define utf8_distance Perl_utf8_distance #define Perl_utf8_hop CPerlObj::Perl_utf8_hop #define utf8_hop Perl_utf8_hop +#define Perl_utf8_to_bytes CPerlObj::Perl_utf8_to_bytes +#define utf8_to_bytes Perl_utf8_to_bytes +#define Perl_bytes_to_utf8 CPerlObj::Perl_bytes_to_utf8 +#define bytes_to_utf8 Perl_bytes_to_utf8 #define Perl_utf8_to_uv CPerlObj::Perl_utf8_to_uv #define utf8_to_uv Perl_utf8_to_uv #define Perl_uv_to_utf8 CPerlObj::Perl_uv_to_utf8 @@ -4487,10 +4491,6 @@ #define do_trans_UU_count S_do_trans_UU_count #define S_do_trans_UU_complex CPerlObj::S_do_trans_UU_complex #define do_trans_UU_complex S_do_trans_UU_complex -#define S_do_trans_UC_simple CPerlObj::S_do_trans_UC_simple -#define do_trans_UC_simple S_do_trans_UC_simple -#define S_do_trans_CU_simple CPerlObj::S_do_trans_CU_simple -#define do_trans_CU_simple S_do_trans_CU_simple #define S_do_trans_UC_trivial CPerlObj::S_do_trans_UC_trivial #define do_trans_UC_trivial S_do_trans_UC_trivial #define S_do_trans_CU_trivial CPerlObj::S_do_trans_CU_trivial @@ -1083,10 +1083,10 @@ my %docfuncs; sub autodoc ($$) { # parse a file and extract documentation info my($fh,$file) = @_; - my($in, $doc); - + my($in, $doc, $line); FUNC: while (defined($in = <$fh>)) { + $line++; if ($in =~ /^=for\s+apidoc\s+(.*)\n/) { my $proto = $1; $proto = "||$proto" unless $proto =~ /\|/; @@ -1094,7 +1094,12 @@ FUNC: my $docs = ""; DOC: while (defined($doc = <$fh>)) { + $line++; last DOC if $doc =~ /^=\w+/; + if ($doc =~ m:^\*/$:) { + warn "=cut missing? $file:$line:$doc";; + last DOC; + } $docs .= $doc; } $docs = "\n$docs" if $docs and $docs !~ /^\n/; @@ -1109,9 +1114,13 @@ DOC: else { $docfuncs{$name} = [$flags, $docs, $ret, $file, @args]; } - if ($doc =~ /^=for/) { - $in = $doc; - redo FUNC; + if (defined $doc) { + if ($doc =~ /^=for/) { + $in = $doc; + redo FUNC; + } + } else { + warn "$file:$line:$in"; } } } @@ -1172,6 +1181,8 @@ walk_table { # load documented functions into approriate hash } \*DOC; for (sort keys %docfuncs) { + # Have you used a full for apidoc or just a func name? + # Have you used Ap instead of Am in the for apidoc? warn "Unable to place $_!\n"; } diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh index 8aee6d40dc..6e84bace62 100644 --- a/hints/solaris_2.sh +++ b/hints/solaris_2.sh @@ -387,10 +387,10 @@ cat > UU/use64bitint.cbu <<'EOCBU' case "$use64bitint" in "$define"|true|[yY]*) case "`uname -r`" in - 2.[1-6]) + 5.[1-6]) cat >&4 <<EOM -Solaris `uname -r` does not support 64-bit integers. -You should upgrade to at least Solaris 2.7. +Solaris `uname -r|sed -e 's/^5\.\([789]\)$/\1/'` does not support 64-bit integers. +You should upgrade to at least Solaris 7. EOM exit 1 ;; diff --git a/lib/ExtUtils/MM_VMS.pm b/lib/ExtUtils/MM_VMS.pm index 1e6c61a4c8..d21a56acba 100644 --- a/lib/ExtUtils/MM_VMS.pm +++ b/lib/ExtUtils/MM_VMS.pm @@ -626,7 +626,7 @@ INST_ARCHAUTODIR = $self->{INST_ARCHAUTODIR} if ($self->has_link_code()) { push @m,' INST_STATIC = $(INST_ARCHAUTODIR)$(BASEEXT)$(LIB_EXT) -INST_DYNAMIC = $(INST_ARCHAUTODIR)$(BASEEXT).$(DLEXT) +INST_DYNAMIC = $(INST_ARCHAUTODIR)$(DLBASE).$(DLEXT) INST_BOOT = $(INST_ARCHAUTODIR)$(BASEEXT).bs '; } else { diff --git a/lib/File/Find.pm b/lib/File/Find.pm index ef10e9d416..f803c15d51 100644 --- a/lib/File/Find.pm +++ b/lib/File/Find.pm @@ -734,7 +734,8 @@ if ($^O eq 'VMS') { } $File::Find::dont_use_nlink = 1 - if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $^O eq 'MSWin32'; + if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $^O eq 'MSWin32' || + $^O eq 'cygwin'; # Set dont_use_nlink in your hint file if your system's stat doesn't # report the number of links in a directory as an indication @@ -1849,6 +1849,14 @@ #define Perl_utf8_hop pPerl->Perl_utf8_hop #undef utf8_hop #define utf8_hop Perl_utf8_hop +#undef Perl_utf8_to_bytes +#define Perl_utf8_to_bytes pPerl->Perl_utf8_to_bytes +#undef utf8_to_bytes +#define utf8_to_bytes Perl_utf8_to_bytes +#undef Perl_bytes_to_utf8 +#define Perl_bytes_to_utf8 pPerl->Perl_bytes_to_utf8 +#undef bytes_to_utf8 +#define bytes_to_utf8 Perl_bytes_to_utf8 #undef Perl_utf8_to_uv #define Perl_utf8_to_uv pPerl->Perl_utf8_to_uv #undef utf8_to_uv @@ -94,7 +94,8 @@ Deprecated. Use C<GIMME_V> instead. /* On OP_EXISTS, treat av as av, not avhv. */ /* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */ /* On OP_ENTERITER, loop var is per-thread */ - /* On pushre, re is /\s+/ imp. by split " " */ + /* On pushre, re is /\s+/ imp. by split " " */ + /* On regcomp, "use re 'eval'" was in scope */ /* old names; don't use in new code, but don't break them, either */ #define OPf_LIST OPf_WANT_LIST @@ -3343,6 +3343,20 @@ Perl_utf8_hop(pTHXo_ U8 *s, I32 off) return ((CPerlObj*)pPerl)->Perl_utf8_hop(s, off); } +#undef Perl_utf8_to_bytes +U8* +Perl_utf8_to_bytes(pTHXo_ U8 *s, STRLEN len) +{ + return ((CPerlObj*)pPerl)->Perl_utf8_to_bytes(s, len); +} + +#undef Perl_bytes_to_utf8 +U8* +Perl_bytes_to_utf8(pTHXo_ U8 *s, STRLEN len) +{ + return ((CPerlObj*)pPerl)->Perl_bytes_to_utf8(s, len); +} + #undef Perl_utf8_to_uv UV Perl_utf8_to_uv(pTHXo_ U8 *s, I32* retlen) diff --git a/pod/Makefile b/pod/Makefile index 5f6c40c158..a6f4efbeb7 100644 --- a/pod/Makefile +++ b/pod/Makefile @@ -16,60 +16,24 @@ REALPERL = ../perl POD = \ perl.pod \ - perldelta.pod \ perl5004delta.pod \ perl5005delta.pod \ - perldata.pod \ - perlsyn.pod \ - perlop.pod \ - perlre.pod \ - perlrun.pod \ - perlfunc.pod \ - perlopentut.pod \ - perlvar.pod \ - perlsub.pod \ - perlmod.pod \ - perlmodlib.pod \ - perlmodinstall.pod \ - perlnewmod.pod \ - perlfork.pod \ - perlform.pod \ - perllocale.pod \ - perlref.pod \ - perlreftut.pod \ - perldsc.pod \ - perllol.pod \ + perl56delta.pod \ + perlapi.pod \ + perlapio.pod \ + perlbook.pod \ perlboot.pod \ - perltoot.pod \ - perltootc.pod \ - perlobj.pod \ - perltie.pod \ perlbot.pod \ - perlipc.pod \ - perlthrtut.pod \ + perlcall.pod \ + perlcompile.pod \ + perldata.pod \ perldbmfilter.pod \ perldebguts.pod \ perldebug.pod \ - perlnumber.pod \ + perldelta.pod \ perldiag.pod \ - perlsec.pod \ - perltrap.pod \ - perlport.pod \ - perlstyle.pod \ - perlpod.pod \ - perlbook.pod \ + perldsc.pod \ perlembed.pod \ - perlapio.pod \ - perlxs.pod \ - perlxstut.pod \ - perlguts.pod \ - perlcall.pod \ - perlcompile.pod \ - perltodo.pod \ - perlapi.pod \ - perlintern.pod \ - perlhack.pod \ - perlhist.pod \ perlfaq.pod \ perlfaq1.pod \ perlfaq2.pod \ @@ -80,64 +44,71 @@ POD = \ perlfaq7.pod \ perlfaq8.pod \ perlfaq9.pod \ - perltoc.pod + perlfilter.pod \ + perlfork.pod \ + perlform.pod \ + perlfunc.pod \ + perlguts.pod \ + perlhack.pod \ + perlhist.pod \ + perlintern.pod \ + perlipc.pod \ + perllexwarn.pod \ + perllocale.pod \ + perllol.pod \ + perlmod.pod \ + perlmodinstall.pod \ + perlmodlib.pod \ + perlnewmod.pod \ + perlnumber.pod \ + perlobj.pod \ + perlop.pod \ + perlopentut.pod \ + perlpod.pod \ + perlport.pod \ + perlre.pod \ + perlref.pod \ + perlreftut.pod \ + perlrequick.pod \ + perlretut.pod \ + perlrun.pod \ + perlsec.pod \ + perlstyle.pod \ + perlsub.pod \ + perlsyn.pod \ + perlthrtut.pod \ + perltie.pod \ + perltoc.pod \ + perltodo.pod \ + perltoot.pod \ + perltootc.pod \ + perltrap.pod \ + perlunicode.pod \ + perlutil.pod \ + perlvar.pod \ + perlxs.pod \ + perlxstut.pod MAN = \ perl.man \ - perldelta.man \ perl5004delta.man \ perl5005delta.man \ - perldata.man \ - perlsyn.man \ - perlop.man \ - perlre.man \ - perlrun.man \ - perlfunc.man \ - perlopentut.man \ - perlvar.man \ - perlsub.man \ - perlmod.man \ - perlmodlib.man \ - perlmodinstall.man \ - perlnewmod.man \ - perlfork.man \ - perlform.man \ - perllocale.man \ - perlref.man \ - perlreftut.man \ - perldsc.man \ - perllol.man \ + perl56delta.man \ + perlapi.man \ + perlapio.man \ + perlbook.man \ perlboot.man \ - perltoot.man \ - perltootc.man \ - perlobj.man \ - perltie.man \ perlbot.man \ - perlipc.man \ - perlthrtut.man \ + perlcall.man \ + perlcompile.man \ + perldata.man \ perldbmfilter.man \ perldebguts.man \ perldebug.man \ - perlnumber.man \ + perldelta.man \ perldiag.man \ - perlsec.man \ - perltrap.man \ - perlport.man \ - perlstyle.man \ - perlpod.man \ - perlbook.man \ + perldsc.man \ perlembed.man \ - perlapio.man \ - perlxs.man \ - perlxstut.man \ - perlguts.man \ - perlcall.man \ - perlcompile.man \ - perltodo.man \ - perlapi.man \ - perlintern.man \ - perlhack.man \ - perlhist.man \ perlfaq.man \ perlfaq1.man \ perlfaq2.man \ @@ -148,64 +119,71 @@ MAN = \ perlfaq7.man \ perlfaq8.man \ perlfaq9.man \ - perltoc.man + perlfilter.man \ + perlfork.man \ + perlform.man \ + perlfunc.man \ + perlguts.man \ + perlhack.man \ + perlhist.man \ + perlintern.man \ + perlipc.man \ + perllexwarn.man \ + perllocale.man \ + perllol.man \ + perlmod.man \ + perlmodinstall.man \ + perlmodlib.man \ + perlnewmod.man \ + perlnumber.man \ + perlobj.man \ + perlop.man \ + perlopentut.man \ + perlpod.man \ + perlport.man \ + perlre.man \ + perlref.man \ + perlreftut.man \ + perlrequick.man \ + perlretut.man \ + perlrun.man \ + perlsec.man \ + perlstyle.man \ + perlsub.man \ + perlsyn.man \ + perlthrtut.man \ + perltie.man \ + perltoc.man \ + perltodo.man \ + perltoot.man \ + perltootc.man \ + perltrap.man \ + perlunicode.man \ + perlutil.man \ + perlvar.man \ + perlxs.man \ + perlxstut.man HTML = \ perl.html \ - perldelta.html \ perl5004delta.html \ perl5005delta.html \ - perldata.html \ - perlsyn.html \ - perlop.html \ - perlre.html \ - perlrun.html \ - perlfunc.html \ - perlopentut.html \ - perlvar.html \ - perlsub.html \ - perlmod.html \ - perlmodlib.html \ - perlmodinstall.html \ - perlnewmod.html \ - perlfork.html \ - perlform.html \ - perllocale.html \ - perlref.html \ - perlreftut.html \ - perldsc.html \ - perllol.html \ + perl56delta.html \ + perlapi.html \ + perlapio.html \ + perlbook.html \ perlboot.html \ - perltoot.html \ - perltootc.html \ - perlobj.html \ - perltie.html \ perlbot.html \ - perlipc.html \ - perlthrtut.html \ + perlcall.html \ + perlcompile.html \ + perldata.html \ perldbmfilter.html \ perldebguts.html \ perldebug.html \ - perlnumber.html \ + perldelta.html \ perldiag.html \ - perlsec.html \ - perltrap.html \ - perlport.html \ - perlstyle.html \ - perlpod.html \ - perlbook.html \ + perldsc.html \ perlembed.html \ - perlapio.html \ - perlxs.html \ - perlxstut.html \ - perlguts.html \ - perlcall.html \ - perlcompile.html \ - perltodo.html \ - perlapi.html \ - perlintern.html \ - perlhack.html \ - perlhist.html \ perlfaq.html \ perlfaq1.html \ perlfaq2.html \ @@ -215,65 +193,73 @@ HTML = \ perlfaq6.html \ perlfaq7.html \ perlfaq8.html \ - perlfaq9.html + perlfaq9.html \ + perlfilter.html \ + perlfork.html \ + perlform.html \ + perlfunc.html \ + perlguts.html \ + perlhack.html \ + perlhist.html \ + perlintern.html \ + perlipc.html \ + perllexwarn.html \ + perllocale.html \ + perllol.html \ + perlmod.html \ + perlmodinstall.html \ + perlmodlib.html \ + perlnewmod.html \ + perlnumber.html \ + perlobj.html \ + perlop.html \ + perlopentut.html \ + perlpod.html \ + perlport.html \ + perlre.html \ + perlref.html \ + perlreftut.html \ + perlrequick.html \ + perlretut.html \ + perlrun.html \ + perlsec.html \ + perlstyle.html \ + perlsub.html \ + perlsyn.html \ + perlthrtut.html \ + perltie.html \ + perltodo.html \ + perltoot.html \ + perltootc.html \ + perltrap.html \ + perlunicode.html \ + perlutil.html \ + perlvar.html \ + perlxs.html \ + perlxstut.html + # not perltoc.html TEX = \ perl.tex \ - perldelta.tex \ perl5004delta.tex \ perl5005delta.tex \ - perldata.tex \ - perlsyn.tex \ - perlop.tex \ - perlre.tex \ - perlrun.tex \ - perlfunc.tex \ - perlopentut.tex \ - perlvar.tex \ - perlsub.tex \ - perlmod.tex \ - perlmodlib.tex \ - perlmodinstall.tex \ - perlnewmod.tex \ - perlfork.tex \ - perlform.tex \ - perllocale.tex \ - perlref.tex \ - perlreftut.tex \ - perldsc.tex \ - perllol.tex \ + perl56delta.tex \ + perlapi.tex \ + perlapio.tex \ + perlbook.tex \ perlboot.tex \ - perltoot.tex \ - perltootc.tex \ - perlobj.tex \ - perltie.tex \ perlbot.tex \ - perlipc.tex \ - perlthrtut.tex \ + perlcall.tex \ + perlcompile.tex \ + perldata.tex \ perldbmfilter.tex \ perldebguts.tex \ perldebug.tex \ - perlnumber.tex \ + perldelta.tex \ perldiag.tex \ - perlsec.tex \ - perltrap.tex \ - perlport.tex \ - perlstyle.tex \ - perlpod.tex \ - perlbook.tex \ + perldsc.tex \ perlembed.tex \ - perlapio.tex \ - perlxs.tex \ - perlxstut.tex \ - perlguts.tex \ - perlcall.tex \ - perlcompile.tex \ - perltodo.tex \ - perlapi.tex \ - perlintern.tex \ - perlhack.tex \ - perlhist.tex \ perlfaq.tex \ perlfaq1.tex \ perlfaq2.tex \ @@ -284,7 +270,50 @@ TEX = \ perlfaq7.tex \ perlfaq8.tex \ perlfaq9.tex \ - perltoc.tex + perlfilter.tex \ + perlfork.tex \ + perlform.tex \ + perlfunc.tex \ + perlguts.tex \ + perlhack.tex \ + perlhist.tex \ + perlintern.tex \ + perlipc.tex \ + perllexwarn.tex \ + perllocale.tex \ + perllol.tex \ + perlmod.tex \ + perlmodinstall.tex \ + perlmodlib.tex \ + perlnewmod.tex \ + perlnumber.tex \ + perlobj.tex \ + perlop.tex \ + perlopentut.tex \ + perlpod.tex \ + perlport.tex \ + perlre.tex \ + perlref.tex \ + perlreftut.tex \ + perlrequick.tex \ + perlretut.tex \ + perlrun.tex \ + perlsec.tex \ + perlstyle.tex \ + perlsub.tex \ + perlsyn.tex \ + perlthrtut.tex \ + perltie.tex \ + perltoc.tex \ + perltodo.tex \ + perltoot.tex \ + perltootc.tex \ + perltrap.tex \ + perlunicode.tex \ + perlutil.tex \ + perlvar.tex \ + perlxs.tex \ + perlxstut.tex man: pod2man $(MAN) diff --git a/pod/perlapi.pod b/pod/perlapi.pod index 19ab71fcda..f274641029 100644 --- a/pod/perlapi.pod +++ b/pod/perlapi.pod @@ -25,6 +25,9 @@ Same as C<av_len()>. Deprecated, use C<av_len()> instead. int AvFILL(AV* av) +=for hackers +Found in file av.h + =item av_clear Clears an array, making it empty. Does not free the memory used by the @@ -32,6 +35,9 @@ array itself. void av_clear(AV* ar) +=for hackers +Found in file av.c + =item av_extend Pre-extend an array. The C<key> is the index to which the array should be @@ -39,6 +45,9 @@ extended. void av_extend(AV* ar, I32 key) +=for hackers +Found in file av.c + =item av_fetch Returns the SV at the specified index in the array. The C<key> is the @@ -50,6 +59,9 @@ more information on how to use this function on tied arrays. SV** av_fetch(AV* ar, I32 key, I32 lval) +=for hackers +Found in file av.c + =item av_len Returns the highest index in the array. Returns -1 if the array is @@ -57,6 +69,9 @@ empty. I32 av_len(AV* ar) +=for hackers +Found in file av.c + =item av_make Creates a new AV and populates it with a list of SVs. The SVs are copied @@ -65,6 +80,9 @@ will have a reference count of 1. AV* av_make(I32 size, SV** svp) +=for hackers +Found in file av.c + =item av_pop Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array @@ -72,6 +90,9 @@ is empty. SV* av_pop(AV* ar) +=for hackers +Found in file av.c + =item av_push Pushes an SV onto the end of the array. The array will grow automatically @@ -79,12 +100,18 @@ to accommodate the addition. void av_push(AV* ar, SV* val) +=for hackers +Found in file av.c + =item av_shift Shifts an SV off the beginning of the array. SV* av_shift(AV* ar) +=for hackers +Found in file av.c + =item av_store Stores an SV in an array. The array index is specified as C<key>. The @@ -100,12 +127,18 @@ more information on how to use this function on tied arrays. SV** av_store(AV* ar, I32 key, SV* val) +=for hackers +Found in file av.c + =item av_undef Undefines the array. Frees the memory used by the array itself. void av_undef(AV* ar) +=for hackers +Found in file av.c + =item av_unshift Unshift the given number of C<undef> values onto the beginning of the @@ -114,6 +147,19 @@ must then use C<av_store> to assign values to these new elements. void av_unshift(AV* ar, I32 num) +=for hackers +Found in file av.c + +=item bytes_to_utf8 + +Converts a string C<s> of length C<len> from ASCII into UTF8 encoding. +Returns a pointer to the newly-created string. + + U8 * bytes_to_utf8(U8 *s, STRLEN len) + +=for hackers +Found in file utf8.c + =item call_argv Performs a callback to the specified Perl sub. See L<perlcall>. @@ -122,6 +168,9 @@ NOTE: the perl_ form of this function is deprecated. I32 call_argv(const char* sub_name, I32 flags, char** argv) +=for hackers +Found in file perl.c + =item call_method Performs a callback to the specified Perl method. The blessed object must @@ -131,6 +180,9 @@ NOTE: the perl_ form of this function is deprecated. I32 call_method(const char* methname, I32 flags) +=for hackers +Found in file perl.c + =item call_pv Performs a callback to the specified Perl sub. See L<perlcall>. @@ -139,6 +191,9 @@ NOTE: the perl_ form of this function is deprecated. I32 call_pv(const char* sub_name, I32 flags) +=for hackers +Found in file perl.c + =item call_sv Performs a callback to the Perl sub whose name is in the SV. See @@ -148,6 +203,9 @@ NOTE: the perl_ form of this function is deprecated. I32 call_sv(SV* sv, I32 flags) +=for hackers +Found in file perl.c + =item CLASS Variable which is setup by C<xsubpp> to indicate the @@ -155,6 +213,9 @@ class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>. char* CLASS +=for hackers +Found in file XSUB.h + =item Copy The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the @@ -163,6 +224,9 @@ the type. May fail on overlapping copies. See also C<Move>. void Copy(void* src, void* dest, int nitems, type) +=for hackers +Found in file handy.h + =item croak This is the XSUB-writer's interface to Perl's C<die> function. @@ -178,12 +242,18 @@ C<$@> and then pass C<Nullch> to croak(): void croak(const char* pat, ...) +=for hackers +Found in file util.c + =item CvSTASH Returns the stash of the CV. HV* CvSTASH(CV* cv) +=for hackers +Found in file cv.h + =item dMARK Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and @@ -191,12 +261,18 @@ C<dORIGMARK>. dMARK; +=for hackers +Found in file pp.h + =item dORIGMARK Saves the original stack mark for the XSUB. See C<ORIGMARK>. dORIGMARK; +=for hackers +Found in file pp.h + =item dSP Declares a local copy of perl's stack pointer for the XSUB, available via @@ -204,6 +280,9 @@ the C<SP> macro. See C<SP>. dSP; +=for hackers +Found in file pp.h + =item dXSARGS Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. This @@ -212,6 +291,9 @@ variable to indicate the number of items on the stack. dXSARGS; +=for hackers +Found in file XSUB.h + =item dXSI32 Sets up the C<ix> variable for an XSUB which has aliases. This is usually @@ -219,12 +301,18 @@ handled automatically by C<xsubpp>. dXSI32; +=for hackers +Found in file XSUB.h + =item ENTER Opening bracket on a callback. See C<LEAVE> and L<perlcall>. ENTER; +=for hackers +Found in file scope.h + =item eval_pv Tells Perl to C<eval> the given string and return an SV* result. @@ -233,6 +321,9 @@ NOTE: the perl_ form of this function is deprecated. SV* eval_pv(const char* p, I32 croak_on_error) +=for hackers +Found in file perl.c + =item eval_sv Tells Perl to C<eval> the string in the SV. @@ -241,6 +332,9 @@ NOTE: the perl_ form of this function is deprecated. I32 eval_sv(SV* sv, I32 flags) +=for hackers +Found in file perl.c + =item EXTEND Used to extend the argument stack for an XSUB's return values. Once @@ -249,6 +343,9 @@ onto the stack. void EXTEND(SP, int nitems) +=for hackers +Found in file pp.h + =item fbm_compile Analyses the string in order to make fast searches on it using fbm_instr() @@ -256,6 +353,9 @@ Analyses the string in order to make fast searches on it using fbm_instr() void fbm_compile(SV* sv, U32 flags) +=for hackers +Found in file util.c + =item fbm_instr Returns the location of the SV in the string delimited by C<str> and @@ -265,6 +365,9 @@ then. char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags) +=for hackers +Found in file util.c + =item FREETMPS Closing bracket for temporaries on a callback. See C<SAVETMPS> and @@ -272,6 +375,9 @@ L<perlcall>. FREETMPS; +=for hackers +Found in file scope.h + =item get_av Returns the AV of the specified Perl array. If C<create> is set and the @@ -282,6 +388,9 @@ NOTE: the perl_ form of this function is deprecated. AV* get_av(const char* name, I32 create) +=for hackers +Found in file perl.c + =item get_cv Returns the CV of the specified Perl subroutine. If C<create> is set and @@ -293,6 +402,9 @@ NOTE: the perl_ form of this function is deprecated. CV* get_cv(const char* name, I32 create) +=for hackers +Found in file perl.c + =item get_hv Returns the HV of the specified Perl hash. If C<create> is set and the @@ -303,6 +415,9 @@ NOTE: the perl_ form of this function is deprecated. HV* get_hv(const char* name, I32 create) +=for hackers +Found in file perl.c + =item get_sv Returns the SV of the specified Perl scalar. If C<create> is set and the @@ -313,6 +428,9 @@ NOTE: the perl_ form of this function is deprecated. SV* get_sv(const char* name, I32 create) +=for hackers +Found in file perl.c + =item GIMME A backward-compatible version of C<GIMME_V> which can only return @@ -321,6 +439,9 @@ Deprecated. Use C<GIMME_V> instead. U32 GIMME +=for hackers +Found in file op.h + =item GIMME_V The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>, @@ -329,12 +450,18 @@ respectively. U32 GIMME_V +=for hackers +Found in file op.h + =item GvSV Return the SV from the GV. SV* GvSV(GV* gv) +=for hackers +Found in file gv.h + =item gv_fetchmeth Returns the glob with the given C<name> and a defined subroutine or @@ -354,12 +481,18 @@ obtained from the GV with the C<GvCV> macro. GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level) +=for hackers +Found in file gv.c + =item gv_fetchmethod See L<gv_fetchmethod_autoload>. GV* gv_fetchmethod(HV* stash, const char* name) +=for hackers +Found in file gv.c + =item gv_fetchmethod_autoload Returns the glob which contains the subroutine to call to invoke the method @@ -386,6 +519,9 @@ C<call_sv> apply equally to these functions. GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload) +=for hackers +Found in file gv.c + =item gv_stashpv Returns a pointer to the stash for a specified package. C<name> should @@ -395,6 +531,9 @@ package does not exist then NULL is returned. HV* gv_stashpv(const char* name, I32 create) +=for hackers +Found in file gv.c + =item gv_stashsv Returns a pointer to the stash for a specified package, which must be a @@ -402,47 +541,74 @@ valid UTF-8 string. See C<gv_stashpv>. HV* gv_stashsv(SV* sv, I32 create) +=for hackers +Found in file gv.c + =item G_ARRAY Used to indicate array context. See C<GIMME_V>, C<GIMME> and L<perlcall>. +=for hackers +Found in file cop.h + =item G_DISCARD Indicates that arguments returned from a callback should be discarded. See L<perlcall>. +=for hackers +Found in file cop.h + =item G_EVAL Used to force a Perl C<eval> wrapper around a callback. See L<perlcall>. +=for hackers +Found in file cop.h + =item G_NOARGS Indicates that no arguments are being sent to a callback. See L<perlcall>. +=for hackers +Found in file cop.h + =item G_SCALAR Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and L<perlcall>. +=for hackers +Found in file cop.h + =item G_VOID Used to indicate void context. See C<GIMME_V> and L<perlcall>. +=for hackers +Found in file cop.h + =item HEf_SVKEY This flag, used in the length slot of hash entries and magic structures, specifies the structure contains a C<SV*> pointer where a C<char*> pointer is to be expected. (For information only--not to be used). +=for hackers +Found in file hv.h + =item HeHASH Returns the computed hash stored in the hash entry. U32 HeHASH(HE* he) +=for hackers +Found in file hv.h + =item HeKEY Returns the actual pointer stored in the key slot of the hash entry. The @@ -452,6 +618,9 @@ usually preferable for finding the value of a key. void* HeKEY(HE* he) +=for hackers +Found in file hv.h + =item HeKLEN If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry @@ -461,6 +630,9 @@ lengths. STRLEN HeKLEN(HE* he) +=for hackers +Found in file hv.h + =item HePV Returns the key slot of the hash entry as a C<char*> value, doing any @@ -475,6 +647,9 @@ described elsewhere in this document. char* HePV(HE* he, STRLEN len) +=for hackers +Found in file hv.h + =item HeSVKEY Returns the key as an C<SV*>, or C<Nullsv> if the hash entry does not @@ -482,6 +657,9 @@ contain an C<SV*> key. SV* HeSVKEY(HE* he) +=for hackers +Found in file hv.h + =item HeSVKEY_force Returns the key as an C<SV*>. Will create and return a temporary mortal @@ -489,6 +667,9 @@ C<SV*> if the hash entry contains only a C<char*> key. SV* HeSVKEY_force(HE* he) +=for hackers +Found in file hv.h + =item HeSVKEY_set Sets the key to a given C<SV*>, taking care to set the appropriate flags to @@ -497,24 +678,36 @@ C<SV*>. SV* HeSVKEY_set(HE* he, SV* sv) +=for hackers +Found in file hv.h + =item HeVAL Returns the value slot (type C<SV*>) stored in the hash entry. SV* HeVAL(HE* he) +=for hackers +Found in file hv.h + =item HvNAME Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>. char* HvNAME(HV* stash) +=for hackers +Found in file hv.h + =item hv_clear Clears a hash, making it empty. void hv_clear(HV* tb) +=for hackers +Found in file hv.c + =item hv_delete Deletes a key/value pair in the hash. The value SV is removed from the @@ -524,6 +717,9 @@ will be returned. SV* hv_delete(HV* tb, const char* key, U32 klen, I32 flags) +=for hackers +Found in file hv.c + =item hv_delete_ent Deletes a key/value pair in the hash. The value SV is removed from the @@ -533,6 +729,9 @@ precomputed hash value, or 0 to ask for it to be computed. SV* hv_delete_ent(HV* tb, SV* key, I32 flags, U32 hash) +=for hackers +Found in file hv.c + =item hv_exists Returns a boolean indicating whether the specified hash key exists. The @@ -540,6 +739,9 @@ C<klen> is the length of the key. bool hv_exists(HV* tb, const char* key, U32 klen) +=for hackers +Found in file hv.c + =item hv_exists_ent Returns a boolean indicating whether the specified hash key exists. C<hash> @@ -548,6 +750,9 @@ computed. bool hv_exists_ent(HV* tb, SV* key, U32 hash) +=for hackers +Found in file hv.c + =item hv_fetch Returns the SV which corresponds to the specified key in the hash. The @@ -560,6 +765,9 @@ information on how to use this function on tied hashes. SV** hv_fetch(HV* tb, const char* key, U32 klen, I32 lval) +=for hackers +Found in file hv.c + =item hv_fetch_ent Returns the hash entry which corresponds to the specified key in the hash. @@ -575,6 +783,9 @@ information on how to use this function on tied hashes. HE* hv_fetch_ent(HV* tb, SV* key, I32 lval, U32 hash) +=for hackers +Found in file hv.c + =item hv_iterinit Prepares a starting point to traverse a hash table. Returns the number of @@ -587,6 +798,9 @@ value, you can get it through the macro C<HvFILL(tb)>. I32 hv_iterinit(HV* tb) +=for hackers +Found in file hv.c + =item hv_iterkey Returns the key from the current position of the hash iterator. See @@ -594,6 +808,9 @@ C<hv_iterinit>. char* hv_iterkey(HE* entry, I32* retlen) +=for hackers +Found in file hv.c + =item hv_iterkeysv Returns the key as an C<SV*> from the current position of the hash @@ -602,12 +819,18 @@ see C<hv_iterinit>. SV* hv_iterkeysv(HE* entry) +=for hackers +Found in file hv.c + =item hv_iternext Returns entries from a hash iterator. See C<hv_iterinit>. HE* hv_iternext(HV* tb) +=for hackers +Found in file hv.c + =item hv_iternextsv Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one @@ -615,6 +838,9 @@ operation. SV* hv_iternextsv(HV* hv, char** key, I32* retlen) +=for hackers +Found in file hv.c + =item hv_iterval Returns the value from the current position of the hash iterator. See @@ -622,12 +848,18 @@ C<hv_iterkey>. SV* hv_iterval(HV* tb, HE* entry) +=for hackers +Found in file hv.c + =item hv_magic Adds magic to a hash. See C<sv_magic>. void hv_magic(HV* hv, GV* gv, int how) +=for hackers +Found in file hv.c + =item hv_store Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is @@ -644,6 +876,9 @@ information on how to use this function on tied hashes. SV** hv_store(HV* tb, const char* key, U32 klen, SV* val, U32 hash) +=for hackers +Found in file hv.c + =item hv_store_ent Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash> @@ -661,12 +896,18 @@ information on how to use this function on tied hashes. HE* hv_store_ent(HV* tb, SV* key, SV* val, U32 hash) +=for hackers +Found in file hv.c + =item hv_undef Undefines the hash. void hv_undef(HV* tb) +=for hackers +Found in file hv.c + =item isALNUM Returns a boolean indicating whether the C C<char> is an ASCII alphanumeric @@ -674,6 +915,9 @@ character (including underscore) or digit. bool isALNUM(char ch) +=for hackers +Found in file handy.h + =item isALPHA Returns a boolean indicating whether the C C<char> is an ASCII alphabetic @@ -681,6 +925,9 @@ character. bool isALPHA(char ch) +=for hackers +Found in file handy.h + =item isDIGIT Returns a boolean indicating whether the C C<char> is an ASCII @@ -688,6 +935,9 @@ digit. bool isDIGIT(char ch) +=for hackers +Found in file handy.h + =item isLOWER Returns a boolean indicating whether the C C<char> is a lowercase @@ -695,12 +945,18 @@ character. bool isLOWER(char ch) +=for hackers +Found in file handy.h + =item isSPACE Returns a boolean indicating whether the C C<char> is whitespace. bool isSPACE(char ch) +=for hackers +Found in file handy.h + =item isUPPER Returns a boolean indicating whether the C C<char> is an uppercase @@ -708,6 +964,9 @@ character. bool isUPPER(char ch) +=for hackers +Found in file handy.h + =item items Variable which is setup by C<xsubpp> to indicate the number of @@ -715,6 +974,9 @@ items on the stack. See L<perlxs/"Variable-length Parameter Lists">. I32 items +=for hackers +Found in file XSUB.h + =item ix Variable which is setup by C<xsubpp> to indicate which of an @@ -722,12 +984,18 @@ XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">. I32 ix +=for hackers +Found in file XSUB.h + =item LEAVE Closing bracket on a callback. See C<ENTER> and L<perlcall>. LEAVE; +=for hackers +Found in file scope.h + =item looks_like_number Test if an the content of an SV looks like a number (or is a @@ -735,58 +1003,88 @@ number). I32 looks_like_number(SV* sv) +=for hackers +Found in file sv.c + =item MARK Stack marker variable for the XSUB. See C<dMARK>. +=for hackers +Found in file pp.h + =item mg_clear Clear something magical that the SV represents. See C<sv_magic>. int mg_clear(SV* sv) +=for hackers +Found in file mg.c + =item mg_copy Copies the magic from one SV to another. See C<sv_magic>. int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen) +=for hackers +Found in file mg.c + =item mg_find Finds the magic pointer for type matching the SV. See C<sv_magic>. MAGIC* mg_find(SV* sv, int type) +=for hackers +Found in file mg.c + =item mg_free Free any magic storage used by the SV. See C<sv_magic>. int mg_free(SV* sv) +=for hackers +Found in file mg.c + =item mg_get Do magic after a value is retrieved from the SV. See C<sv_magic>. int mg_get(SV* sv) +=for hackers +Found in file mg.c + =item mg_length Report on the SV's length. See C<sv_magic>. U32 mg_length(SV* sv) +=for hackers +Found in file mg.c + =item mg_magical Turns on the magical status of an SV. See C<sv_magic>. void mg_magical(SV* sv) +=for hackers +Found in file mg.c + =item mg_set Do magic after a value is assigned to the SV. See C<sv_magic>. int mg_set(SV* sv) +=for hackers +Found in file mg.c + =item Move The XSUB-writer's interface to the C C<memmove> function. The C<src> is the @@ -795,18 +1093,27 @@ the type. Can do overlapping moves. See also C<Copy>. void Move(void* src, void* dest, int nitems, type) +=for hackers +Found in file handy.h + =item New The XSUB-writer's interface to the C C<malloc> function. void New(int id, void* ptr, int nitems, type) +=for hackers +Found in file handy.h + =item newAV Creates a new AV. The reference count is set to 1. AV* newAV() +=for hackers +Found in file av.c + =item Newc The XSUB-writer's interface to the C C<malloc> function, with @@ -814,6 +1121,9 @@ cast. void Newc(int id, void* ptr, int nitems, type, cast) +=for hackers +Found in file handy.h + =item newCONSTSUB Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is @@ -821,12 +1131,18 @@ eligible for inlining at compile-time. void newCONSTSUB(HV* stash, char* name, SV* sv) +=for hackers +Found in file op.c + =item newHV Creates a new HV. The reference count is set to 1. HV* newHV() +=for hackers +Found in file hv.c + =item newRV_inc Creates an RV wrapper for an SV. The reference count for the original SV is @@ -834,6 +1150,9 @@ incremented. SV* newRV_inc(SV* sv) +=for hackers +Found in file sv.h + =item newRV_noinc Creates an RV wrapper for an SV. The reference count for the original @@ -841,6 +1160,9 @@ SV is B<not> incremented. SV* newRV_noinc(SV *sv) +=for hackers +Found in file sv.c + =item NEWSV Creates a new SV. A non-zero C<len> parameter indicates the number of @@ -851,6 +1173,9 @@ C<id> is an integer id between 0 and 1299 (used to identify leaks). SV* NEWSV(int id, STRLEN len) +=for hackers +Found in file handy.h + =item newSViv Creates a new SV and copies an integer into it. The reference count for the @@ -858,6 +1183,9 @@ SV is set to 1. SV* newSViv(IV i) +=for hackers +Found in file sv.c + =item newSVnv Creates a new SV and copies a floating point value into it. @@ -865,6 +1193,9 @@ The reference count for the SV is set to 1. SV* newSVnv(NV n) +=for hackers +Found in file sv.c + =item newSVpv Creates a new SV and copies a string into it. The reference count for the @@ -873,6 +1204,9 @@ strlen(). For efficiency, consider using C<newSVpvn> instead. SV* newSVpv(const char* s, STRLEN len) +=for hackers +Found in file sv.c + =item newSVpvf Creates a new SV an initialize it with the string formatted like @@ -880,6 +1214,9 @@ C<sprintf>. SV* newSVpvf(const char* pat, ...) +=for hackers +Found in file sv.c + =item newSVpvn Creates a new SV and copies a string into it. The reference count for the @@ -889,6 +1226,9 @@ C<len> bytes long. SV* newSVpvn(const char* s, STRLEN len) +=for hackers +Found in file sv.c + =item newSVrv Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then @@ -898,12 +1238,18 @@ reference count is 1. SV* newSVrv(SV* rv, const char* classname) +=for hackers +Found in file sv.c + =item newSVsv Creates a new SV which is an exact duplicate of the original SV. SV* newSVsv(SV* old) +=for hackers +Found in file sv.c + =item newSVuv Creates a new SV and copies an unsigned integer into it. @@ -911,15 +1257,24 @@ The reference count for the SV is set to 1. SV* newSVuv(UV u) +=for hackers +Found in file sv.c + =item newXS Used by C<xsubpp> to hook up XSUBs as Perl subs. +=for hackers +Found in file op.c + =item newXSproto Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to the subs. +=for hackers +Found in file XSUB.h + =item Newz The XSUB-writer's interface to the C C<malloc> function. The allocated @@ -927,66 +1282,105 @@ memory is zeroed with C<memzero>. void Newz(int id, void* ptr, int nitems, type) +=for hackers +Found in file handy.h + =item Nullav Null AV pointer. +=for hackers +Found in file av.h + =item Nullch Null character pointer. +=for hackers +Found in file handy.h + =item Nullcv Null CV pointer. +=for hackers +Found in file cv.h + =item Nullhv Null HV pointer. +=for hackers +Found in file hv.h + =item Nullsv Null SV pointer. +=for hackers +Found in file handy.h + =item ORIGMARK The original stack mark for the XSUB. See C<dORIGMARK>. +=for hackers +Found in file pp.h + =item perl_alloc Allocates a new Perl interpreter. See L<perlembed>. PerlInterpreter* perl_alloc() +=for hackers +Found in file perl.c + =item perl_construct Initializes a new Perl interpreter. See L<perlembed>. void perl_construct(PerlInterpreter* interp) +=for hackers +Found in file perl.c + =item perl_destruct Shuts down a Perl interpreter. See L<perlembed>. void perl_destruct(PerlInterpreter* interp) +=for hackers +Found in file perl.c + =item perl_free Releases a Perl interpreter. See L<perlembed>. void perl_free(PerlInterpreter* interp) +=for hackers +Found in file perl.c + =item perl_parse Tells a Perl interpreter to parse a Perl script. See L<perlembed>. int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env) +=for hackers +Found in file perl.c + =item perl_run Tells a Perl interpreter to run. See L<perlembed>. int perl_run(PerlInterpreter* interp) +=for hackers +Found in file perl.c + =item PL_DBsingle When Perl is run in debugging mode, with the B<-d> switch, this SV is a @@ -997,6 +1391,9 @@ C<PL_DBsub>. SV * PL_DBsingle +=for hackers +Found in file intrpvar.h + =item PL_DBsub When Perl is run in debugging mode, with the B<-d> switch, this GV contains @@ -1006,6 +1403,9 @@ C<PL_DBsingle>. GV * PL_DBsub +=for hackers +Found in file intrpvar.h + =item PL_DBtrace Trace variable used when Perl is run in debugging mode, with the B<-d> @@ -1014,12 +1414,18 @@ variable. See C<PL_DBsingle>. SV * PL_DBtrace +=for hackers +Found in file intrpvar.h + =item PL_dowarn The C variable which corresponds to Perl's $^W warning variable. bool PL_dowarn +=for hackers +Found in file intrpvar.h + =item PL_modglobal C<PL_modglobal> is a general purpose, interpreter global HV for use by @@ -1030,6 +1436,9 @@ prefixed by the package name of the extension that owns the data. HV* PL_modglobal +=for hackers +Found in file intrpvar.h + =item PL_na A convenience variable which is typically used with C<SvPV> when one @@ -1039,6 +1448,9 @@ C<SvPV_nolen> macro. STRLEN PL_na +=for hackers +Found in file thrdvar.h + =item PL_sv_no This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as @@ -1046,12 +1458,18 @@ C<&PL_sv_no>. SV PL_sv_no +=for hackers +Found in file intrpvar.h + =item PL_sv_undef This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>. SV PL_sv_undef +=for hackers +Found in file intrpvar.h + =item PL_sv_yes This is the C<true> SV. See C<PL_sv_no>. Always refer to this as @@ -1059,36 +1477,54 @@ C<&PL_sv_yes>. SV PL_sv_yes +=for hackers +Found in file intrpvar.h + =item POPi Pops an integer off the stack. IV POPi +=for hackers +Found in file pp.h + =item POPl Pops a long off the stack. long POPl +=for hackers +Found in file pp.h + =item POPn Pops a double off the stack. NV POPn +=for hackers +Found in file pp.h + =item POPp Pops a string off the stack. char* POPp +=for hackers +Found in file pp.h + =item POPs Pops an SV off the stack. SV* POPs +=for hackers +Found in file pp.h + =item PUSHi Push an integer onto the stack. The stack must have room for this element. @@ -1096,6 +1532,9 @@ Handles 'set' magic. See C<XPUSHi>. void PUSHi(IV iv) +=for hackers +Found in file pp.h + =item PUSHMARK Opening bracket for arguments on a callback. See C<PUTBACK> and @@ -1103,6 +1542,9 @@ L<perlcall>. PUSHMARK; +=for hackers +Found in file pp.h + =item PUSHn Push a double onto the stack. The stack must have room for this element. @@ -1110,6 +1552,9 @@ Handles 'set' magic. See C<XPUSHn>. void PUSHn(NV nv) +=for hackers +Found in file pp.h + =item PUSHp Push a string onto the stack. The stack must have room for this element. @@ -1118,6 +1563,9 @@ C<XPUSHp>. void PUSHp(char* str, STRLEN len) +=for hackers +Found in file pp.h + =item PUSHs Push an SV onto the stack. The stack must have room for this element. @@ -1125,6 +1573,9 @@ Does not handle 'set' magic. See C<XPUSHs>. void PUSHs(SV* sv) +=for hackers +Found in file pp.h + =item PUSHu Push an unsigned integer onto the stack. The stack must have room for this @@ -1132,6 +1583,9 @@ element. See C<XPUSHu>. void PUSHu(UV uv) +=for hackers +Found in file pp.h + =item PUTBACK Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>. @@ -1139,12 +1593,18 @@ See C<PUSHMARK> and L<perlcall> for other uses. PUTBACK; +=for hackers +Found in file pp.h + =item Renew The XSUB-writer's interface to the C C<realloc> function. void Renew(void* ptr, int nitems, type) +=for hackers +Found in file handy.h + =item Renewc The XSUB-writer's interface to the C C<realloc> function, with @@ -1152,6 +1612,9 @@ cast. void Renewc(void* ptr, int nitems, type, cast) +=for hackers +Found in file handy.h + =item require_pv Tells Perl to C<require> a module. @@ -1160,6 +1623,9 @@ NOTE: the perl_ form of this function is deprecated. void require_pv(const char* pv) +=for hackers +Found in file perl.c + =item RETVAL Variable which is setup by C<xsubpp> to hold the return value for an @@ -1168,18 +1634,27 @@ L<perlxs/"The RETVAL Variable">. (whatever) RETVAL +=for hackers +Found in file XSUB.h + =item Safefree The XSUB-writer's interface to the C C<free> function. void Safefree(void* src, void* dest, int nitems, type) +=for hackers +Found in file handy.h + =item savepv Copy a string to a safe spot. This does not use an SV. char* savepv(const char* sv) +=for hackers +Found in file util.c + =item savepvn Copy a string to a safe spot. The C<len> indicates number of bytes to @@ -1187,6 +1662,9 @@ copy. This does not use an SV. char* savepvn(const char* sv, I32 len) +=for hackers +Found in file util.c + =item SAVETMPS Opening bracket for temporaries on a callback. See C<FREETMPS> and @@ -1194,29 +1672,44 @@ L<perlcall>. SAVETMPS; +=for hackers +Found in file scope.h + =item SP Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and C<SPAGAIN>. +=for hackers +Found in file pp.h + =item SPAGAIN Refetch the stack pointer. Used after a callback. See L<perlcall>. SPAGAIN; +=for hackers +Found in file pp.h + =item ST Used to access elements on the XSUB's stack. SV* ST(int ix) +=for hackers +Found in file XSUB.h + =item strEQ Test two strings to see if they are equal. Returns true or false. bool strEQ(char* s1, char* s2) +=for hackers +Found in file handy.h + =item strGE Test two strings to see if the first, C<s1>, is greater than or equal to @@ -1224,6 +1717,9 @@ the second, C<s2>. Returns true or false. bool strGE(char* s1, char* s2) +=for hackers +Found in file handy.h + =item strGT Test two strings to see if the first, C<s1>, is greater than the second, @@ -1231,6 +1727,9 @@ C<s2>. Returns true or false. bool strGT(char* s1, char* s2) +=for hackers +Found in file handy.h + =item strLE Test two strings to see if the first, C<s1>, is less than or equal to the @@ -1238,6 +1737,9 @@ second, C<s2>. Returns true or false. bool strLE(char* s1, char* s2) +=for hackers +Found in file handy.h + =item strLT Test two strings to see if the first, C<s1>, is less than the second, @@ -1245,6 +1747,9 @@ C<s2>. Returns true or false. bool strLT(char* s1, char* s2) +=for hackers +Found in file handy.h + =item strNE Test two strings to see if they are different. Returns true or @@ -1252,6 +1757,9 @@ false. bool strNE(char* s1, char* s2) +=for hackers +Found in file handy.h + =item strnEQ Test two strings to see if they are equal. The C<len> parameter indicates @@ -1260,6 +1768,9 @@ C<strncmp>). bool strnEQ(char* s1, char* s2, STRLEN len) +=for hackers +Found in file handy.h + =item strnNE Test two strings to see if they are different. The C<len> parameter @@ -1268,24 +1779,36 @@ wrapper for C<strncmp>). bool strnNE(char* s1, char* s2, STRLEN len) +=for hackers +Found in file handy.h + =item StructCopy This is an architecture-independent macro to copy one structure to another. void StructCopy(type src, type dest, type) +=for hackers +Found in file handy.h + =item SvCUR Returns the length of the string which is in the SV. See C<SvLEN>. STRLEN SvCUR(SV* sv) +=for hackers +Found in file sv.h + =item SvCUR_set Set the length of the string which is in the SV. See C<SvCUR>. void SvCUR_set(SV* sv, STRLEN len) +=for hackers +Found in file sv.h + =item SvEND Returns a pointer to the last character in the string which is in the SV. @@ -1293,6 +1816,9 @@ See C<SvCUR>. Access the character as *(SvEND(sv)). char* SvEND(SV* sv) +=for hackers +Found in file sv.h + =item SvGETMAGIC Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its @@ -1300,6 +1826,9 @@ argument more than once. void SvGETMAGIC(SV* sv) +=for hackers +Found in file sv.h + =item SvGROW Expands the character buffer in the SV so that it has room for the @@ -1309,12 +1838,18 @@ Returns a pointer to the character buffer. void SvGROW(SV* sv, STRLEN len) +=for hackers +Found in file sv.h + =item SvIOK Returns a boolean indicating whether the SV contains an integer. bool SvIOK(SV* sv) +=for hackers +Found in file sv.h + =item SvIOKp Returns a boolean indicating whether the SV contains an integer. Checks @@ -1322,30 +1857,45 @@ the B<private> setting. Use C<SvIOK>. bool SvIOKp(SV* sv) +=for hackers +Found in file sv.h + =item SvIOK_off Unsets the IV status of an SV. void SvIOK_off(SV* sv) +=for hackers +Found in file sv.h + =item SvIOK_on Tells an SV that it is an integer. void SvIOK_on(SV* sv) +=for hackers +Found in file sv.h + =item SvIOK_only Tells an SV that it is an integer and disables all other OK bits. void SvIOK_only(SV* sv) +=for hackers +Found in file sv.h + =item SvIV Coerces the given SV to an integer and returns it. IV SvIV(SV* sv) +=for hackers +Found in file sv.h + =item SvIVX Returns the integer which is stored in the SV, assuming SvIOK is @@ -1353,12 +1903,28 @@ true. IV SvIVX(SV* sv) +=for hackers +Found in file sv.h + =item SvLEN Returns the size of the string buffer in the SV. See C<SvCUR>. STRLEN SvLEN(SV* sv) +=for hackers +Found in file sv.h + +=item SvLOCK + +Aquires an internal mutex for a SV. Used to make sure multiple threads +don't stomp on the guts of an SV at the same time + + void SvLOCK(SV* sv) + +=for hackers +Found in file sv.h + =item SvNIOK Returns a boolean indicating whether the SV contains a number, integer or @@ -1366,6 +1932,9 @@ double. bool SvNIOK(SV* sv) +=for hackers +Found in file sv.h + =item SvNIOKp Returns a boolean indicating whether the SV contains a number, integer or @@ -1373,18 +1942,27 @@ double. Checks the B<private> setting. Use C<SvNIOK>. bool SvNIOKp(SV* sv) +=for hackers +Found in file sv.h + =item SvNIOK_off Unsets the NV/IV status of an SV. void SvNIOK_off(SV* sv) +=for hackers +Found in file sv.h + =item SvNOK Returns a boolean indicating whether the SV contains a double. bool SvNOK(SV* sv) +=for hackers +Found in file sv.h + =item SvNOKp Returns a boolean indicating whether the SV contains a double. Checks the @@ -1392,30 +1970,45 @@ B<private> setting. Use C<SvNOK>. bool SvNOKp(SV* sv) +=for hackers +Found in file sv.h + =item SvNOK_off Unsets the NV status of an SV. void SvNOK_off(SV* sv) +=for hackers +Found in file sv.h + =item SvNOK_on Tells an SV that it is a double. void SvNOK_on(SV* sv) +=for hackers +Found in file sv.h + =item SvNOK_only Tells an SV that it is a double and disables all other OK bits. void SvNOK_only(SV* sv) +=for hackers +Found in file sv.h + =item SvNV Coerce the given SV to a double and return it. NV SvNV(SV* sv) +=for hackers +Found in file sv.h + =item SvNVX Returns the double which is stored in the SV, assuming SvNOK is @@ -1423,12 +2016,18 @@ true. NV SvNVX(SV* sv) +=for hackers +Found in file sv.h + =item SvOK Returns a boolean indicating whether the value is an SV. bool SvOK(SV* sv) +=for hackers +Found in file sv.h + =item SvOOK Returns a boolean indicating whether the SvIVX is a valid offset value for @@ -1438,6 +2037,9 @@ allocated string buffer is really (SvPVX - SvIVX). bool SvOOK(SV* sv) +=for hackers +Found in file sv.h + =item SvPOK Returns a boolean indicating whether the SV contains a character @@ -1445,6 +2047,9 @@ string. bool SvPOK(SV* sv) +=for hackers +Found in file sv.h + =item SvPOKp Returns a boolean indicating whether the SV contains a character string. @@ -1452,24 +2057,36 @@ Checks the B<private> setting. Use C<SvPOK>. bool SvPOKp(SV* sv) +=for hackers +Found in file sv.h + =item SvPOK_off Unsets the PV status of an SV. void SvPOK_off(SV* sv) +=for hackers +Found in file sv.h + =item SvPOK_on Tells an SV that it is a string. void SvPOK_on(SV* sv) +=for hackers +Found in file sv.h + =item SvPOK_only Tells an SV that it is a string and disables all other OK bits. void SvPOK_only(SV* sv) +=for hackers +Found in file sv.h + =item SvPV Returns a pointer to the string in the SV, or a stringified form of the SV @@ -1477,6 +2094,9 @@ if the SV does not contain a string. Handles 'get' magic. char* SvPV(SV* sv, STRLEN len) +=for hackers +Found in file sv.h + =item SvPVX Returns a pointer to the string in the SV. The SV must contain a @@ -1484,6 +2104,9 @@ string. char* SvPVX(SV* sv) +=for hackers +Found in file sv.h + =item SvPV_force Like <SvPV> but will force the SV into becoming a string (SvPOK). You want @@ -1491,6 +2114,9 @@ force if you are going to update the SvPVX directly. char* SvPV_force(SV* sv, STRLEN len) +=for hackers +Found in file sv.h + =item SvPV_nolen Returns a pointer to the string in the SV, or a stringified form of the SV @@ -1498,48 +2124,72 @@ if the SV does not contain a string. Handles 'get' magic. char* SvPV_nolen(SV* sv) +=for hackers +Found in file sv.h + =item SvREFCNT Returns the value of the object's reference count. U32 SvREFCNT(SV* sv) +=for hackers +Found in file sv.h + =item SvREFCNT_dec Decrements the reference count of the given SV. void SvREFCNT_dec(SV* sv) +=for hackers +Found in file sv.h + =item SvREFCNT_inc Increments the reference count of the given SV. SV* SvREFCNT_inc(SV* sv) +=for hackers +Found in file sv.h + =item SvROK Tests if the SV is an RV. bool SvROK(SV* sv) +=for hackers +Found in file sv.h + =item SvROK_off Unsets the RV status of an SV. void SvROK_off(SV* sv) +=for hackers +Found in file sv.h + =item SvROK_on Tells an SV that it is an RV. void SvROK_on(SV* sv) +=for hackers +Found in file sv.h + =item SvRV Dereferences an RV to return the SV. SV* SvRV(SV* sv) +=for hackers +Found in file sv.h + =item SvSETMAGIC Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its @@ -1547,6 +2197,9 @@ argument more than once. void SvSETMAGIC(SV* sv) +=for hackers +Found in file sv.h + =item SvSetSV Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments @@ -1554,6 +2207,9 @@ more than once. void SvSetSV(SV* dsb, SV* ssv) +=for hackers +Found in file sv.h + =item SvSetSV_nosteal Calls a non-destructive version of C<sv_setsv> if dsv is not the same as @@ -1561,18 +2217,27 @@ ssv. May evaluate arguments more than once. void SvSetSV_nosteal(SV* dsv, SV* ssv) +=for hackers +Found in file sv.h + =item SvSTASH Returns the stash of the SV. HV* SvSTASH(SV* sv) +=for hackers +Found in file sv.h + =item SvTAINT Taints an SV if tainting is enabled void SvTAINT(SV* sv) +=for hackers +Found in file sv.h + =item SvTAINTED Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if @@ -1580,6 +2245,9 @@ not. bool SvTAINTED(SV* sv) +=for hackers +Found in file sv.h + =item SvTAINTED_off Untaints an SV. Be I<very> careful with this routine, as it short-circuits @@ -1591,12 +2259,18 @@ untainting variables. void SvTAINTED_off(SV* sv) +=for hackers +Found in file sv.h + =item SvTAINTED_on Marks an SV as tainted. void SvTAINTED_on(SV* sv) +=for hackers +Found in file sv.h + =item SvTRUE Returns a boolean indicating whether Perl would evaluate the SV as true or @@ -1604,45 +2278,84 @@ false, defined or undefined. Does not handle 'get' magic. bool SvTRUE(SV* sv) +=for hackers +Found in file sv.h + =item svtype An enum of flags for Perl types. These are found in the file B<sv.h> in the C<svtype> enum. Test these flags with the C<SvTYPE> macro. +=for hackers +Found in file sv.h + =item SvTYPE Returns the type of the SV. See C<svtype>. svtype SvTYPE(SV* sv) +=for hackers +Found in file sv.h + =item SVt_IV Integer type flag for scalars. See C<svtype>. +=for hackers +Found in file sv.h + =item SVt_NV Double type flag for scalars. See C<svtype>. +=for hackers +Found in file sv.h + =item SVt_PV Pointer type flag for scalars. See C<svtype>. +=for hackers +Found in file sv.h + =item SVt_PVAV Type flag for arrays. See C<svtype>. +=for hackers +Found in file sv.h + =item SVt_PVCV Type flag for code refs. See C<svtype>. +=for hackers +Found in file sv.h + =item SVt_PVHV Type flag for hashes. See C<svtype>. +=for hackers +Found in file sv.h + =item SVt_PVMG Type flag for blessed scalars. See C<svtype>. +=for hackers +Found in file sv.h + +=item SvUNLOCK + +Release the internal mutex for an SV. + + void SvUNLOCK(SV* sv) + +=for hackers +Found in file sv.h + =item SvUPGRADE Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to @@ -1650,12 +2363,18 @@ perform the upgrade if necessary. See C<svtype>. void SvUPGRADE(SV* sv, svtype type) +=for hackers +Found in file sv.h + =item SvUV Coerces the given SV to an unsigned integer and returns it. UV SvUV(SV* sv) +=for hackers +Found in file sv.h + =item SvUVX Returns the unsigned integer which is stored in the SV, assuming SvIOK is @@ -1663,6 +2382,9 @@ true. UV SvUVX(SV* sv) +=for hackers +Found in file sv.h + =item sv_2mortal Marks an SV as mortal. The SV will be destroyed when the current context @@ -1670,6 +2392,9 @@ ends. SV* sv_2mortal(SV* sv) +=for hackers +Found in file sv.c + =item sv_bless Blesses an SV into a specified package. The SV must be an RV. The package @@ -1678,6 +2403,9 @@ of the SV is unaffected. SV* sv_bless(SV* sv, HV* stash) +=for hackers +Found in file sv.c + =item sv_catpv Concatenates the string onto the end of the string which is in the SV. @@ -1685,6 +2413,9 @@ Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>. void sv_catpv(SV* sv, const char* ptr) +=for hackers +Found in file sv.c + =item sv_catpvf Processes its arguments like C<sprintf> and appends the formatted output @@ -1693,12 +2424,18 @@ typically be called after calling this function to handle 'set' magic. void sv_catpvf(SV* sv, const char* pat, ...) +=for hackers +Found in file sv.c + =item sv_catpvf_mg Like C<sv_catpvf>, but also handles 'set' magic. void sv_catpvf_mg(SV *sv, const char* pat, ...) +=for hackers +Found in file sv.c + =item sv_catpvn Concatenates the string onto the end of the string which is in the SV. The @@ -1707,18 +2444,27 @@ C<len> indicates number of bytes to copy. Handles 'get' magic, but not void sv_catpvn(SV* sv, const char* ptr, STRLEN len) +=for hackers +Found in file sv.c + =item sv_catpvn_mg Like C<sv_catpvn>, but also handles 'set' magic. void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len) +=for hackers +Found in file sv.c + =item sv_catpv_mg Like C<sv_catpv>, but also handles 'set' magic. void sv_catpv_mg(SV *sv, const char *ptr) +=for hackers +Found in file sv.c + =item sv_catsv Concatenates the string from SV C<ssv> onto the end of the string in SV @@ -1726,12 +2472,18 @@ C<dsv>. Handles 'get' magic, but not 'set' magic. See C<sv_catsv_mg>. void sv_catsv(SV* dsv, SV* ssv) +=for hackers +Found in file sv.c + =item sv_catsv_mg Like C<sv_catsv>, but also handles 'set' magic. void sv_catsv_mg(SV *dstr, SV *sstr) +=for hackers +Found in file sv.c + =item sv_chop Efficient removal of characters from the beginning of the string buffer. @@ -1741,6 +2493,9 @@ string. void sv_chop(SV* sv, char* ptr) +=for hackers +Found in file sv.c + =item sv_cmp Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the @@ -1749,12 +2504,18 @@ C<sv2>. I32 sv_cmp(SV* sv1, SV* sv2) +=for hackers +Found in file sv.c + =item sv_dec Auto-decrement of the value in the SV. void sv_dec(SV* sv) +=for hackers +Found in file sv.c + =item sv_derived_from Returns a boolean indicating whether the SV is derived from the specified @@ -1763,6 +2524,9 @@ for class names as well as for objects. bool sv_derived_from(SV* sv, const char* name) +=for hackers +Found in file universal.c + =item sv_eq Returns a boolean indicating whether the strings in the two SVs are @@ -1770,6 +2534,9 @@ identical. I32 sv_eq(SV* sv1, SV* sv2) +=for hackers +Found in file sv.c + =item sv_grow Expands the character buffer in the SV. This will use C<sv_unref> and will @@ -1778,12 +2545,18 @@ Use C<SvGROW>. char* sv_grow(SV* sv, STRLEN newlen) +=for hackers +Found in file sv.c + =item sv_inc Auto-increment of the value in the SV. void sv_inc(SV* sv) +=for hackers +Found in file sv.c + =item sv_insert Inserts a string at the specified offset/length within the SV. Similar to @@ -1791,6 +2564,9 @@ the Perl substr() function. void sv_insert(SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen) +=for hackers +Found in file sv.c + =item sv_isa Returns a boolean indicating whether the SV is blessed into the specified @@ -1799,6 +2575,9 @@ an inheritance relationship. int sv_isa(SV* sv, const char* name) +=for hackers +Found in file sv.c + =item sv_isobject Returns a boolean indicating whether the SV is an RV pointing to a blessed @@ -1807,18 +2586,27 @@ will return false. int sv_isobject(SV* sv) +=for hackers +Found in file sv.c + =item sv_len Returns the length of the string in the SV. See also C<SvCUR>. STRLEN sv_len(SV* sv) +=for hackers +Found in file sv.c + =item sv_magic Adds magic to an SV. void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen) +=for hackers +Found in file sv.c + =item sv_mortalcopy Creates a new SV which is a copy of the original SV. The new SV is marked @@ -1826,12 +2614,18 @@ as mortal. SV* sv_mortalcopy(SV* oldsv) +=for hackers +Found in file sv.c + =item sv_newmortal Creates a new SV which is mortal. The reference count of the SV is set to 1. SV* sv_newmortal() +=for hackers +Found in file sv.c + =item sv_setiv Copies an integer into the given SV. Does not handle 'set' magic. See @@ -1839,12 +2633,18 @@ C<sv_setiv_mg>. void sv_setiv(SV* sv, IV num) +=for hackers +Found in file sv.c + =item sv_setiv_mg Like C<sv_setiv>, but also handles 'set' magic. void sv_setiv_mg(SV *sv, IV i) +=for hackers +Found in file sv.c + =item sv_setnv Copies a double into the given SV. Does not handle 'set' magic. See @@ -1852,12 +2652,18 @@ C<sv_setnv_mg>. void sv_setnv(SV* sv, NV num) +=for hackers +Found in file sv.c + =item sv_setnv_mg Like C<sv_setnv>, but also handles 'set' magic. void sv_setnv_mg(SV *sv, NV num) +=for hackers +Found in file sv.c + =item sv_setpv Copies a string into an SV. The string must be null-terminated. Does not @@ -1865,6 +2671,9 @@ handle 'set' magic. See C<sv_setpv_mg>. void sv_setpv(SV* sv, const char* ptr) +=for hackers +Found in file sv.c + =item sv_setpvf Processes its arguments like C<sprintf> and sets an SV to the formatted @@ -1872,12 +2681,18 @@ output. Does not handle 'set' magic. See C<sv_setpvf_mg>. void sv_setpvf(SV* sv, const char* pat, ...) +=for hackers +Found in file sv.c + =item sv_setpvf_mg Like C<sv_setpvf>, but also handles 'set' magic. void sv_setpvf_mg(SV *sv, const char* pat, ...) +=for hackers +Found in file sv.c + =item sv_setpviv Copies an integer into the given SV, also updating its string value. @@ -1885,12 +2700,18 @@ Does not handle 'set' magic. See C<sv_setpviv_mg>. void sv_setpviv(SV* sv, IV num) +=for hackers +Found in file sv.c + =item sv_setpviv_mg Like C<sv_setpviv>, but also handles 'set' magic. void sv_setpviv_mg(SV *sv, IV iv) +=for hackers +Found in file sv.c + =item sv_setpvn Copies a string into an SV. The C<len> parameter indicates the number of @@ -1898,18 +2719,27 @@ bytes to be copied. Does not handle 'set' magic. See C<sv_setpvn_mg>. void sv_setpvn(SV* sv, const char* ptr, STRLEN len) +=for hackers +Found in file sv.c + =item sv_setpvn_mg Like C<sv_setpvn>, but also handles 'set' magic. void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len) +=for hackers +Found in file sv.c + =item sv_setpv_mg Like C<sv_setpv>, but also handles 'set' magic. void sv_setpv_mg(SV *sv, const char *ptr) +=for hackers +Found in file sv.c + =item sv_setref_iv Copies an integer into a new SV, optionally blessing the SV. The C<rv> @@ -1920,6 +2750,9 @@ will be returned and will have a reference count of 1. SV* sv_setref_iv(SV* rv, const char* classname, IV iv) +=for hackers +Found in file sv.c + =item sv_setref_nv Copies a double into a new SV, optionally blessing the SV. The C<rv> @@ -1930,6 +2763,9 @@ will be returned and will have a reference count of 1. SV* sv_setref_nv(SV* rv, const char* classname, NV nv) +=for hackers +Found in file sv.c + =item sv_setref_pv Copies a pointer into a new SV, optionally blessing the SV. The C<rv> @@ -1946,6 +2782,9 @@ Note that C<sv_setref_pvn> copies the string while this copies the pointer. SV* sv_setref_pv(SV* rv, const char* classname, void* pv) +=for hackers +Found in file sv.c + =item sv_setref_pvn Copies a string into a new SV, optionally blessing the SV. The length of the @@ -1959,6 +2798,9 @@ Note that C<sv_setref_pv> copies the pointer while this copies the string. SV* sv_setref_pvn(SV* rv, const char* classname, char* pv, STRLEN n) +=for hackers +Found in file sv.c + =item sv_setsv Copies the contents of the source SV C<ssv> into the destination SV C<dsv>. @@ -1968,12 +2810,18 @@ C<sv_setsv_mg>. void sv_setsv(SV* dsv, SV* ssv) +=for hackers +Found in file sv.c + =item sv_setsv_mg Like C<sv_setsv>, but also handles 'set' magic. void sv_setsv_mg(SV *dstr, SV *sstr) +=for hackers +Found in file sv.c + =item sv_setuv Copies an unsigned integer into the given SV. Does not handle 'set' magic. @@ -1981,12 +2829,18 @@ See C<sv_setuv_mg>. void sv_setuv(SV* sv, UV num) +=for hackers +Found in file sv.c + =item sv_setuv_mg Like C<sv_setuv>, but also handles 'set' magic. void sv_setuv_mg(SV *sv, UV u) +=for hackers +Found in file sv.c + =item sv_unref Unsets the RV status of the SV, and decrements the reference count of @@ -1995,6 +2849,9 @@ as a reversal of C<newSVrv>. See C<SvROK_off>. void sv_unref(SV* sv) +=for hackers +Found in file sv.c + =item sv_upgrade Upgrade an SV to a more complex form. Use C<SvUPGRADE>. See @@ -2002,6 +2859,9 @@ C<svtype>. bool sv_upgrade(SV* sv, U32 mt) +=for hackers +Found in file sv.c + =item sv_usepvn Tells an SV to use C<ptr> to find its string value. Normally the string is @@ -2014,12 +2874,18 @@ See C<sv_usepvn_mg>. void sv_usepvn(SV* sv, char* ptr, STRLEN len) +=for hackers +Found in file sv.c + =item sv_usepvn_mg Like C<sv_usepvn>, but also handles 'set' magic. void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len) +=for hackers +Found in file sv.c + =item sv_vcatpvfn Processes its arguments like C<vsprintf> and appends the formatted output @@ -2030,6 +2896,9 @@ locales). void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted) +=for hackers +Found in file sv.c + =item sv_vsetpvfn Works like C<vcatpvfn> but copies the text into the SV instead of @@ -2037,6 +2906,9 @@ appending it. void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted) +=for hackers +Found in file sv.c + =item THIS Variable which is setup by C<xsubpp> to designate the object in a C++ @@ -2045,18 +2917,37 @@ L<perlxs/"Using XS With C++">. (whatever) THIS +=for hackers +Found in file XSUB.h + =item toLOWER Converts the specified character to lowercase. char toLOWER(char ch) +=for hackers +Found in file handy.h + =item toUPPER Converts the specified character to uppercase. char toUPPER(char ch) +=for hackers +Found in file handy.h + +=item utf8_to_bytes + +Converts a string C<s> of length C<len> from UTF8 into ASCII encoding. +Unlike C<bytes_to_utf8>, this over-writes the original string. + + U8 * utf8_to_bytes(U8 *s, STRLEN len) + +=for hackers +Found in file utf8.c + =item warn This is the XSUB-writer's interface to Perl's C<warn> function. Use this @@ -2065,6 +2956,9 @@ C<croak>. void warn(const char* pat, ...) +=for hackers +Found in file util.c + =item XPUSHi Push an integer onto the stack, extending the stack if necessary. Handles @@ -2072,6 +2966,9 @@ Push an integer onto the stack, extending the stack if necessary. Handles void XPUSHi(IV iv) +=for hackers +Found in file pp.h + =item XPUSHn Push a double onto the stack, extending the stack if necessary. Handles @@ -2079,6 +2976,9 @@ Push a double onto the stack, extending the stack if necessary. Handles void XPUSHn(NV nv) +=for hackers +Found in file pp.h + =item XPUSHp Push a string onto the stack, extending the stack if necessary. The C<len> @@ -2087,6 +2987,9 @@ C<PUSHp>. void XPUSHp(char* str, STRLEN len) +=for hackers +Found in file pp.h + =item XPUSHs Push an SV onto the stack, extending the stack if necessary. Does not @@ -2094,6 +2997,9 @@ handle 'set' magic. See C<PUSHs>. void XPUSHs(SV* sv) +=for hackers +Found in file pp.h + =item XPUSHu Push an unsigned integer onto the stack, extending the stack if necessary. @@ -2101,11 +3007,17 @@ See C<PUSHu>. void XPUSHu(UV uv) +=for hackers +Found in file pp.h + =item XS Macro to declare an XSUB and its C parameter list. This is handled by C<xsubpp>. +=for hackers +Found in file XSUB.h + =item XSRETURN Return from XSUB, indicating number of items on the stack. This is usually @@ -2113,48 +3025,72 @@ handled by C<xsubpp>. void XSRETURN(int nitems) +=for hackers +Found in file XSUB.h + =item XSRETURN_EMPTY Return an empty list from an XSUB immediately. XSRETURN_EMPTY; +=for hackers +Found in file XSUB.h + =item XSRETURN_IV Return an integer from an XSUB immediately. Uses C<XST_mIV>. void XSRETURN_IV(IV iv) +=for hackers +Found in file XSUB.h + =item XSRETURN_NO Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>. XSRETURN_NO; +=for hackers +Found in file XSUB.h + =item XSRETURN_NV Return an double from an XSUB immediately. Uses C<XST_mNV>. void XSRETURN_NV(NV nv) +=for hackers +Found in file XSUB.h + =item XSRETURN_PV Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>. void XSRETURN_PV(char* str) +=for hackers +Found in file XSUB.h + =item XSRETURN_UNDEF Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>. XSRETURN_UNDEF; +=for hackers +Found in file XSUB.h + =item XSRETURN_YES Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>. XSRETURN_YES; +=for hackers +Found in file XSUB.h + =item XST_mIV Place an integer into the specified position C<pos> on the stack. The @@ -2162,6 +3098,9 @@ value is stored in a new mortal SV. void XST_mIV(int pos, IV iv) +=for hackers +Found in file XSUB.h + =item XST_mNO Place C<&PL_sv_no> into the specified position C<pos> on the @@ -2169,6 +3108,9 @@ stack. void XST_mNO(int pos) +=for hackers +Found in file XSUB.h + =item XST_mNV Place a double into the specified position C<pos> on the stack. The value @@ -2176,6 +3118,9 @@ is stored in a new mortal SV. void XST_mNV(int pos, NV nv) +=for hackers +Found in file XSUB.h + =item XST_mPV Place a copy of a string into the specified position C<pos> on the stack. @@ -2183,6 +3128,9 @@ The value is stored in a new mortal SV. void XST_mPV(int pos, char* str) +=for hackers +Found in file XSUB.h + =item XST_mUNDEF Place C<&PL_sv_undef> into the specified position C<pos> on the @@ -2190,6 +3138,9 @@ stack. void XST_mUNDEF(int pos) +=for hackers +Found in file XSUB.h + =item XST_mYES Place C<&PL_sv_yes> into the specified position C<pos> on the @@ -2197,11 +3148,17 @@ stack. void XST_mYES(int pos) +=for hackers +Found in file XSUB.h + =item XS_VERSION The version identifier for an XS module. This is usually handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>. +=for hackers +Found in file XSUB.h + =item XS_VERSION_BOOTCHECK Macro to verify that a PM module's $VERSION variable matches the XS @@ -2210,6 +3167,9 @@ C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">. XS_VERSION_BOOTCHECK; +=for hackers +Found in file XSUB.h + =item Zero The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the @@ -2217,6 +3177,9 @@ destination, C<nitems> is the number of items, and C<type> is the type. void Zero(void* dest, int nitems, type) +=for hackers +Found in file handy.h + =back =head1 AUTHORS diff --git a/pod/perlintern.pod b/pod/perlintern.pod index 6d8d67dae0..8afabd90f0 100644 --- a/pod/perlintern.pod +++ b/pod/perlintern.pod @@ -24,6 +24,9 @@ allow selecting particular classes of magical variable. bool is_gv_magical(char *name, STRLEN len, U32 flags) +=for hackers +Found in file gv.c + =back =head1 AUTHORS diff --git a/pod/perltoc.pod b/pod/perltoc.pod index 1b111cbef7..5768081c90 100644 --- a/pod/perltoc.pod +++ b/pod/perltoc.pod @@ -1647,8 +1647,8 @@ unary &, unary *, (TYPE) ?PATTERN?, m/PATTERN/cgimosx, /PATTERN/cgimosx, q/STRING/, C<'STRING'>, qq/STRING/, "STRING", qr/STRING/imosx, qx/STRING/, `STRING`, qw/STRING/, -s/PATTERN/REPLACEMENT/egimosx, tr/SEARCHLIST/REPLACEMENTLIST/cdsUC, -y/SEARCHLIST/REPLACEMENTLIST/cdsUC +s/PATTERN/REPLACEMENT/egimosx, tr/SEARCHLIST/REPLACEMENTLIST/cds, +y/SEARCHLIST/REPLACEMENTLIST/cds =item Gory details of parsing quoted constructs @@ -2746,8 +2746,6 @@ LIST, READ this, LIST, READLINE this, GETC this, CLOSE this, DESTROY this =item INSTANCE VARIABLES -=item SCALAR INSTANCE VARIABLES - =item INSTANCE VARIABLE INHERITANCE =item OBJECT RELATIONSHIPS @@ -3075,7 +3073,7 @@ Subroutine, Signal, Sorting Traps, OS Traps, DBM Traps, Unclassified Traps Discontinuance, Deprecation, BugFix, Discontinuance, Discontinuance, Discontinuance, BugFix, Discontinuance, Discontinuance, BugFix, -Discontinuance, Deprecation, Discontinuance +Discontinuance, Deprecation, Discontinuance, Discontinuance =item Parsing Traps @@ -3837,26 +3835,26 @@ PUSHi, PUSHMARK, PUSHn, PUSHp, PUSHs, PUSHu, PUTBACK, Renew, Renewc, require_pv, RETVAL, Safefree, savepv, savepvn, SAVETMPS, SP, SPAGAIN, ST, strEQ, strGE, strGT, strLE, strLT, strNE, strnEQ, strnNE, StructCopy, SvCUR, SvCUR_set, SvEND, SvGETMAGIC, SvGROW, SvIOK, SvIOKp, SvIOK_off, -SvIOK_on, SvIOK_only, SvIV, SvIVX, SvLEN, SvNIOK, SvNIOKp, SvNIOK_off, -SvNOK, SvNOKp, SvNOK_off, SvNOK_on, SvNOK_only, SvNV, SvNVX, SvOK, SvOOK, -SvPOK, SvPOKp, SvPOK_off, SvPOK_on, SvPOK_only, SvPV, SvPVX, SvPV_force, -SvPV_nolen, SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK, SvROK_off, -SvROK_on, SvRV, SvSETMAGIC, SvSetSV, SvSetSV_nosteal, SvSTASH, SvTAINT, -SvTAINTED, SvTAINTED_off, SvTAINTED_on, SvTRUE, SvTYPE, svtype, SVt_IV, -SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG, SvUPGRADE, SvUV, -SvUVX, sv_2mortal, sv_bless, sv_catpv, sv_catpvf, sv_catpvf_mg, sv_catpvn, -sv_catpvn_mg, sv_catpv_mg, sv_catsv, sv_catsv_mg, sv_chop, sv_cmp, sv_dec, -sv_derived_from, sv_eq, sv_grow, sv_inc, sv_insert, sv_isa, sv_isobject, -sv_len, sv_magic, sv_mortalcopy, sv_newmortal, sv_setiv, sv_setiv_mg, -sv_setnv, sv_setnv_mg, sv_setpv, sv_setpvf, sv_setpvf_mg, sv_setpviv, -sv_setpviv_mg, sv_setpvn, sv_setpvn_mg, sv_setpv_mg, sv_setref_iv, -sv_setref_nv, sv_setref_pv, sv_setref_pvn, sv_setsv, sv_setsv_mg, sv_setuv, -sv_setuv_mg, sv_unref, sv_upgrade, sv_usepvn, sv_usepvn_mg, sv_vcatpvfn, -sv_vsetpvfn, THIS, toLOWER, toUPPER, warn, XPUSHi, XPUSHn, XPUSHp, XPUSHs, -XPUSHu, XS, XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO, -XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_YES, XST_mIV, XST_mNO, -XST_mNV, XST_mPV, XST_mUNDEF, XST_mYES, XS_VERSION, XS_VERSION_BOOTCHECK, -Zero +SvIOK_on, SvIOK_only, SvIV, SvIVX, SvLEN, SvLOCK, SvNIOK, SvNIOKp, +SvNIOK_off, SvNOK, SvNOKp, SvNOK_off, SvNOK_on, SvNOK_only, SvNV, SvNVX, +SvOK, SvOOK, SvPOK, SvPOKp, SvPOK_off, SvPOK_on, SvPOK_only, SvPV, SvPVX, +SvPV_force, SvPV_nolen, SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK, +SvROK_off, SvROK_on, SvRV, SvSETMAGIC, SvSetSV, SvSetSV_nosteal, SvSTASH, +SvTAINT, SvTAINTED, SvTAINTED_off, SvTAINTED_on, SvTRUE, SvTYPE, svtype, +SVt_IV, SVt_NV, SVt_PV, SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG, SvUNLOCK, +SvUPGRADE, SvUV, SvUVX, sv_2mortal, sv_bless, sv_catpv, sv_catpvf, +sv_catpvf_mg, sv_catpvn, sv_catpvn_mg, sv_catpv_mg, sv_catsv, sv_catsv_mg, +sv_chop, sv_cmp, sv_dec, sv_derived_from, sv_eq, sv_grow, sv_inc, +sv_insert, sv_isa, sv_isobject, sv_len, sv_magic, sv_mortalcopy, +sv_newmortal, sv_setiv, sv_setiv_mg, sv_setnv, sv_setnv_mg, sv_setpv, +sv_setpvf, sv_setpvf_mg, sv_setpviv, sv_setpviv_mg, sv_setpvn, +sv_setpvn_mg, sv_setpv_mg, sv_setref_iv, sv_setref_nv, sv_setref_pv, +sv_setref_pvn, sv_setsv, sv_setsv_mg, sv_setuv, sv_setuv_mg, sv_unref, +sv_upgrade, sv_usepvn, sv_usepvn_mg, sv_vcatpvfn, sv_vsetpvfn, THIS, +toLOWER, toUPPER, warn, XPUSHi, XPUSHn, XPUSHp, XPUSHs, XPUSHu, XS, +XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO, XSRETURN_NV, +XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_YES, XST_mIV, XST_mNO, XST_mNV, +XST_mPV, XST_mUNDEF, XST_mYES, XS_VERSION, XS_VERSION_BOOTCHECK, Zero =item AUTHORS @@ -3977,18 +3975,6 @@ FETCH_I<type>_ATTRIBUTES, MODIFY_I<type>_ATTRIBUTES =back -=head2 attrs - set/get attributes of a subroutine (deprecated) - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -method, locked - -=back - =head2 autouse - postpone load of modules until a function is used =over @@ -4208,18 +4194,6 @@ operations =back -=head2 ops - Perl pragma to restrict unsafe operations when compiling - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=back - =head2 overload - Package for overloading perl operations =over @@ -4316,6 +4290,22 @@ integer, float, binary, q, qr =back +=head2 pwent - Perl pragma to control the pwent functions + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=over + +=item subpragma shadow_password + +=back + +=back + =head2 re - Perl pragma to alter regular expression behaviour =over @@ -4636,7 +4626,7 @@ bytecode =item DESCRIPTION -=item AUTHOR +=item AUTHORS =back @@ -4663,14 +4653,15 @@ bytecode =item OPTIONS B<-ofilename>, B<-afilename>, B<-->, B<-f>, B<-fcompress-nullops>, -B<-fomit-sequence-numbers>, B<-fbypass-nullops>, B<-fstrip-syntax-tree>, -B<-On>, B<-D>, B<-Do>, B<-Db>, B<-Da>, B<-DC>, B<-S>, B<-m> +B<-fomit-sequence-numbers>, B<-fbypass-nullops>, B<-On>, B<-D>, B<-Do>, +B<-Db>, B<-Da>, B<-DC>, B<-S>, B<-Ppackage> Stores package in the +output. =back =item EXAMPLES =item BUGS -=item AUTHOR +=item AUTHORS =back @@ -4962,14 +4953,15 @@ STYLE ] ), cmpthese ( RESULTSHASHREF ), countit(TIME, CODE), disablecache ( =item OPTIONS B<-ofilename>, B<-afilename>, B<-->, B<-f>, B<-fcompress-nullops>, -B<-fomit-sequence-numbers>, B<-fbypass-nullops>, B<-fstrip-syntax-tree>, -B<-On>, B<-D>, B<-Do>, B<-Db>, B<-Da>, B<-DC>, B<-S>, B<-m> +B<-fomit-sequence-numbers>, B<-fbypass-nullops>, B<-On>, B<-D>, B<-Do>, +B<-Db>, B<-Da>, B<-DC>, B<-S>, B<-Ppackage> Stores package in the +output. =back =item EXAMPLES =item BUGS -=item AUTHOR +=item AUTHORS =back @@ -5611,58 +5603,58 @@ C<d_fcntl>, C<d_fd_macros>, C<d_fd_set>, C<d_fds_bits>, C<d_fgetpos>, C<d_flexfnam>, C<d_flock>, C<d_fork>, C<d_fpathconf>, C<d_fpos64_t>, C<d_frexpl>, C<d_fs_data_s>, C<d_fseeko>, C<d_fsetpos>, C<d_fstatfs>, C<d_fstatvfs>, C<d_ftello>, C<d_ftime>, C<d_Gconvert>, C<d_getcwd>, -C<d_getfsstat>, C<d_getgrent>, C<d_getgrps>, C<d_gethbyaddr>, -C<d_gethbyname>, C<d_gethent>, C<d_gethname>, C<d_gethostprotos>, -C<d_getlogin>, C<d_getmnt>, C<d_getmntent>, C<d_getnbyaddr>, -C<d_getnbyname>, C<d_getnent>, C<d_getnetprotos>, C<d_getpbyname>, -C<d_getpbynumber>, C<d_getpent>, C<d_getpgid>, C<d_getpgrp2>, C<d_getpgrp>, -C<d_getppid>, C<d_getprior>, C<d_getprotoprotos>, C<d_getpwent>, -C<d_getsbyname>, C<d_getsbyport>, C<d_getsent>, C<d_getservprotos>, -C<d_getspnam>, C<d_gettimeod>, C<d_gnulibc>, C<d_grpasswd>, C<d_hasmntopt>, -C<d_htonl>, C<d_iconv>, C<d_index>, C<d_inetaton>, C<d_int64_t>, -C<d_isascii>, C<d_isnan>, C<d_isnanl>, C<d_killpg>, C<d_lchown>, -C<d_ldbl_dig>, C<d_link>, C<d_locconv>, C<d_lockf>, C<d_longdbl>, -C<d_longlong>, C<d_lseekproto>, C<d_lstat>, C<d_madvise>, C<d_mblen>, -C<d_mbstowcs>, C<d_mbtowc>, C<d_memchr>, C<d_memcmp>, C<d_memcpy>, -C<d_memmove>, C<d_memset>, C<d_mkdir>, C<d_mkdtemp>, C<d_mkfifo>, -C<d_mkstemp>, C<d_mkstemps>, C<d_mktime>, C<d_mmap>, C<d_modfl>, -C<d_mprotect>, C<d_msg>, C<d_msg_ctrunc>, C<d_msg_dontroute>, C<d_msg_oob>, -C<d_msg_peek>, C<d_msg_proxy>, C<d_msgctl>, C<d_msgget>, C<d_msgrcv>, -C<d_msgsnd>, C<d_msync>, C<d_munmap>, C<d_mymalloc>, C<d_nice>, -C<d_nv_preserved_bits>, C<d_nv_preserves_uv>, C<d_off64_t>, -C<d_old_pthread_create_joinable>, C<d_oldpthreads>, C<d_oldsock>, -C<d_open3>, C<d_pathconf>, C<d_pause>, C<d_perl_otherlibdirs>, -C<d_phostname>, C<d_pipe>, C<d_poll>, C<d_portable>, C<d_PRId64>, -C<d_PRIeldbl>, C<d_PRIEldbl>, C<d_PRIfldbl>, C<d_PRIFldbl>, C<d_PRIgldbl>, -C<d_PRIGldbl>, C<d_PRIi64>, C<d_PRIo64>, C<d_PRIu64>, C<d_PRIx64>, -C<d_PRIX64>, C<d_pthread_yield>, C<d_pwage>, C<d_pwchange>, C<d_pwclass>, -C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>, C<d_pwpasswd>, C<d_pwquota>, -C<d_qgcvt>, C<d_quad>, C<d_readdir>, C<d_readlink>, C<d_rename>, -C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>, C<d_safemcpy>, C<d_sanemcmp>, -C<d_sched_yield>, C<d_scm_rights>, C<d_seekdir>, C<d_select>, C<d_sem>, -C<d_semctl>, C<d_semctl_semid_ds>, C<d_semctl_semun>, C<d_semget>, -C<d_semop>, C<d_setegid>, C<d_seteuid>, C<d_setgrent>, C<d_setgrps>, -C<d_sethent>, C<d_setlinebuf>, C<d_setlocale>, C<d_setnent>, C<d_setpent>, -C<d_setpgid>, C<d_setpgrp2>, C<d_setpgrp>, C<d_setprior>, C<d_setpwent>, -C<d_setregid>, C<d_setresgid>, C<d_setresuid>, C<d_setreuid>, C<d_setrgid>, -C<d_setruid>, C<d_setsent>, C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>, -C<d_shmat>, C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>, -C<d_sigaction>, C<d_sigsetjmp>, C<d_socket>, C<d_socklen_t>, C<d_sockpair>, -C<d_sqrtl>, C<d_statblks>, C<d_statfs_f_flags>, C<d_statfs_s>, -C<d_statvfs>, C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>, -C<d_stdio_stream_array>, C<d_stdiobase>, C<d_stdstdio>, C<d_strchr>, -C<d_strcoll>, C<d_strctcpy>, C<d_strerrm>, C<d_strerror>, C<d_strtod>, -C<d_strtol>, C<d_strtold>, C<d_strtoll>, C<d_strtoul>, C<d_strtoull>, -C<d_strtouq>, C<d_strxfrm>, C<d_suidsafe>, C<d_symlink>, C<d_syscall>, -C<d_sysconf>, C<d_sysernlst>, C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>, -C<d_tcsetpgrp>, C<d_telldir>, C<d_telldirproto>, C<d_time>, C<d_times>, -C<d_truncate>, C<d_tzname>, C<d_umask>, C<d_uname>, C<d_union_semun>, -C<d_ustat>, C<d_vendorarch>, C<d_vendorbin>, C<d_vendorlib>, C<d_vfork>, -C<d_void_closedir>, C<d_voidsig>, C<d_voidtty>, C<d_volatile>, -C<d_vprintf>, C<d_wait4>, C<d_waitpid>, C<d_wcstombs>, C<d_wctomb>, -C<d_xenix>, C<date>, C<db_hashtype>, C<db_prefixtype>, C<defvoidused>, -C<direntrytype>, C<dlext>, C<dlsrc>, C<doublesize>, C<drand01>, -C<dynamic_ext> +C<d_getespwnam>, C<d_getfsstat>, C<d_getgrent>, C<d_getgrps>, +C<d_gethbyaddr>, C<d_gethbyname>, C<d_gethent>, C<d_gethname>, +C<d_gethostprotos>, C<d_getlogin>, C<d_getmnt>, C<d_getmntent>, +C<d_getnbyaddr>, C<d_getnbyname>, C<d_getnent>, C<d_getnetprotos>, +C<d_getpbyname>, C<d_getpbynumber>, C<d_getpent>, C<d_getpgid>, +C<d_getpgrp2>, C<d_getpgrp>, C<d_getppid>, C<d_getprior>, +C<d_getprotoprotos>, C<d_getprpwnam>, C<d_getpwent>, C<d_getsbyname>, +C<d_getsbyport>, C<d_getsent>, C<d_getservprotos>, C<d_getspnam>, +C<d_gettimeod>, C<d_gnulibc>, C<d_grpasswd>, C<d_hasmntopt>, C<d_htonl>, +C<d_iconv>, C<d_index>, C<d_inetaton>, C<d_int64_t>, C<d_isascii>, +C<d_isnan>, C<d_isnanl>, C<d_killpg>, C<d_lchown>, C<d_ldbl_dig>, +C<d_link>, C<d_locconv>, C<d_lockf>, C<d_longdbl>, C<d_longlong>, +C<d_lseekproto>, C<d_lstat>, C<d_madvise>, C<d_mblen>, C<d_mbstowcs>, +C<d_mbtowc>, C<d_memchr>, C<d_memcmp>, C<d_memcpy>, C<d_memmove>, +C<d_memset>, C<d_mkdir>, C<d_mkdtemp>, C<d_mkfifo>, C<d_mkstemp>, +C<d_mkstemps>, C<d_mktime>, C<d_mmap>, C<d_modfl>, C<d_mprotect>, C<d_msg>, +C<d_msg_ctrunc>, C<d_msg_dontroute>, C<d_msg_oob>, C<d_msg_peek>, +C<d_msg_proxy>, C<d_msgctl>, C<d_msgget>, C<d_msgrcv>, C<d_msgsnd>, +C<d_msync>, C<d_munmap>, C<d_mymalloc>, C<d_nice>, C<d_nv_preserves_uv>, +C<d_nv_preserves_uv_bits>, C<d_off64_t>, C<d_old_pthread_create_joinable>, +C<d_oldpthreads>, C<d_oldsock>, C<d_open3>, C<d_pathconf>, C<d_pause>, +C<d_perl_otherlibdirs>, C<d_phostname>, C<d_pipe>, C<d_poll>, +C<d_portable>, C<d_PRId64>, C<d_PRIeldbl>, C<d_PRIEldbl>, C<d_PRIfldbl>, +C<d_PRIFldbl>, C<d_PRIgldbl>, C<d_PRIGldbl>, C<d_PRIi64>, C<d_PRIo64>, +C<d_PRIu64>, C<d_PRIx64>, C<d_PRIX64>, C<d_pthread_yield>, C<d_pwage>, +C<d_pwchange>, C<d_pwclass>, C<d_pwcomment>, C<d_pwexpire>, C<d_pwgecos>, +C<d_pwpasswd>, C<d_pwquota>, C<d_qgcvt>, C<d_quad>, C<d_readdir>, +C<d_readlink>, C<d_rename>, C<d_rewinddir>, C<d_rmdir>, C<d_safebcpy>, +C<d_safemcpy>, C<d_sanemcmp>, C<d_sched_yield>, C<d_scm_rights>, +C<d_seekdir>, C<d_select>, C<d_sem>, C<d_semctl>, C<d_semctl_semid_ds>, +C<d_semctl_semun>, C<d_semget>, C<d_semop>, C<d_setegid>, C<d_seteuid>, +C<d_setgrent>, C<d_setgrps>, C<d_sethent>, C<d_setlinebuf>, C<d_setlocale>, +C<d_setnent>, C<d_setpent>, C<d_setpgid>, C<d_setpgrp2>, C<d_setpgrp>, +C<d_setprior>, C<d_setpwent>, C<d_setregid>, C<d_setresgid>, +C<d_setresuid>, C<d_setreuid>, C<d_setrgid>, C<d_setruid>, C<d_setsent>, +C<d_setsid>, C<d_setvbuf>, C<d_sfio>, C<d_shm>, C<d_shmat>, +C<d_shmatprototype>, C<d_shmctl>, C<d_shmdt>, C<d_shmget>, C<d_sigaction>, +C<d_sigsetjmp>, C<d_socket>, C<d_socklen_t>, C<d_sockpair>, C<d_sqrtl>, +C<d_statblks>, C<d_statfs_f_flags>, C<d_statfs_s>, C<d_statvfs>, +C<d_stdio_cnt_lval>, C<d_stdio_ptr_lval>, C<d_stdio_stream_array>, +C<d_stdiobase>, C<d_stdstdio>, C<d_strchr>, C<d_strcoll>, C<d_strctcpy>, +C<d_strerrm>, C<d_strerror>, C<d_strtod>, C<d_strtol>, C<d_strtold>, +C<d_strtoll>, C<d_strtoul>, C<d_strtoull>, C<d_strtouq>, C<d_strxfrm>, +C<d_suidsafe>, C<d_symlink>, C<d_syscall>, C<d_sysconf>, C<d_sysernlst>, +C<d_syserrlst>, C<d_system>, C<d_tcgetpgrp>, C<d_tcsetpgrp>, C<d_telldir>, +C<d_telldirproto>, C<d_time>, C<d_times>, C<d_truncate>, C<d_tzname>, +C<d_umask>, C<d_uname>, C<d_union_semun>, C<d_ustat>, C<d_vendorarch>, +C<d_vendorbin>, C<d_vendorlib>, C<d_vfork>, C<d_void_closedir>, +C<d_voidsig>, C<d_voidtty>, C<d_volatile>, C<d_vprintf>, C<d_wait4>, +C<d_waitpid>, C<d_wcstombs>, C<d_wctomb>, C<d_xenix>, C<date>, +C<db_hashtype>, C<db_prefixtype>, C<defvoidused>, C<direntrytype>, +C<dlext>, C<dlsrc>, C<doublesize>, C<drand01>, C<dynamic_ext> =item e @@ -5691,12 +5683,12 @@ C<i_dirent>, C<i_dld>, C<i_dlfcn>, C<i_fcntl>, C<i_float>, C<i_gdbm>, C<i_grp>, C<i_iconv>, C<i_ieeefp>, C<i_inttypes>, C<i_limits>, C<i_locale>, C<i_machcthr>, C<i_malloc>, C<i_math>, C<i_memory>, C<i_mntent>, C<i_ndbm>, C<i_netdb>, C<i_neterrno>, C<i_netinettcp>, C<i_niin>, C<i_poll>, -C<i_pthread>, C<i_pwd>, C<i_rpcsvcdbm>, C<i_sfio>, C<i_sgtty>, C<i_shadow>, -C<i_socks>, C<i_stdarg>, C<i_stddef>, C<i_stdlib>, C<i_string>, -C<i_sunmath>, C<i_sysaccess>, C<i_sysdir>, C<i_sysfile>, C<i_sysfilio>, -C<i_sysin>, C<i_sysioctl>, C<i_syslog>, C<i_sysmman>, C<i_sysmode>, -C<i_sysmount>, C<i_sysndir>, C<i_sysparam>, C<i_sysresrc>, C<i_syssecrt>, -C<i_sysselct>, C<i_syssockio>, C<i_sysstat>, C<i_sysstatfs>, +C<i_prot>, C<i_pthread>, C<i_pwd>, C<i_rpcsvcdbm>, C<i_sfio>, C<i_sgtty>, +C<i_shadow>, C<i_socks>, C<i_stdarg>, C<i_stddef>, C<i_stdlib>, +C<i_string>, C<i_sunmath>, C<i_sysaccess>, C<i_sysdir>, C<i_sysfile>, +C<i_sysfilio>, C<i_sysin>, C<i_sysioctl>, C<i_syslog>, C<i_sysmman>, +C<i_sysmode>, C<i_sysmount>, C<i_sysndir>, C<i_sysparam>, C<i_sysresrc>, +C<i_syssecrt>, C<i_sysselct>, C<i_syssockio>, C<i_sysstat>, C<i_sysstatfs>, C<i_sysstatvfs>, C<i_systime>, C<i_systimek>, C<i_systimes>, C<i_systypes>, C<i_sysuio>, C<i_sysun>, C<i_sysutsname>, C<i_sysvfs>, C<i_syswait>, C<i_termio>, C<i_termios>, C<i_time>, C<i_unistd>, C<i_ustat>, C<i_utime>, @@ -6205,7 +6197,7 @@ variables =item DESCRIPTION -=item BUGS +=item PERFORMANCE =back @@ -6224,22 +6216,6 @@ arrays =back -=head2 Errno - System errno constants - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item CAVEATS - -=item AUTHOR - -=item COPYRIGHT - -=back - =head2 Exporter - Implements default import method for modules =over @@ -7631,239 +7607,6 @@ locale =back -=head2 IO::Dir - supply object methods for directory handles - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -new ( [ DIRNAME ] ), open ( DIRNAME ), read (), seek ( POS ), tell (), -rewind (), close (), tie %hash, IO::Dir, DIRNAME [, OPTIONS ] - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::File - supply object methods for filehandles - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( FILENAME [,MODE [,PERMS]] ), new_tmpfile - -=item METHODS - -open( FILENAME [,MODE [,PERMS]] ) - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 IO::Handle - supply object methods for I/O handles - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new (), new_from_fd ( FD, MODE ) - -=item METHODS - -$io->fdopen ( FD, MODE ), $io->opened, $io->getline, $io->getlines, -$io->ungetc ( ORD ), $io->write ( BUF, LEN [, OFFSET ] ), $io->error, -$io->clearerr, $io->sync, $io->flush, $io->printflush ( ARGS ), -$io->blocking ( [ BOOL ] ), $io->untaint - -=item NOTE - -=item SEE ALSO - -=item BUGS - -=item HISTORY - -=back - -=head2 IO::Pipe - supply object methods for pipes - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [READER, WRITER] ) - -=item METHODS - -reader ([ARGS]), writer ([ARGS]), handles () - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::Poll - Object interface to system poll call - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -mask ( IO [, EVENT_MASK ] ), poll ( [ TIMEOUT ] ), events ( IO ), remove ( -IO ), handles( [ EVENT_MASK ] ) - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::Seekable - supply seek based methods for I/O objects - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item SEE ALSO - -=item HISTORY - -=back - -=head2 IO::Select - OO interface to the select system call - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ HANDLES ] ) - -=item METHODS - -add ( HANDLES ), remove ( HANDLES ), exists ( HANDLE ), handles, can_read ( -[ TIMEOUT ] ), can_write ( [ TIMEOUT ] ), has_exception ( [ TIMEOUT ] ), -count (), bits(), select ( READ, WRITE, ERROR [, TIMEOUT ] ) - -=item EXAMPLE - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::Socket - Object interface to socket communications - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=item METHODS - -accept([PKG]), socketpair(DOMAIN, TYPE, PROTOCOL), timeout([VAL]), -sockopt(OPT [, VAL]), sockdomain, socktype, protocol, connected - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::Socket::INET - Object interface for AF_INET domain sockets - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=over - -=item METHODS - -sockaddr (), sockport (), sockhost (), peeraddr (), peerport (), peerhost -() - -=back - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - -=head2 IO::Socket::UNIX - Object interface for AF_UNIX domain sockets - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item CONSTRUCTOR - -new ( [ARGS] ) - -=item METHODS - -hostpath(), peerpath() - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - =head2 IO::lib::IO::Dir, IO::Dir - supply object methods for directory handles @@ -8104,28 +7847,6 @@ hostpath(), peerpath() =back -=head2 IPC::Msg - SysV Msg IPC object class - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -new ( KEY , FLAGS ), id, rcv ( BUF, LEN [, TYPE [, FLAGS ]] ), remove, set -( STAT ), set ( NAME => VALUE [, NAME => VALUE ...] ), snd ( TYPE, MSG [, -FLAGS ] ), stat - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - =head2 IPC::Open2, open2 - open a process for both reading and writing =over @@ -8153,29 +7874,6 @@ handling =back -=head2 IPC::Semaphore - SysV Semaphore IPC object class - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -=item METHODS - -new ( KEY , NSEMS , FLAGS ), getall, getncnt ( SEM ), getpid ( SEM ), -getval ( SEM ), getzcnt ( SEM ), id, op ( OPLIST ), remove, set ( STAT ), -set ( NAME => VALUE [, NAME => VALUE ...] ), setall ( VALUES ), setval ( N -, VALUE ), stat - -=item SEE ALSO - -=item AUTHOR - -=item COPYRIGHT - -=back - =head2 IPC::SysV - SysV IPC constants =over @@ -9050,6 +8748,124 @@ B<Pod::ParseTree> =back +=head2 Pod::LaTeX - Convert Pod data to formatted Latex + +=over + +=item SYNOPSIS + +=item DESCRIPTION + +=back + +=over + +=item OBJECT METHODS + +C<initialize> + +=back + +=over + +=item Data Accessors + +B<AddPreamble> + +=back + +B<AddPostamble> + +B<Head1Level> + +B<Label> + +B<LevelNoNum> + +B<MakeIndex> + +B<ReplaceNAMEwithSection> + +B<StartWithNewPage> + +B<TableOfContents> + +B<UniqueLabels> + +B<UserPreamble> + +B<UserPostamble> + +B<Lists> + +=over + +=item Subclassed methods + +=back + +B<begin_pod> + +B<end_pod> + +B<command> + +B<verbatim> + +B<textblock> + +B<interior_sequence> + +=over + +=item List Methods + +B<begin_list> + +=back + +B<end_list> + +B<add_item> + +=over + +=item Methods for headings + +B<head> + +=back + +=over + +=item Internal methods + +B<_output> + +=back + +B<_replace_special_chars> + +B<_create_label> + +B<_create_index> + +B<_clean_latex_commands> + +=over + +=item NOTES + +=item SEE ALSO + +=item AUTHORS + +=item COPYRIGHT + +=item REVISION + +=back + =head2 Pod::Man - Convert POD data to formatted *roff input =over @@ -9640,39 +9456,6 @@ C<-pathlist> =back -=head2 Safe - Compile and execute code in restricted compartments - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -a new namespace, an operator mask - -=item WARNING - -=over - -=item RECENT CHANGES - -=item Methods in class Safe - -permit (OP, ...), permit_only (OP, ...), deny (OP, ...), deny_only (OP, -...), trap (OP, ...), untrap (OP, ...), share (NAME, ...), share_from -(PACKAGE, ARRAYREF), varglob (VARNAME), reval (STRING), rdo (FILENAME), -root (NAMESPACE), mask (MASK) - -=item Some Safety Issues - -Memory, CPU, Snooping, Signals, State Changes - -=item AUTHOR - -=back - -=back - =head2 Search::Dict, look - search for key in dictionary file =over @@ -9772,27 +9555,6 @@ pack_sockaddr_un PATH, unpack_sockaddr_un SOCKADDR_UN =back -=head2 Syslog, Sys::Syslog, openlog, closelog, setlogmask, syslog - Perl -interface to the UNIX syslog(3) calls - -=over - -=item SYNOPSIS - -=item DESCRIPTION - -openlog $ident, $logopt, $facility, syslog $priority, $format, @args, -setlogmask $mask_priority, setlogsock $sock_type (added in 5.004_02), -closelog - -=item EXAMPLES - -=item SEE ALSO - -=item AUTHOR - -=back - =head2 Syslog::Syslog, Sys::Syslog, openlog, closelog, setlogmask, syslog - Perl interface to the UNIX syslog(3) calls diff --git a/pod/perlutil.pod b/pod/perlutil.pod new file mode 100644 index 0000000000..1b2c178b1f --- /dev/null +++ b/pod/perlutil.pod @@ -0,0 +1,185 @@ +=head1 NAME + +perlutil - utilities packaged with the Perl distribution + +=head1 DESCRIPTION + +Along with the Perl interpreter itself, the Perl distribution installs a +range of utilities on your system. There are also several utilities +which are used by the Perl distribution itself as part of the install +process. This document exists to list all of these utilities, explain +what they are for and provide pointers to each module's documentation, +if appropriate. + +=head2 DOCUMENTATION + +=over 3 + +=item L<perldoc|perldoc> + +The main interface to Perl's documentation is C<perldoc>, although +if you're reading this, it's more than likely that you've already found +it. F<perldoc> will extract and format the documentation from any file +in the current directory, any Perl module installed on the system, or +any of the standard documentation pages, such as this one. Use +C<perldoc E<lt>nameE<gt>> to get information on any of the utilities +described in this document. + +=item L<pod2man|pod2man> and L<pod2text|pod2text> + +If it's run from a terminal, F<perldoc> will usually call F<pod2man> to +translate POD (Plain Old Documentation - see L<perlpod> for an +explanation) into a man page, and then run F<man> to display it; if +F<man> isn't available, F<pod2text> will be used instead and the output +piped through your favourite pager. + +=item L<pod2html|pod2html> and L<pod2latex|pod2latex> + +As well as these two, there are two other convertors: F<pod2html> will +produce HTML pages from POD, and F<pod2latex>, which produces LaTeX +files. + +=item L<pod2usage|pod2usage> + +If you just want to know how to use the utilities described here, +F<pod2usage> will just extract the "USAGE" section; some of +the utilities will automatically call F<pod2usage> on themselves when +you call them with C<-help>. + +=item L<podselect|podselect> + +F<pod2usage> is a special case of F<podselect>, a utility to extract +named sections from documents written in POD. For instance, while +utilities have "USAGE" sections, Perl modules usually have "SYNOPSIS" +sections: C<podselect -s "SYNOPSIS" ...> will extract this section for +a given file. + +=item L<podchecker|podchecker> + +If you're writing your own documentation in POD, the F<podchecker> +utility will look for errors in your markup. + +=item L<splain|splain> + +F<splain> is an interface to L<perldiag> - paste in your error message +to it, and it'll explain it for you. + +=item L<roffitall|roffitall> + +The C<roffitall> utility is not installed on your system but lives in +the F<pod/> directory of your Perl source kit; it converts all the +documentation from the distribution to F<*roff> format, and produces a +typeset PostScript or text file of the whole lot. + +=back + +=head2 CONVERTORS + +To help you convert legacy programs to Perl, we've included three +conversion filters: + +=over 3 + +=item L<a2p|a2p> + +F<a2p> converts F<awk> scripts to Perl programs; for example, C<a2p -F:> +on the simple F<awk> script C<{print $2}> will produce a Perl program +based around this code: + + while (<>) { + ($Fld1,$Fld2) = split(/[:\n]/, $_, 9999); + print $Fld2; + } + +=item L<s2p|s2p> + +Similarly, F<s2p> converts F<sed> scripts to Perl programs. F<s2p> run +on C<s/foo/bar> will produce a Perl program based around this: + + while (<>) { + chop; + s/foo/bar/g; + print if $printit; + } + +=item L<find2perl|find2perl> + +Finally, F<find2perl> translates C<find> commands to Perl equivalents which +use the L<File::Find|File::Find> module. As an example, +C<find2perl . -user root -perm 4000 -print> produces the following callback +subroutine for C<File::Find>: + + sub wanted { + my ($dev,$ino,$mode,$nlink,$uid,$gid); + (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && + $uid == $uid{'root'}) && + (($mode & 0777) == 04000); + print("$name\n"); + } + +=back + +As well as these filters for converting other languages, the +L<pl2pm|pl2pm> utility will help you convert old-style Perl 4 libraries to +new-style Perl5 modules. + +=head2 Development + +There are a set of utilities which help you in developing Perl programs, +and in particular, extending Perl with C. + +=over 3 + +=item L<perlbug|perlbug> + +F<perlbug> is the recommended way to report bugs in the perl interpreter +itself or any of the standard library modules back to the developers; +please read through the documentation for F<perlbug> thoroughly before +using it to submit a bug report. + +=item L<h2ph|h2ph> + +Back before Perl had the XS system for connecting with C libraries, +programmers used to get library constants by reading through the C +header files. You may still see C<require 'syscall.ph'> or similar +around - the F<.ph> file should be created by running F<h2ph> on the +corresponding F<.h> file. See the F<h2ph> documentation for more on how +to convert a whole bunch of header files at ones. + +=item L<c2ph|c2ph> and L<pstruct|pstruct> + +F<c2ph> and F<pstruct>, which are actually the same program but behave +differently depending on how they are called, provide another way of +getting at C with Perl - they'll convert C structures and union declarations +to Perl code. This is deprecated in favour of F<h2xs> these days. + +=item L<h2xs|h2xs> + +F<h2xs> converts C header files into XS modules, and will try and write +as much glue between C libraries and Perl modules as it can. It's also +very useful for creating skeletons of pure Perl modules. + +=item L<dprofpp|dprofpp> + +Perl comes with a profiler, the F<Devel::Dprof> module. The +F<dprofpp> utility analyzes the output of this profiler and tells you +which subroutines are taking up the most run time. See L<Devel::Dprof> +for more information. + +=item L<perlcc|perlcc> + +F<perlcc> is the interface to the experimental Perl compiler suite. + +=back + +=head2 SEE ALSO + +L<perldoc|perldoc>, L<pod2man|pod2man>, L<perlpod>, +L<pod2html|pod2html>, L<pod2usage|pod2usage>, L<podselect|podselect>, +L<podchecker|podchecker>, L<splain|splain>, L<perldiag>, +L<roffitall|roffitall>, L<a2p|a2p>, L<s2p|s2p>, L<find2perl|find2perl>, +L<File::Find|File::Find>, L<pl2pm|pl2pm>, L<perlbug|perlbug>, +L<h2ph|h2ph>, L<c2ph|c2ph>, L<h2xs|h2xs>, L<dprofpp|dprofpp>, +L<Devel::Dprof>, L<perlcc|perlcc> + +=cut diff --git a/pod/roffitall b/pod/roffitall index 018c0b3475..396da6fae2 100644 --- a/pod/roffitall +++ b/pod/roffitall @@ -27,70 +27,82 @@ case "$1" in ;; esac +# NEEDS TO BE BUILT BASED ON Makefile (or Makefile.SH, should such happen) toroff=` echo \ - $mandir/perl.1 \ - $mandir/perldata.1 \ - $mandir/perlsyn.1 \ - $mandir/perlop.1 \ - $mandir/perlre.1 \ - $mandir/perlrun.1 \ - $mandir/perlfunc.1 \ - $mandir/perlvar.1 \ - $mandir/perlsub.1 \ - $mandir/perlopentut.1 \ - $mandir/perlmod.1 \ - $mandir/perlmodlib.1 \ - $mandir/perlmodinstall.1 \ - $mandir/perlfork.1 \ - $mandir/perlform.1 \ - $mandir/perllocale.1 \ - $mandir/perlref.1 \ - $mandir/perlreftut.1 \ - $mandir/perldsc.1 \ - $mandir/perllol.1 \ - $mandir/perlboot.1 \ - $mandir/perltoot.1 \ - $mandir/perlobj.1 \ - $mandir/perltie.1 \ - $mandir/perlbot.1 \ - $mandir/perlipc.1 \ - $mandir/perlthrtut.1 \ - $mandir/perldebguts.1 \ - $mandir/perldebug.1 \ - $mandir/perlnumber.1 \ - $mandir/perldiag.1 \ - $mandir/perlsec.1 \ - $mandir/perltrap.1 \ - $mandir/perlport.1 \ - $mandir/perlstyle.1 \ - $mandir/perlpod.1 \ - $mandir/perlbook.1 \ - $mandir/perlembed.1 \ - $mandir/perlapio.1 \ - $mandir/perlxs.1 \ - $mandir/perlxstut.1 \ - $mandir/perlguts.1 \ - $mandir/perlcall.1 \ - $mandir/perlcompile.1 \ - $mandir/perltodo.1 \ - $mandir/perlapi.1 \ - $mandir/perlintern.1 \ - $mandir/perlhack.1 \ - $mandir/perlhist.1 \ - $mandir/perldelta.1 \ - $mandir/perl5004delta.1 \ - $mandir/perl5005delta.1 \ - $mandir/perlfaq.1 \ - $mandir/perlfaq1.1 \ - $mandir/perlfaq2.1 \ - $mandir/perlfaq3.1 \ - $mandir/perlfaq4.1 \ - $mandir/perlfaq5.1 \ - $mandir/perlfaq6.1 \ - $mandir/perlfaq7.1 \ - $mandir/perlfaq8.1 \ - $mandir/perlfaq9.1 \ + $mandir/perl.1 \ + $mandir/perl5004delta.1 \ + $mandir/perl5005delta.1 \ + $mandir/perl56delta.1 \ + $mandir/perlapi.1 \ + $mandir/perlapio.1 \ + $mandir/perlbook.1 \ + $mandir/perlboot.1 \ + $mandir/perlbot.1 \ + $mandir/perlcall.1 \ + $mandir/perlcompile.1 \ + $mandir/perldata.1 \ + $mandir/perldbmfilter.1 \ + $mandir/perldebguts.1 \ + $mandir/perldebug.1 \ + $mandir/perldelta.1 \ + $mandir/perldiag.1 \ + $mandir/perldsc.1 \ + $mandir/perlembed.1 \ + $mandir/perlfaq.1 \ + $mandir/perlfaq1.1 \ + $mandir/perlfaq2.1 \ + $mandir/perlfaq3.1 \ + $mandir/perlfaq4.1 \ + $mandir/perlfaq5.1 \ + $mandir/perlfaq6.1 \ + $mandir/perlfaq7.1 \ + $mandir/perlfaq8.1 \ + $mandir/perlfaq9.1 \ + $mandir/perlfilter.1 \ + $mandir/perlfork.1 \ + $mandir/perlform.1 \ + $mandir/perlfunc.1 \ + $mandir/perlguts.1 \ + $mandir/perlhack.1 \ + $mandir/perlhist.1 \ + $mandir/perlintern.1 \ + $mandir/perlipc.1 \ + $mandir/perllexwarn.1 \ + $mandir/perllocale.1 \ + $mandir/perllol.1 \ + $mandir/perlmod.1 \ + $mandir/perlmodinstall.1 \ + $mandir/perlmodlib.1 \ + $mandir/perlnewmod.1 \ + $mandir/perlnumber.1 \ + $mandir/perlobj.1 \ + $mandir/perlop.1 \ + $mandir/perlopentut.1 \ + $mandir/perlpod.1 \ + $mandir/perlport.1 \ + $mandir/perlre.1 \ + $mandir/perlref.1 \ + $mandir/perlreftut.1 \ + $mandir/perlrequick.1 \ + $mandir/perlretut.1 \ + $mandir/perlrun.1 \ + $mandir/perlsec.1 \ + $mandir/perlstyle.1 \ + $mandir/perlsub.1 \ + $mandir/perlsyn.1 \ + $mandir/perlthrtut.1 \ + $mandir/perltie.1 \ + $mandir/perltoc.1 \ + $mandir/perltodo.1 \ + $mandir/perltoot.1 \ + $mandir/perltootc.1 \ + $mandir/perltrap.1 \ + $mandir/perlunicode.1 \ + $mandir/perlutil.1 \ + $mandir/perlvar.1 \ + $mandir/perlxs.1 \ + $mandir/perlxstut.1 \ \ $mandir/a2p.1 \ $mandir/c2ph.1 \ @@ -809,6 +809,8 @@ PERL_CALLCONV U8* Perl_utf16_to_utf8(pTHX_ U16* p, U8 *d, I32 bytelen); PERL_CALLCONV U8* Perl_utf16_to_utf8_reversed(pTHX_ U16* p, U8 *d, I32 bytelen); PERL_CALLCONV I32 Perl_utf8_distance(pTHX_ U8 *a, U8 *b); PERL_CALLCONV U8* Perl_utf8_hop(pTHX_ U8 *s, I32 off); +PERL_CALLCONV U8* Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN len); +PERL_CALLCONV U8* Perl_bytes_to_utf8(pTHX_ U8 *s, STRLEN len); PERL_CALLCONV UV Perl_utf8_to_uv(pTHX_ U8 *s, I32* retlen); PERL_CALLCONV U8* Perl_uv_to_utf8(pTHX_ U8 *d, UV uv); PERL_CALLCONV void Perl_vivify_defelem(pTHX_ SV* sv); @@ -963,8 +965,6 @@ STATIC I32 S_do_trans_CC_complex(pTHX_ SV *sv); STATIC I32 S_do_trans_UU_simple(pTHX_ SV *sv); STATIC I32 S_do_trans_UU_count(pTHX_ SV *sv); STATIC I32 S_do_trans_UU_complex(pTHX_ SV *sv); -STATIC I32 S_do_trans_UC_simple(pTHX_ SV *sv); -STATIC I32 S_do_trans_CU_simple(pTHX_ SV *sv); STATIC I32 S_do_trans_UC_trivial(pTHX_ SV *sv); STATIC I32 S_do_trans_CU_trivial(pTHX_ SV *sv); #endif @@ -223,7 +223,7 @@ Perl_utf8_hop(pTHX_ U8 *s, I32 off) } /* -=for apidoc utf8_to_bytes +=for apidoc Am|U8 *|utf8_to_bytes|U8 *s|STRLEN len Converts a string C<s> of length C<len> from UTF8 into ASCII encoding. Unlike C<bytes_to_utf8>, this over-writes the original string. @@ -256,11 +256,12 @@ Perl_utf8_to_bytes(pTHX_ U8* s, STRLEN len) } /* -=for apidoc bytes_to_utf8 +=for apidoc Am|U8 *|bytes_to_utf8|U8 *s|STRLEN len Converts a string C<s> of length C<len> from ASCII into UTF8 encoding. Returns a pointer to the newly-created string. +=cut */ U8* diff --git a/utils/h2xs.PL b/utils/h2xs.PL index 8ebe8b30c5..84c69237ff 100644 --- a/utils/h2xs.PL +++ b/utils/h2xs.PL @@ -834,48 +834,48 @@ my $email = 'a.u.thor@a.galaxy.far.far.away'; my $revhist = ''; $revhist = <<EOT if $opt_C; - -=head1 HISTORY - -=over 8 - -=item $TEMPLATE_VERSION - -Original version; created by h2xs $H2XS_VERSION with options - - @ARGS - -=back - +# +#=head1 HISTORY +# +#=over 8 +# +#=item $TEMPLATE_VERSION +# +#Original version; created by h2xs $H2XS_VERSION with options +# +# @ARGS +# +#=back +# EOT my $exp_doc = <<EOD; - -=head2 EXPORT - -None by default. - +# +#=head2 EXPORT +# +#None by default. +# EOD if (@const_names and not $opt_P) { $exp_doc .= <<EOD; -=head2 Exportable constants - - @{[join "\n ", @const_names]} - +#=head2 Exportable constants +# +# @{[join "\n ", @const_names]} +# EOD } if (defined $fdecls and @$fdecls and not $opt_P) { $exp_doc .= <<EOD; -=head2 Exportable functions - +#=head2 Exportable functions +# EOD - $exp_doc .= <<EOD if $opt_p; -When accessing these functions from Perl, prefix C<$opt_p> should be removed. - +# $exp_doc .= <<EOD if $opt_p; +#When accessing these functions from Perl, prefix C<$opt_p> should be removed. +# EOD $exp_doc .= <<EOD; - @{[join "\n ", @known_fnames{@fnames}]} - +# @{[join "\n ", @known_fnames{@fnames}]} +# EOD } @@ -898,7 +898,7 @@ my $pod = <<"END" unless $opt_P; #unedited. # #Blah blah blah. -#$exp_doc$revhist +$exp_doc$revhist #=head1 AUTHOR # #$author, $email @@ -5230,6 +5230,82 @@ rmscopy_fromperl(pTHX_ CV *cv) XSRETURN(1); } + +void +mod2fname(CV *cv) +{ + dXSARGS; + char ultimate_name[NAM$C_MAXRSS+1], work_name[NAM$C_MAXRSS*8 + 1], + workbuff[NAM$C_MAXRSS*1 + 1]; + int total_namelen = 3, counter, num_entries; + /* ODS-5 ups this, but we want to be consistent, so... */ + int max_name_len = 39; + AV *in_array = (AV *)SvRV(ST(0)); + + num_entries = av_len(in_array); + + /* All the names start with PL_. */ + strcpy(ultimate_name, "PL_"); + + /* Clean up our working buffer */ + Zero(work_name, sizeof(work_name), char); + + /* Run through the entries and build up a working name */ + for(counter = 0; counter <= num_entries; counter++) { + /* If it's not the first name then tack on a __ */ + if (counter) { + strcat(work_name, "__"); + } + strcat(work_name, SvPV(*av_fetch(in_array, counter, FALSE), + PL_na)); + } + + /* Check to see if we actually have to bother...*/ + if (strlen(work_name) + 3 <= max_name_len) { + strcat(ultimate_name, work_name); + } else { + /* It's too darned big, so we need to go strip. We use the same */ + /* algorithm as xsubpp does. First, strip out doubled __ */ + char *source, *dest, last; + dest = workbuff; + last = 0; + for (source = work_name; *source; source++) { + if (last == *source && last == '_') { + continue; + } + *dest++ = *source; + last = *source; + } + /* Go put it back */ + strcpy(work_name, workbuff); + /* Is it still too big? */ + if (strlen(work_name) + 3 > max_name_len) { + /* Strip duplicate letters */ + last = 0; + dest = workbuff; + for (source = work_name; *source; source++) { + if (last == toupper(*source)) { + continue; + } + *dest++ = *source; + last = toupper(*source); + } + strcpy(work_name, workbuff); + } + + /* Is it *still* too big? */ + if (strlen(work_name) + 3 > max_name_len) { + /* Too bad, we truncate */ + work_name[max_name_len - 2] = 0; + } + strcat(ultimate_name, work_name); + } + + /* Okay, return it */ + ST(0) = sv_2mortal(newSVpv(ultimate_name, 0)); + XSRETURN(1); +} + void init_os_extras() { @@ -5250,6 +5326,7 @@ init_os_extras() newXSproto("VMS::Filespec::vmspath",vmspath_fromperl,file,"$"); newXSproto("VMS::Filespec::unixpath",unixpath_fromperl,file,"$"); newXSproto("VMS::Filespec::candelete",candelete_fromperl,file,"$"); + newXSproto("DynaLoader::mod2fname", mod2fname, file, "$"); newXS("File::Copy::rmscopy",rmscopy_fromperl,file); return; |