diff options
-rw-r--r-- | base/perl/perl-5.10.0-debian-23.patch | 3239 |
1 files changed, 0 insertions, 3239 deletions
diff --git a/base/perl/perl-5.10.0-debian-23.patch b/base/perl/perl-5.10.0-debian-23.patch deleted file mode 100644 index 85f84a440..000000000 --- a/base/perl/perl-5.10.0-debian-23.patch +++ /dev/null @@ -1,3239 +0,0 @@ -This patch is from Debian: - -http://patch-tracking.debian.net/patch/nondebian/dl/perl/5.10.0-23 - -We are omitting a few Debian-specific bits here - ---- perl-5.10.0.orig/perl.c -+++ perl-5.10.0/perl.c -@@ -1364,10 +1364,17 @@ - */ - const char * const s = PerlEnv_getenv("PERL_DESTRUCT_LEVEL"); - if (!s || atoi(s) == 0) { -+ const U32 old_debug = PL_debug; - /* Emulate the PerlHost behaviour of free()ing all memory allocated in this - thread at thread exit. */ -+ if (DEBUG_m_TEST) { -+ PerlIO_puts(Perl_debug_log, "Disabling memory debugging as we " -+ "free this thread's memory\n"); -+ PL_debug &= ~ DEBUG_m_FLAG; -+ } - while(aTHXx->Imemory_debug_header.next != &(aTHXx->Imemory_debug_header)) - safesysfree(sTHX + (char *)(aTHXx->Imemory_debug_header.next)); -+ PL_debug = old_debug; - } - } - #endif ---- perl-5.10.0.orig/embed.fnc -+++ perl-5.10.0/embed.fnc -@@ -140,7 +140,7 @@ - Afnp |OP* |die_nocontext |NN const char* pat|... - Afnp |void |deb_nocontext |NN const char* pat|... - Afnp |char* |form_nocontext |NN const char* pat|... --Anp |void |load_module_nocontext|U32 flags|NN SV* name|NN SV* ver|... -+Anp |void |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|... - Afnp |SV* |mess_nocontext |NN const char* pat|... - Afnp |void |warn_nocontext |NN const char* pat|... - Afnp |void |warner_nocontext|U32 err|NN const char* pat|... -@@ -296,7 +296,7 @@ - Apd |HV* |gv_stashpvn |NN const char* name|U32 namelen|I32 flags - Apd |HV* |gv_stashsv |NULLOK SV* sv|I32 flags - Apd |void |hv_clear |NULLOK HV* tb --poM |HV * |hv_copy_hints_hv|NN HV *const ohv -+poM |HV * |hv_copy_hints_hv|NULLOK HV *const ohv - Ap |void |hv_delayfree_ent|NN HV* hv|NULLOK HE* entry - Abmd |SV* |hv_delete |NULLOK HV* tb|NN const char* key|I32 klen \ - |I32 flags -@@ -486,8 +486,8 @@ - Afp |SV* |mess |NN const char* pat|... - Ap |SV* |vmess |NN const char* pat|NULLOK va_list* args - EXp |void |qerror |NN SV* err --Apd |void |sortsv |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp --Apd |void |sortsv_flags |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp|U32 flags -+Apd |void |sortsv |NULLOK SV** array|size_t num_elts|NN SVCOMPARE_t cmp -+Apd |void |sortsv_flags |NULLOK SV** array|size_t num_elts|NN SVCOMPARE_t cmp|U32 flags - Apd |int |mg_clear |NN SV* sv - Apd |int |mg_copy |NN SV* sv|NN SV* nsv|NULLOK const char* key|I32 klen - pd |void |mg_localize |NN SV* sv|NN SV* nsv -@@ -768,7 +768,7 @@ - Ap |void |save_list |NN SV** sarg|I32 maxsarg - Ap |void |save_long |NN long* longp - Ap |void |save_mortalizesv|NN SV* sv --Ap |void |save_nogv |NULLOK GV* gv -+Ap |void |save_nogv |NN GV* gv - p |void |save_op - Ap |SV* |save_scalar |NN GV* gv - Ap |void |save_pptr |NN char** pptr -@@ -842,8 +842,8 @@ - pd |I32 |sv_clean_all - pd |void |sv_clean_objs - Apd |void |sv_clear |NN SV* sv --Apd |I32 |sv_cmp |NN SV* sv1|NN SV* sv2 --Apd |I32 |sv_cmp_locale |NN SV* sv1|NN SV* sv2 -+Apd |I32 |sv_cmp |NULLOK SV* sv1|NULLOK SV* sv2 -+Apd |I32 |sv_cmp_locale |NULLOK SV* sv1|NULLOK SV* sv2 - #if defined(USE_LOCALE_COLLATE) - Apd |char* |sv_collxfrm |NN SV* sv|NN STRLEN* nxp - #endif -@@ -1094,7 +1094,7 @@ - Ap |yy_parser*|parser_dup |NN const yy_parser *proto|NN CLONE_PARAMS* param - #endif - Apa |PTR_TBL_t*|ptr_table_new --ApR |void* |ptr_table_fetch|NN PTR_TBL_t *tbl|NN const void *sv -+ApR |void* |ptr_table_fetch|NN PTR_TBL_t *tbl|NULLOK const void *sv - Ap |void |ptr_table_store|NN PTR_TBL_t *tbl|NULLOK const void *oldsv|NN void *newsv - Ap |void |ptr_table_split|NN PTR_TBL_t *tbl - Ap |void |ptr_table_clear|NULLOK PTR_TBL_t *tbl -@@ -1352,7 +1352,7 @@ - s |I32 |sortcv |NN SV *a|NN SV *b - s |I32 |sortcv_xsub |NN SV *a|NN SV *b - s |I32 |sortcv_stacked |NN SV *a|NN SV *b --s |void |qsortsvu |NN SV** array|size_t num_elts|NN SVCOMPARE_t compare -+s |void |qsortsvu |NULLOK SV** array|size_t num_elts|NN SVCOMPARE_t compare - #endif - - #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) -@@ -1623,7 +1623,8 @@ - Ap |int |PerlIO_flush |NULLOK PerlIO *f - Ap |void |PerlIO_clearerr |NULLOK PerlIO *f - Ap |void |PerlIO_set_cnt |NULLOK PerlIO *f|int cnt --Ap |void |PerlIO_set_ptrcnt |NULLOK PerlIO *f|NN STDCHAR *ptr|int cnt -+Ap |void |PerlIO_set_ptrcnt |NULLOK PerlIO *f|NULLOK STDCHAR *ptr \ -+ |int cnt - Ap |void |PerlIO_setlinebuf |NULLOK PerlIO *f - Ap |SSize_t|PerlIO_read |NULLOK PerlIO *f|NN void *buf|Size_t count - Ap |SSize_t|PerlIO_write |NULLOK PerlIO *f|NN const void *buf|Size_t count ---- perl-5.10.0.orig/util.c -+++ perl-5.10.0/util.c -@@ -178,11 +178,11 @@ - ptr = (Malloc_t)PerlMem_realloc(where,size); - PERL_ALLOC_CHECK(ptr); - -- DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) rfree\n",PTR2UV(where),(long)PL_an++)); -- DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) realloc %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)size)); -- -- if (ptr != NULL) { -+ /* MUST do this fixup first, before doing ANYTHING else, as anything else -+ might allocate memory/free/move memory, and until we do the fixup, it -+ may well be chasing (and writing to) free memory. */ - #ifdef PERL_TRACK_MEMPOOL -+ if (ptr != NULL) { - struct perl_memory_debug_header *const header - = (struct perl_memory_debug_header *)ptr; - -@@ -198,7 +198,17 @@ - header->prev->next = header; - - ptr = (Malloc_t)((char*)ptr+sTHX); -+ } - #endif -+ -+ /* In particular, must do that fixup above before logging anything via -+ *printf(), as it can reallocate memory, which can cause SEGVs. */ -+ -+ DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) rfree\n",PTR2UV(where),(long)PL_an++)); -+ DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) realloc %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)size)); -+ -+ -+ if (ptr != NULL) { - return ptr; - } - else if (PL_nomemok) ---- perl-5.10.0.orig/toke.c -+++ perl-5.10.0/toke.c -@@ -692,6 +692,7 @@ - #else - parser->nexttoke = 0; - #endif -+ parser->error_count = oparser ? oparser->error_count : 0; - parser->copline = NOLINE; - parser->lex_state = LEX_NORMAL; - parser->expect = XSTATE; ---- perl-5.10.0.orig/MANIFEST -+++ perl-5.10.0/MANIFEST -@@ -3804,6 +3804,7 @@ - t/op/reverse.t See if reverse operator works - t/op/runlevel.t See if die() works from perl_call_*() - t/op/rxcode.t See if /(?{ code })/ works -+t/op/setpgrpstack.t See if setpgrp works - t/op/sleep.t See if sleep works - t/op/smartmatch.t See if the ~~ operator works - t/op/sort.t See if sort works ---- perl-5.10.0.orig/pp_sort.c -+++ perl-5.10.0/pp_sort.c -@@ -1553,11 +1553,12 @@ - max = AvFILL(av) + 1; - if (SvMAGICAL(av)) { - MEXTEND(SP, max); -- p2 = SP; - for (i=0; i < max; i++) { - SV **svp = av_fetch(av, i, FALSE); - *SP++ = (svp) ? *svp : NULL; - } -+ SP--; -+ p1 = p2 = SP - (max-1); - } - else { - if (SvREADONLY(av)) -@@ -1713,7 +1714,7 @@ - SvREADONLY_off(av); - else if (av && !sorting_av) { - /* simulate pp_aassign of tied AV */ -- SV** const base = ORIGMARK+1; -+ SV** const base = MARK+1; - for (i=0; i < max; i++) { - base[i] = newSVsv(base[i]); - } ---- perl-5.10.0.orig/perliol.h -+++ perl-5.10.0/perliol.h -@@ -170,7 +170,7 @@ - - /* PerlIO_teardown doesn't need exporting, but the EXTERN_C is needed - * for compiling as C++. Must also match with what perl.h says. */ --EXTERN_C void PerlIO_teardown(); -+EXTERN_C void PerlIO_teardown(void); - - /*--------------------------------------------------------------------------------------*/ - /* Generic, or stub layer functions */ ---- perl-5.10.0.orig/hv.c -+++ perl-5.10.0/hv.c -@@ -1961,6 +1961,7 @@ - if (av) { - HvAUX(hv)->xhv_backreferences = 0; - Perl_sv_kill_backrefs(aTHX_ (SV*) hv, av); -+ SvREFCNT_dec(av); - } - } - ---- perl-5.10.0.orig/pp_sys.c -+++ perl-5.10.0/pp_sys.c -@@ -3002,7 +3002,7 @@ - - case OP_FTEEXEC: - #ifdef PERL_EFF_ACCESS -- access_mode = W_OK; -+ access_mode = X_OK; - #else - use_access = 0; - #endif -@@ -4289,6 +4289,7 @@ - if (MAXARG < 2) { - pgrp = 0; - pid = 0; -+ XPUSHi(-1); - } - else { - pgrp = POPi; ---- perl-5.10.0.orig/perlio.c -+++ perl-5.10.0/perlio.c -@@ -2413,7 +2413,7 @@ - } - } - --void PerlIO_teardown() /* Call only from PERL_SYS_TERM(). */ -+void PerlIO_teardown(void) /* Call only from PERL_SYS_TERM(). */ - { - dVAR; - #if 0 ---- perl-5.10.0.orig/Makefile.SH -+++ perl-5.10.0/Makefile.SH -@@ -43,12 +43,7 @@ - true) - # Prefix all runs of 'miniperl' and 'perl' with - # $ldlibpth so that ./perl finds *this* shared libperl. -- case "$LD_LIBRARY_PATH" in -- '') -- ldlibpth="LD_LIBRARY_PATH=`pwd`";; -- *) -- ldlibpth="LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}";; -- esac -+ ldlibpth=LD_LIBRARY_PATH=`pwd`'$${LD_LIBRARY_PATH:+:}$$LD_LIBRARY_PATH' - - pldlflags="$cccdlflags" - static_target='static_pic' -@@ -101,7 +96,7 @@ - ;; - esac - case "$ldlibpthname" in -- '') ;; -+ ''|LD_LIBRARY_PATH) ;; - *) - case "$osname" in - os2) ---- perl-5.10.0.orig/pp_ctl.c -+++ perl-5.10.0/pp_ctl.c -@@ -218,7 +218,6 @@ - if (!(cx->sb_rxtainted & 2) && SvTAINTED(TOPs)) - cx->sb_rxtainted |= 2; - sv_catsv(dstr, POPs); -- FREETMPS; /* Prevent excess tmp stack */ - - /* Are we done */ - if (cx->sb_once || !CALLREGEXEC(rx, s, cx->sb_strend, orig, -@@ -3076,14 +3075,6 @@ - - sv = POPs; - if ( (SvNIOKp(sv) || SvVOK(sv)) && PL_op->op_type != OP_DOFILE) { -- if ( SvVOK(sv) && ckWARN(WARN_PORTABLE) ) { /* require v5.6.1 */ -- HV * hinthv = GvHV(PL_hintgv); -- SV ** ptr = NULL; -- if (hinthv) ptr = hv_fetchs(hinthv, "v_string", FALSE); -- if ( !(ptr && *ptr && SvIOK(*ptr) && SvIV(*ptr)) ) -- Perl_warner(aTHX_ packWARN(WARN_PORTABLE), -- "v-string in use/require non-portable"); -- } - sv = new_version(sv); - if (!sv_derived_from(PL_patchlevel, "version")) - upg_version(PL_patchlevel, TRUE); -@@ -3135,26 +3126,14 @@ - - /* We do this only with use, not require. */ - if (PL_compcv && -- /* If we request a version >= 5.6.0, then v-string are OK -- so set $^H{v_string} to suppress the v-string warning */ -- vcmp(sv, sv_2mortal(upg_version(newSVnv(5.006), FALSE))) >= 0) { -- HV * hinthv = GvHV(PL_hintgv); -- if( hinthv ) { -- SV *hint = newSViv(1); -- (void)hv_stores(hinthv, "v_string", hint); -- /* This will call through to Perl_magic_sethint() which in turn -- sets PL_hints correctly. */ -- SvSETMAGIC(hint); -- } - /* If we request a version >= 5.9.5, load feature.pm with the - * feature bundle that corresponds to the required version. */ -- if (vcmp(sv, sv_2mortal(upg_version(newSVnv(5.009005), FALSE))) >= 0) { -+ vcmp(sv, sv_2mortal(upg_version(newSVnv(5.009005), FALSE))) >= 0) { - SV *const importsv = vnormal(sv); - *SvPVX_mutable(importsv) = ':'; - ENTER; - Perl_load_module(aTHX_ 0, newSVpvs("feature"), NULL, importsv, NULL); - LEAVE; -- } - } - - RETPUSHYES; ---- perl-5.10.0.orig/sv.c -+++ perl-5.10.0/sv.c -@@ -3557,8 +3557,10 @@ - GvMULTI_on(dstr); - return; - } -- glob_assign_glob(dstr, sstr, dtype); -- return; -+ if (isGV_with_GP(sstr)) { -+ glob_assign_glob(dstr, sstr, dtype); -+ return; -+ } - } - - if (dtype >= SVt_PV) { -@@ -10263,10 +10265,11 @@ - daux->xhv_eiter = saux->xhv_eiter - ? he_dup(saux->xhv_eiter, - (bool)!!HvSHAREKEYS(sstr), param) : 0; -+ /* backref array needs refcnt=2; see sv_add_backref */ - daux->xhv_backreferences = - saux->xhv_backreferences - ? (AV*) SvREFCNT_inc( -- sv_dup((SV*)saux->xhv_backreferences, param)) -+ sv_dup_inc((SV*)saux->xhv_backreferences, param)) - : 0; - - daux->xhv_mro_meta = saux->xhv_mro_meta ---- perl-5.10.0.orig/av.c -+++ perl-5.10.0/av.c -@@ -433,7 +433,7 @@ - /* Give any tie a chance to cleanup first */ - if (SvRMAGICAL(av)) { - const MAGIC* const mg = SvMAGIC(av); -- if (PL_delaymagic && mg->mg_type == PERL_MAGIC_isa) -+ if (PL_delaymagic && mg && mg->mg_type == PERL_MAGIC_isa) - PL_delaymagic |= DM_ARRAY; - else - mg_clear((SV*)av); ---- perl-5.10.0.orig/mg.c -+++ perl-5.10.0/mg.c -@@ -1543,10 +1543,11 @@ - stash = GvSTASH( - SvTYPE(mg->mg_obj) == SVt_PVGV - ? (GV*)mg->mg_obj -- : (GV*)SvMAGIC(mg->mg_obj)->mg_obj -+ : (GV*)mg_find(mg->mg_obj, PERL_MAGIC_isa)->mg_obj - ); - -- mro_isa_changed_in(stash); -+ if (stash) -+ mro_isa_changed_in(stash); - - return 0; - } ---- perl-5.10.0.orig/proto.h -+++ perl-5.10.0/proto.h -@@ -260,8 +260,7 @@ - __attribute__nonnull__(1); - - PERL_CALLCONV void Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...) -- __attribute__nonnull__(2) -- __attribute__nonnull__(3); -+ __attribute__nonnull__(2); - - PERL_CALLCONV SV* Perl_mess_nocontext(const char* pat, ...) - __attribute__format__(__printf__,1,2) -@@ -678,9 +677,7 @@ - - PERL_CALLCONV HV* Perl_gv_stashsv(pTHX_ SV* sv, I32 flags); - PERL_CALLCONV void Perl_hv_clear(pTHX_ HV* tb); --PERL_CALLCONV HV * Perl_hv_copy_hints_hv(pTHX_ HV *const ohv) -- __attribute__nonnull__(pTHX_1); -- -+PERL_CALLCONV HV * Perl_hv_copy_hints_hv(pTHX_ HV *const ohv); - PERL_CALLCONV void Perl_hv_delayfree_ent(pTHX_ HV* hv, HE* entry) - __attribute__nonnull__(pTHX_1); - -@@ -1303,11 +1300,9 @@ - __attribute__nonnull__(pTHX_1); - - PERL_CALLCONV void Perl_sortsv(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp) -- __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); - - PERL_CALLCONV void Perl_sortsv_flags(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags) -- __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); - - PERL_CALLCONV int Perl_mg_clear(pTHX_ SV* sv) -@@ -2079,7 +2074,9 @@ - PERL_CALLCONV void Perl_save_mortalizesv(pTHX_ SV* sv) - __attribute__nonnull__(pTHX_1); - --PERL_CALLCONV void Perl_save_nogv(pTHX_ GV* gv); -+PERL_CALLCONV void Perl_save_nogv(pTHX_ GV* gv) -+ __attribute__nonnull__(pTHX_1); -+ - PERL_CALLCONV void Perl_save_op(pTHX); - PERL_CALLCONV SV* Perl_save_scalar(pTHX_ GV* gv) - __attribute__nonnull__(pTHX_1); -@@ -2263,14 +2260,8 @@ - PERL_CALLCONV void Perl_sv_clear(pTHX_ SV* sv) - __attribute__nonnull__(pTHX_1); - --PERL_CALLCONV I32 Perl_sv_cmp(pTHX_ SV* sv1, SV* sv2) -- __attribute__nonnull__(pTHX_1) -- __attribute__nonnull__(pTHX_2); -- --PERL_CALLCONV I32 Perl_sv_cmp_locale(pTHX_ SV* sv1, SV* sv2) -- __attribute__nonnull__(pTHX_1) -- __attribute__nonnull__(pTHX_2); -- -+PERL_CALLCONV I32 Perl_sv_cmp(pTHX_ SV* sv1, SV* sv2); -+PERL_CALLCONV I32 Perl_sv_cmp_locale(pTHX_ SV* sv1, SV* sv2); - #if defined(USE_LOCALE_COLLATE) - PERL_CALLCONV char* Perl_sv_collxfrm(pTHX_ SV* sv, STRLEN* nxp) - __attribute__nonnull__(pTHX_1) -@@ -2936,8 +2927,7 @@ - - PERL_CALLCONV void* Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *tbl, const void *sv) - __attribute__warn_unused_result__ -- __attribute__nonnull__(pTHX_1) -- __attribute__nonnull__(pTHX_2); -+ __attribute__nonnull__(pTHX_1); - - PERL_CALLCONV void Perl_ptr_table_store(pTHX_ PTR_TBL_t *tbl, const void *oldsv, void *newsv) - __attribute__nonnull__(pTHX_1) -@@ -3625,7 +3615,6 @@ - __attribute__nonnull__(pTHX_2); - - STATIC void S_qsortsvu(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t compare) -- __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3); - - #endif -@@ -4245,9 +4234,7 @@ - PERL_CALLCONV int Perl_PerlIO_flush(pTHX_ PerlIO *f); - PERL_CALLCONV void Perl_PerlIO_clearerr(pTHX_ PerlIO *f); - PERL_CALLCONV void Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, int cnt); --PERL_CALLCONV void Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, int cnt) -- __attribute__nonnull__(pTHX_2); -- -+PERL_CALLCONV void Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, int cnt); - PERL_CALLCONV void Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f); - PERL_CALLCONV SSize_t Perl_PerlIO_read(pTHX_ PerlIO *f, void *buf, Size_t count) - __attribute__nonnull__(pTHX_2); ---- perl-5.10.0.orig/regcomp.c -+++ perl-5.10.0/regcomp.c -@@ -8239,6 +8239,9 @@ - *STRING(ret)= (char)value; - STR_LEN(ret)= 1; - RExC_emit += STR_SZ(1); -+ if (listsv) { -+ SvREFCNT_dec(listsv); -+ } - return ret; - } - /* optimize case-insensitive simple patterns (e.g. /[a-z]/i) */ ---- perl-5.10.0.orig/doop.c -+++ perl-5.10.0/doop.c -@@ -1204,7 +1204,13 @@ - - if (sv != left || (optype != OP_BIT_AND && !SvOK(sv) && !SvGMAGICAL(sv))) - sv_setpvn(sv, "", 0); /* avoid undef warning on |= and ^= */ -- lsave = lc = SvPV_nomg_const(left, leftlen); -+ if (sv == left) { -+ lsave = lc = SvPV_force_nomg(left, leftlen); -+ } -+ else { -+ lsave = lc = SvPV_nomg_const(left, leftlen); -+ SvPV_force_nomg_nolen(sv); -+ } - rsave = rc = SvPV_nomg_const(right, rightlen); - - /* This need to come after SvPV to ensure that string overloading has ---- perl-5.10.0.orig/perl.h -+++ perl-5.10.0/perl.h -@@ -663,6 +663,11 @@ - # include <unistd.h> - #endif - -+/* for WCOREDUMP */ -+#ifdef I_SYS_WAIT -+# include <sys/wait.h> -+#endif -+ - #ifdef __SYMBIAN32__ - # undef _SC_ARG_MAX /* Symbian has _SC_ARG_MAX but no sysconf() */ - #endif -@@ -2652,6 +2657,25 @@ - # define PERL_SYS_INIT3_BODY(argvp,argcp,envp) PERL_SYS_INIT_BODY(argvp,argcp) - #endif - -+/* -+=for apidoc Am|void|PERL_SYS_INIT|int argc|char** argv -+Provides system-specific tune up of the C runtime environment necessary to -+run Perl interpreters. This should be called only once, before creating -+any Perl interpreters. -+ -+=for apidoc Am|void|PERL_SYS_INIT3|int argc|char** argv|char** env -+Provides system-specific tune up of the C runtime environment necessary to -+run Perl interpreters. This should be called only once, before creating -+any Perl interpreters. -+ -+=for apidoc Am|void|PERL_SYS_TERM| -+Provides system-specific clean up of the C runtime environment after -+running Perl interpreters. This should be called only once, after -+freeing any remaining Perl interpreters. -+ -+=cut -+ */ -+ - #define PERL_SYS_INIT(argc, argv) Perl_sys_init(argc, argv) - #define PERL_SYS_INIT3(argc, argv, env) Perl_sys_init3(argc, argv, env) - #define PERL_SYS_TERM() Perl_sys_term() -@@ -3966,7 +3990,7 @@ - #endif - - #ifdef USE_PERLIO --EXTERN_C void PerlIO_teardown(); -+EXTERN_C void PerlIO_teardown(void); - # ifdef USE_ITHREADS - # define PERLIO_INIT MUTEX_INIT(&PL_perlio_mutex) - # define PERLIO_TERM \ ---- perl-5.10.0.orig/pp_hot.c -+++ perl-5.10.0/pp_hot.c -@@ -1028,8 +1028,14 @@ - *(relem++) = sv; - didstore = av_store(ary,i++,sv); - if (magic) { -- if (SvSMAGICAL(sv)) -+ if (SvSMAGICAL(sv)) { -+ /* More magic can happen in the mg_set callback, so we -+ * backup the delaymagic for now. */ -+ U16 dmbak = PL_delaymagic; -+ PL_delaymagic = 0; - mg_set(sv); -+ PL_delaymagic = dmbak; -+ } - if (!didstore) - sv_2mortal(sv); - } -@@ -1059,8 +1065,12 @@ - duplicates += 2; - didstore = hv_store_ent(hash,sv,tmpstr,0); - if (magic) { -- if (SvSMAGICAL(tmpstr)) -+ if (SvSMAGICAL(tmpstr)) { -+ U16 dmbak = PL_delaymagic; -+ PL_delaymagic = 0; - mg_set(tmpstr); -+ PL_delaymagic = dmbak; -+ } - if (!didstore) - sv_2mortal(tmpstr); - } -@@ -1084,7 +1094,13 @@ - } - else - sv_setsv(sv, &PL_sv_undef); -- SvSETMAGIC(sv); -+ -+ if (SvSMAGICAL(sv)) { -+ U16 dmbak = PL_delaymagic; -+ PL_delaymagic = 0; -+ mg_set(sv); -+ PL_delaymagic = dmbak; -+ } - break; - } - } -@@ -1198,6 +1214,9 @@ - if (rx->extflags & RXf_TAINTED) - SvTAINTED_on(rv); - sv_magic(sv,(SV*)ReREFCNT_inc(rx), PERL_MAGIC_qr,0,0); -+ if (pkg) { -+ SvREFCNT_dec(pkg); -+ } - XPUSHs(rv); - RETURN; - } ---- perl-5.10.0.orig/t/comp/require.t -+++ perl-5.10.0/t/comp/require.t -@@ -15,7 +15,7 @@ - - my $Is_EBCDIC = (ord('A') == 193) ? 1 : 0; - my $Is_UTF8 = (${^OPEN} || "") =~ /:utf8/; --my $total_tests = 49; -+my $total_tests = 50; - if ($Is_EBCDIC || $Is_UTF8) { $total_tests -= 3; } - print "1..$total_tests\n"; - -@@ -258,6 +258,20 @@ - } - } - -+# [perl #49472] Attributes + Unkown Error -+ -+{ -+ do_require -+ 'use strict;sub MODIFY_CODE_ATTRIBUTE{} sub f:Blah {$nosuchvar}'; -+ my $err = $@; -+ $err .= "\n" unless $err =~ /\n$/; -+ unless ($err =~ /Global symbol "\$nosuchvar" requires /) { -+ $err =~ s/^/# /mg; -+ print "${err}not "; -+ } -+ print "ok ", ++$i, " [perl #49472]\n"; -+} -+ - ########################################## - # What follows are UTF-8 specific tests. # - # Add generic tests before this point. # ---- perl-5.10.0.orig/t/op/fork.t -+++ perl-5.10.0/t/op/fork.t -@@ -445,16 +445,14 @@ - my $pid = fork; - die "fork: $!" if !defined $pid; - if ($pid == 0) { -- my $rand_child = rand; - close RDR; -- print WTR $rand_child, "\n"; -+ print WTR "STRING_FROM_CHILD\n"; - close WTR; - } else { -- my $rand_parent = rand; - close WTR; -- chomp(my $rand_child = <RDR>); -+ chomp(my $string_from_child = <RDR>); - close RDR; -- print $rand_child ne $rand_parent, "\n"; -+ print $string_from_child eq "STRING_FROM_CHILD", "\n"; - } - EXPECT - 1 ---- perl-5.10.0.orig/t/op/setpgrpstack.t -+++ perl-5.10.0/t/op/setpgrpstack.t -@@ -0,0 +1,16 @@ -+#!./perl -w -+ -+BEGIN { -+ chdir 't' if -d 't'; -+ @INC = '../lib'; -+ require './test.pl'; -+} -+ -+use Config; -+plan tests => 2; -+ -+SKIP: { -+ skip "setpgrp() is not available", 2 unless $Config{d_setpgrp}; -+ ok(!eval { package A;sub foo { die("got here") }; package main; A->foo(setpgrp())}); -+ ok($@ =~ /got here/, "setpgrp() should extend the stack before modifying it"); -+} ---- perl-5.10.0.orig/t/op/bop.t -+++ perl-5.10.0/t/op/bop.t -@@ -15,7 +15,7 @@ - # If you find tests are failing, please try adding names to tests to track - # down where the failure is, and supply your new names as a patch. - # (Just-in-time test naming) --plan tests => 161; -+plan tests => 161 + (10*13*2) + 4; - - # numerics - ok ((0xdead & 0xbeef) == 0x9ead); -@@ -428,3 +428,105 @@ - my $ref = "\x{10000}\0"; - is(~~$str, $ref); - } -+ -+# ref tests -+ -+my %res; -+ -+for my $str ("x", "\x{100}") { -+ for my $chr (qw/S A H G X ( * F/) { -+ for my $op (qw/| & ^/) { -+ my $co = ord $chr; -+ my $so = ord $str; -+ $res{"$chr$op$str"} = eval qq/chr($co $op $so)/; -+ } -+ } -+ $res{"undef|$str"} = $str; -+ $res{"undef&$str"} = ""; -+ $res{"undef^$str"} = $str; -+} -+ -+sub PVBM () { "X" } -+index PVBM, "foo"; -+ -+my $warn = 0; -+local $^W = 1; -+local $SIG{__WARN__} = sub { $warn++ }; -+ -+sub is_first { -+ my ($got, $orig, $op, $str, $name) = @_; -+ is(substr($got, 0, 1), $res{"$orig$op$str"}, $name); -+} -+ -+for ( -+ # [object to test, first char of stringification, name] -+ [undef, "undef", "undef" ], -+ [\1, "S", "scalar ref" ], -+ [[], "A", "array ref" ], -+ [{}, "H", "hash ref" ], -+ [qr/x/, "(", "qr//" ], -+ [*foo, "*", "glob" ], -+ [\*foo, "G", "glob ref" ], -+ [PVBM, "X", "PVBM" ], -+ [\PVBM, "S", "PVBM ref" ], -+ [bless([], "Foo"), "F", "object" ], -+) { -+ my ($val, $orig, $type) = @$_; -+ -+ for (["x", "string"], ["\x{100}", "utf8"]) { -+ my ($str, $desc) = @$_; -+ -+ $warn = 0; -+ -+ is_first($val | $str, $orig, "|", $str, "$type | $desc"); -+ is_first($val & $str, $orig, "&", $str, "$type & $desc"); -+ is_first($val ^ $str, $orig, "^", $str, "$type ^ $desc"); -+ -+ is_first($str | $val, $orig, "|", $str, "$desc | $type"); -+ is_first($str & $val, $orig, "&", $str, "$desc & $type"); -+ is_first($str ^ $val, $orig, "^", $str, "$desc ^ $type"); -+ -+ my $new; -+ ($new = $val) |= $str; -+ is_first($new, $orig, "|", $str, "$type |= $desc"); -+ ($new = $val) &= $str; -+ is_first($new, $orig, "&", $str, "$type &= $desc"); -+ ($new = $val) ^= $str; -+ is_first($new, $orig, "^", $str, "$type ^= $desc"); -+ -+ ($new = $str) |= $val; -+ is_first($new, $orig, "|", $str, "$desc |= $type"); -+ ($new = $str) &= $val; -+ is_first($new, $orig, "&", $str, "$desc &= $type"); -+ ($new = $str) ^= $val; -+ is_first($new, $orig, "^", $str, "$desc ^= $type"); -+ -+ if ($orig eq "undef") { -+ # undef |= and undef ^= don't warn -+ is($warn, 10, "no duplicate warnings"); -+ } -+ else { -+ is($warn, 0, "no warnings"); -+ } -+ } -+} -+ -+my $strval; -+ -+{ -+ package Bar; -+ use overload q/""/ => sub { $strval }; -+ -+ package Baz; -+ use overload q/|/ => sub { "y" }; -+} -+ -+ok(!eval { bless([], "Bar") | "x"; 1 }, "string overload can't use |"); -+like($@, qr/no method found/, "correct error"); -+is(eval { bless([], "Baz") | "x" }, "y", "| overload works"); -+ -+my $obj = bless [], "Bar"; -+$strval = "x"; -+eval { $obj |= "Q" }; -+$strval = "z"; -+is("$obj", "z", "|= doesn't break string overload"); ---- perl-5.10.0.orig/t/mro/pkg_gen.t -+++ perl-5.10.0/t/mro/pkg_gen.t -@@ -4,7 +4,7 @@ - use warnings; - - chdir 't' if -d 't'; --require q(./test.pl); plan(tests => 6); -+require q(./test.pl); plan(tests => 7); - - { - package Foo; -@@ -34,3 +34,7 @@ - - delete $::{"Foo::"}; - is(mro::get_pkg_gen('Foo'), 0, 'pkg_gen 0 for delete $::{Pkg::}'); -+ -+delete $::{"Quux::"}; -+push @Quux::ISA, "Woot"; # should not segfault -+ok(1, "No segfault on modification of ISA in a deleted stash"); ---- perl-5.10.0.orig/t/lib/h2ph.h -+++ perl-5.10.0/t/lib/h2ph.h -@@ -26,6 +26,10 @@ - #undef MAX - #define MAX(a,b) ((a) > (b) ? (a) : (b)) - -+/* Test #undef'ining an existing constant function */ -+#define NOTTRUE 0 -+#undef NOTTRUE -+ - /* Test #ifdef */ - #ifdef __SOME_UNIMPORTANT_PROPERTY - #define MIN(a,b) ((a) < (b) ? (a) : (b)) -@@ -68,9 +72,11 @@ - * with `use lib qw(/opt/perl5/lib/site_perl/i586-linux/linux);' or whatever - * your equivalent is... - */ -+#if 0 - #include <sys/socket.h> - #import "sys/ioctl.h" - #include_next <sys/fcntl.h> -+#endif - - /* typedefs should be ignored */ - typedef struct a_struct { ---- perl-5.10.0.orig/t/lib/proxy_constant_subs.t -+++ perl-5.10.0/t/lib/proxy_constant_subs.t -@@ -7,20 +7,20 @@ - print "1..0 # Skip -- Perl configured without B module\n"; - exit 0; - } -- if ($Config::Config{'extensions'} !~ /\bPOSIX\b/) { -- print "1..0 # Skip -- Perl configured without POSIX\n"; -+ if ($Config::Config{'extensions'} !~ /\bFcntl\b/) { -+ print "1..0 # Skip -- Perl configured without Fcntl\n"; - exit 0; - } -- # errno is a real subroutine, and acts as control -+ # S_IFMT is a real subroutine, and acts as control - # SEEK_SET is a proxy constant subroutine. -- @symbols = qw(errno SEEK_SET); -+ @symbols = qw(S_IFMT SEEK_SET); - } - - use strict; - use warnings; - use Test::More tests => 4 * @symbols; - use B qw(svref_2object GVf_IMPORTED_CV); --use POSIX @symbols; -+use Fcntl @symbols; - - # GVf_IMPORTED_CV should not be set on the original, but should be set on the - # imported GV. -@@ -29,7 +29,7 @@ - my ($ps, $ms); - { - no strict 'refs'; -- $ps = svref_2object(\*{"POSIX::$symbol"}); -+ $ps = svref_2object(\*{"Fcntl::$symbol"}); - $ms = svref_2object(\*{"::$symbol"}); - } - isa_ok($ps, 'B::GV'); ---- perl-5.10.0.orig/t/lib/h2ph.pht -+++ perl-5.10.0/t/lib/h2ph.pht -@@ -1,6 +1,6 @@ - require '_h2ph_pre.ph'; - --no warnings 'redefine'; -+no warnings qw(redefine misc); - - unless(defined(&SQUARE)) { - sub SQUARE { -@@ -22,6 +22,8 @@ - my($a,$b) = @_; - eval q((($a) > ($b) ? ($a) : ($b))); - }' unless defined(&MAX); -+ eval 'sub NOTTRUE () {0;}' unless defined(&NOTTRUE); -+ undef(&NOTTRUE) if defined(&NOTTRUE); - if(defined(&__SOME_UNIMPORTANT_PROPERTY)) { - eval 'sub MIN { - my($a,$b) = @_; -@@ -47,15 +49,17 @@ - } else { - eval 'sub WHATEVER () {1000;}' unless defined(&WHATEVER); - } -- require 'sys/socket.ph'; -- require 'sys/ioctl.ph'; -- eval { -- my(@REM); -- my(%INCD) = map { $INC{$_} => 1 } (grep { $_ eq "sys/fcntl.ph" } keys(%INC)); -- @REM = map { "$_/sys/fcntl.ph" } (grep { not exists($INCD{"$_/sys/fcntl.ph"}) and -f "$_/sys/fcntl.ph" } @INC); -- require "$REM[0]" if @REM; -- }; -- warn($@) if $@; -+ if(0) { -+ require 'sys/socket.ph'; -+ require 'sys/ioctl.ph'; -+ eval { -+ my(@REM); -+ my(%INCD) = map { $INC{$_} => 1 } (grep { $_ eq "sys/fcntl.ph" } keys(%INC)); -+ @REM = map { "$_/sys/fcntl.ph" } (grep { not exists($INCD{"$_/sys/fcntl.ph"}) and -f "$_/sys/fcntl.ph" } @INC); -+ require "$REM[0]" if @REM; -+ }; -+ warn($@) if $@; -+ } - eval("sub sun () { 0; }") unless defined(&sun); - eval("sub mon () { 1; }") unless defined(&mon); - eval("sub tue () { 2; }") unless defined(&tue); ---- perl-5.10.0.orig/t/lib/warnings/pp_ctl -+++ perl-5.10.0/t/lib/warnings/pp_ctl -@@ -222,18 +222,6 @@ - Use of uninitialized value $foo in print at (eval 1) line 1. - ######## - # pp_ctl.c --use warnings 'portable'; --eval 'use 5.6.1'; --EXPECT --v-string in use/require non-portable at (eval 1) line 2. --######## --# pp_ctl.c --use warnings 'portable'; --eval 'use v5.6.1'; --EXPECT --v-string in use/require non-portable at (eval 1) line 2. --######## --# pp_ctl.c - use warnings; - { - no warnings; -@@ -245,15 +233,3 @@ - use warnings; - eval 'use 5.006; use 5.10.0'; - EXPECT --######## --# pp_ctl.c --use warnings; --eval '{use 5.006;} use 5.10.0'; --EXPECT --v-string in use/require non-portable at (eval 1) line 2. --######## --# pp_ctl.c --use warnings; --eval 'use vars; use 5.10.0'; --EXPECT --v-string in use/require non-portable at (eval 1) line 2. ---- perl-5.10.0.orig/lib/h2ph.t -+++ perl-5.10.0/lib/h2ph.t -@@ -15,7 +15,7 @@ - exit 0; - } - --print "1..2\n"; -+print "1..4\n"; - - # quickly compare two text files - sub txt_compare { -@@ -32,6 +32,14 @@ - $ok = txt_compare("lib/h2ph.ph", "lib/h2ph.pht"); - print(($ok == 0 ? "" : "not "), "ok 2\n"); - -+# does the output compile? -+$ok = system($^X, "-I../lib", "lib/h2ph.pht"); -+print(($ok == 0 ? "" : "not "), "ok 3\n"); -+ -+# is the output warning free? -+$ok = system($^X, "-w", "-I../lib", "-e", '$SIG{__WARN__} = sub { die $_[0] }; require "lib/h2ph.pht"'); -+print(($ok == 0 ? "" : "not "), "ok 4\n"); -+ - # cleanup - should this be in an END block? - unlink("lib/h2ph.ph"); - unlink("_h2ph_pre.ph"); ---- perl-5.10.0.orig/lib/CGI.pm -+++ perl-5.10.0/lib/CGI.pm -@@ -4032,7 +4032,7 @@ - my $filename; - find_tempdir() unless -w $TMPDIRECTORY; - for (my $i = 0; $i < $MAXTRIES; $i++) { -- last if ! -f ($filename = sprintf("${TMPDIRECTORY}${SL}CGItemp%d",$sequence++)); -+ last if ! -f ($filename = sprintf("\%s${SL}CGItemp%d",$TMPDIRECTORY,$sequence++)); - } - # check that it is a more-or-less valid filename - return unless $filename =~ m!^([a-zA-Z0-9_ \'\":/.\$\\-]+)$!; -@@ -4109,6 +4109,8 @@ - hr; - } - -+ print end_html; -+ - =head1 ABSTRACT - - This perl library uses perl5 objects to make it easy to create Web -@@ -5388,7 +5390,7 @@ - If Apache's mod_rewrite is turned on, then the script name and path - info probably won't match the request that the user sent. Set - -rewrite=>1 (default) to return URLs that match what the user sent --(the original request URI). Set -rewrite->0 to return URLs that match -+(the original request URI). Set -rewrite=>0 to return URLs that match - the URL after mod_rewrite's rules have run. Because the additional - path information only makes sense in the context of the rewritten URL, - -rewrite is set to false when you request path info in the URL. ---- perl-5.10.0.orig/lib/Pod/Html.pm -+++ perl-5.10.0/lib/Pod/Html.pm -@@ -246,8 +246,8 @@ - my $Doindex; - - my $Backlink; --my($Listlevel, @Listend); --my $After_Lpar; -+my($Listlevel, @Listtype); -+my $ListNewTerm; - use vars qw($Ignore); # need to localize it later. - - my(%Items_Named, @Items_Seen); -@@ -286,7 +286,7 @@ - $Htmldir = ""; # The directory to which the html pages - # will (eventually) be written. - $Htmlfile = ""; # write to stdout by default -- $Htmlfileurl = "" ; # The url that other files would use to -+ $Htmlfileurl = ""; # The url that other files would use to - # refer to this file. This is only used - # to make relative urls that point to - # other files. -@@ -302,8 +302,9 @@ - $Doindex = 1; # non-zero if we should generate an index - $Backlink = ''; # text for "back to top" links - $Listlevel = 0; # current list depth -- @Listend = (); # the text to use to end the list. -- $After_Lpar = 0; # set to true after a par in an =item -+ @Listtype = (); # list types for open lists -+ $ListNewTerm = 0; # indicates new term in definition list; used -+ # to correctly open/close <dd> tags - $Ignore = 1; # whether or not to format text. we don't - # format text until we hit our first pod - # directive. -@@ -519,7 +520,6 @@ - - # now convert this file - my $after_item; # set to true after an =item -- my $need_dd = 0; - warn "Converting input file $Podfile\n" if $Verbose; - foreach my $i (0..$#poddata){ - $_ = $poddata[$i]; -@@ -527,7 +527,6 @@ - if (/^(=.*)/s) { # is it a pod directive? - $Ignore = 0; - $after_item = 0; -- $need_dd = 0; - $_ = $1; - if (/^=begin\s+(\S+)\s*(.*)/si) {# =begin - process_begin($1, $2); -@@ -543,12 +542,12 @@ - if (/^=(head[1-6])\s+(.*\S)/s) { # =head[1-6] heading - process_head( $1, $2, $Doindex && $index ); - } elsif (/^=item\s*(.*\S)?/sm) { # =item text -- $need_dd = process_item( $1 ); -+ process_item( $1 ); - $after_item = 1; - } elsif (/^=over\s*(.*)/) { # =over N - process_over(); - } elsif (/^=back/) { # =back -- process_back($need_dd); -+ process_back(); - } elsif (/^=for\s+(\S+)\s*(.*)/si) {# =for - process_for($1,$2); - } else { -@@ -563,8 +562,14 @@ - next if $Ignore; - next if @Begin_Stack && $Begin_Stack[-1] ne 'html'; - print HTML and next if @Begin_Stack && $Begin_Stack[-1] eq 'html'; -- print HTML "<dd>\n" if $need_dd; - my $text = $_; -+ -+ # Open tag for definition list as we have something to put in it -+ if( $ListNewTerm ){ -+ print HTML "<dd>\n"; -+ $ListNewTerm = 0; -+ } -+ - if( $text =~ /\A\s+/ ){ - process_pre( \$text ); - print HTML "<pre>\n$text</pre>\n"; -@@ -594,12 +599,8 @@ - } - ## end of experimental - -- if( $after_item ){ -- $After_Lpar = 1; -- } - print HTML "<p>$text</p>\n"; - } -- print HTML "</dd>\n" if $need_dd; - $after_item = 0; - } - } -@@ -1074,12 +1075,12 @@ - - # figure out what kind of item it is. - # Build string for referencing this item. -- if ( $txt =~ /\A=item\s+\*\s*(.*)\Z/s ) { # bullet -+ if ( $txt =~ /\A=item\s+\*\s*(.*)\Z/s ) { # bulleted list - next unless $1; - $item = $1; - } elsif( $txt =~ /\A=item\s+(?>\d+\.?)\s*(.*)\Z/s ) { # numbered list - $item = $1; -- } elsif( $txt =~ /\A=item\s+(.*)\Z/s ) { # plain item -+ } elsif( $txt =~ /\A=item\s+(.*)\Z/s ) { # definition list - $item = $1; - } else { - next; -@@ -1099,12 +1100,7 @@ - $tag =~ /head([1-6])/; - my $level = $1; - -- if( $Listlevel ){ -- warn "$0: $Podfile: unterminated list at =head in paragraph $Paragraph. ignoring.\n" unless $Quiet; -- while( $Listlevel ){ -- process_back(); -- } -- } -+ finish_list(); - - print HTML "<p>\n"; - if( $level == 1 && ! $Top ){ -@@ -1143,19 +1139,32 @@ - $name = anchorify($name); - print HTML qq{<a name="$name" class="item">}, process_text( \$otext ), '</a>'; - } -- print HTML "</strong>\n"; -+ print HTML "</strong>"; - undef( $EmittedItem ); - } - --sub emit_li { -+sub new_listitem { - my( $tag ) = @_; -+ # Open tag for definition list as we have something to put in it -+ if( ($tag ne 'dl') && ($ListNewTerm) ){ -+ print HTML "<dd>\n"; -+ $ListNewTerm = 0; -+ } -+ - if( $Items_Seen[$Listlevel]++ == 0 ){ -- push( @Listend, "</$tag>" ); -+ # start of new list -+ push( @Listtype, "$tag" ); - print HTML "<$tag>\n"; -+ } else { -+ # if this is not the first item, close the previous one -+ if ( $tag eq 'dl' ){ -+ print HTML "</dd>\n" unless $ListNewTerm; -+ } else { -+ print HTML "</li>\n"; -+ } - } -- my $emitted = $tag eq 'dl' ? 'dt' : 'li'; -- print HTML "<$emitted>"; -- return $emitted; -+ my $opentag = $tag eq 'dl' ? 'dt' : 'li'; -+ print HTML "<$opentag>"; - } - - # -@@ -1163,7 +1172,6 @@ - # - sub process_item { - my( $otext ) = @_; -- my $need_dd = 0; # set to 1 if we need a <dd></dd> after an item - - # lots of documents start a list without doing an =over. this is - # bad! but, the proper thing to do seems to be to just assume -@@ -1173,43 +1181,41 @@ - process_over(); - } - -- # formatting: insert a paragraph if preceding item has >1 paragraph -- if( $After_Lpar ){ -- print HTML $need_dd ? "</dd>\n" : "</li>\n" if $After_Lpar; -- $After_Lpar = 0; -- } -- - # remove formatting instructions from the text - my $text = depod( $otext ); - -- my $emitted; # the tag actually emitted, used for closing -- - # all the list variants: - if( $text =~ /\A\*/ ){ # bullet -- $emitted = emit_li( 'ul' ); -+ new_listitem( 'ul' ); - if ($text =~ /\A\*\s+(\S.*)\Z/s ) { # with additional text - my $tag = $1; - $otext =~ s/\A\*\s+//; - emit_item_tag( $otext, $tag, 1 ); -+ print HTML "\n"; - } - - } elsif( $text =~ /\A\d+/ ){ # numbered list -- $emitted = emit_li( 'ol' ); -+ new_listitem( 'ol' ); - if ($text =~ /\A(?>\d+\.?)\s*(\S.*)\Z/s ) { # with additional text - my $tag = $1; - $otext =~ s/\A\d+\.?\s*//; - emit_item_tag( $otext, $tag, 1 ); -+ print HTML "\n"; - } - - } else { # definition list -- $emitted = emit_li( 'dl' ); -+ # new_listitem takes care of opening the <dt> tag -+ new_listitem( 'dl' ); - if ($text =~ /\A(.+)\Z/s ){ # should have text - emit_item_tag( $otext, $text, 1 ); -+ # write the definition term and close <dt> tag -+ print HTML "</dt>\n"; - } -- $need_dd = 1; -+ # trigger opening a <dd> tag for the actual definition; will not -+ # happen if next paragraph is also a definition term (=item) -+ $ListNewTerm = 1; - } - print HTML "\n"; -- return $need_dd; - } - - # -@@ -1219,30 +1225,31 @@ - # start a new list - $Listlevel++; - push( @Items_Seen, 0 ); -- $After_Lpar = 0; - } - - # - # process_back - process a pod back tag and convert it to HTML format. - # - sub process_back { -- my $need_dd = shift; - if( $Listlevel == 0 ){ - warn "$0: $Podfile: unexpected =back directive in paragraph $Paragraph. ignoring.\n" unless $Quiet; - return; - } - -- # close off the list. note, I check to see if $Listend[$Listlevel] is -+ # close off the list. note, I check to see if $Listtype[$Listlevel] is - # defined because an =item directive may have never appeared and thus -- # $Listend[$Listlevel] may have never been initialized. -+ # $Listtype[$Listlevel] may have never been initialized. - $Listlevel--; -- if( defined $Listend[$Listlevel] ){ -- print HTML $need_dd ? "</dd>\n" : "</li>\n" if $After_Lpar; -- print HTML $Listend[$Listlevel]; -- print HTML "\n"; -- pop( @Listend ); -+ if( defined $Listtype[$Listlevel] ){ -+ if ( $Listtype[$Listlevel] eq 'dl' ){ -+ print HTML "</dd>\n" unless $ListNewTerm; -+ } else { -+ print HTML "</li>\n"; -+ } -+ print HTML "</$Listtype[$Listlevel]>\n"; -+ pop( @Listtype ); -+ $ListNewTerm = 0; - } -- $After_Lpar = 0; - - # clean up item count - pop( @Items_Seen ); -@@ -2025,9 +2032,11 @@ - # after the entire pod file has been read and converted. - # - sub finish_list { -- while ($Listlevel > 0) { -- print HTML "</dl>\n"; -- $Listlevel--; -+ if( $Listlevel ){ -+ warn "$0: $Podfile: unterminated list(s) at =head in paragraph $Paragraph. ignoring.\n" unless $Quiet; -+ while( $Listlevel ){ -+ process_back(); -+ } - } - } - ---- perl-5.10.0.orig/lib/Pod/Usage.pm -+++ perl-5.10.0/lib/Pod/Usage.pm -@@ -631,7 +631,7 @@ - $$self{PENDING}[-1][1] = $_; - } - } -- if ($$self{USAGE_SKIPPING}) { -+ if ($$self{USAGE_SKIPPING} && $element !~ m/^over-/) { - pop @{ $$self{PENDING} }; - } else { - $self->SUPER::_handle_element_end($element); ---- perl-5.10.0.orig/lib/Pod/Man.pm -+++ perl-5.10.0/lib/Pod/Man.pm -@@ -1,7 +1,6 @@ - # Pod::Man -- Convert POD data to formatted *roff input. --# $Id: Man.pm,v 2.16 2007-11-29 01:35:53 eagle Exp $ - # --# Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 -+# Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - # Russ Allbery <rra@stanford.edu> - # Substantial contributions by Sean Burke <sburke@cpan.org> - # -@@ -37,10 +36,9 @@ - - @ISA = qw(Pod::Simple); - --# Don't use the CVS revision as the version, since this module is also in Perl --# core and too many things could munge CVS magic revision strings. This --# number should ideally be the same as the CVS revision in podlators, however. --$VERSION = '2.16'; -+# Custom Debian version, see http://bugs.debian.org/500210 -+$VERSION = '2.18_01'; -+$VERSION = eval $VERSION; - - # Set the debugging level. If someone has inserted a debug function into this - # class already, use that. Otherwise, use any Pod::Simple debug function -@@ -73,7 +71,9 @@ - my $class = shift; - my $self = $class->SUPER::new; - -- # Tell Pod::Simple to handle S<> by automatically inserting . -+ # Tell Pod::Simple not to handle S<> by automatically inserting . -+ # Note that this messes up Unicode output by embedding explicit ISO 8859-1 -+ # non-breaking spaces that we have to clean up later. - $self->nbsp_for_S (1); - - # Tell Pod::Simple to keep whitespace whenever possible. -@@ -348,23 +348,22 @@ - my $convert = $$options{convert}; - my $literal = $$options{literal}; - -- # Normally we do character translation, but we won't even do that in -- # <Data> blocks. -- if ($convert) { -- if (ASCII) { -- $text =~ s/(\\|[^\x00-\x7F])/$ESCAPES{ord ($1)} || "X"/eg; -- } else { -- $text =~ s/(\\)/$ESCAPES{ord ($1)} || "X"/eg; -- } -- } -- - # Cleanup just tidies up a few things, telling *roff that the hyphens are -- # hard and putting a bit of space between consecutive underscores. -+ # hard, putting a bit of space between consecutive underscores, and -+ # escaping backslashes. Be careful not to mangle our character -+ # translations by doing this before processing character translation. - if ($cleanup) { -+ $text =~ s/\\/\\e/g; - $text =~ s/-/\\-/g; - $text =~ s/_(?=_)/_\\|/g; - } - -+ # Normally we do character translation, but we won't even do that in -+ # <Data> blocks or if UTF-8 output is desired. -+ if ($convert && !$$self{utf8} && ASCII) { -+ $text =~ s/([^\x00-\x7F])/$ESCAPES{ord ($1)} || "X"/eg; -+ } -+ - # Ensure that *roff doesn't convert literal quotes to UTF-8 single quotes, - # but don't mess up our accept escapes. - if ($literal) { -@@ -641,10 +640,10 @@ - # to Roman rather than the actual previous font when used in headings. - # troff output may still be broken, but at least we can fix nroff by - # just switching the font changes to the non-fixed versions. -- $nroff =~ s/\Q$$self{FONTS}{100}\E(.*)\\f[PR]/$1/g; -- $nroff =~ s/\Q$$self{FONTS}{101}\E(.*)\\f([PR])/\\fI$1\\f$2/g; -- $nroff =~ s/\Q$$self{FONTS}{110}\E(.*)\\f([PR])/\\fB$1\\f$2/g; -- $nroff =~ s/\Q$$self{FONTS}{111}\E(.*)\\f([PR])/\\f\(BI$1\\f$2/g; -+ $nroff =~ s/\Q$$self{FONTS}{100}\E(.*?)\\f[PR]/$1/g; -+ $nroff =~ s/\Q$$self{FONTS}{101}\E(.*?)\\f([PR])/\\fI$1\\f$2/g; -+ $nroff =~ s/\Q$$self{FONTS}{110}\E(.*?)\\f([PR])/\\fB$1\\f$2/g; -+ $nroff =~ s/\Q$$self{FONTS}{111}\E(.*?)\\f([PR])/\\f\(BI$1\\f$2/g; - - # Now finally output the command. Bother with .ie only if the nroff - # and troff output aren't the same. -@@ -710,6 +709,7 @@ - for (@output) { - my ($type, $entry) = @$_; - $entry =~ s/\"/\"\"/g; -+ $entry =~ s/\\/\\\\/g; - $self->output (".IX $type " . '"' . $entry . '"' . "\n"); - } - } -@@ -734,6 +734,19 @@ - return; - } - -+ # If we were given the utf8 option, set an output encoding on our file -+ # handle. Wrap in an eval in case we're using a version of Perl too old -+ # to understand this. -+ # -+ # This is evil because it changes the global state of a file handle that -+ # we may not own. However, we can't just blindly encode all output, since -+ # there may be a pre-applied output encoding (such as from PERL_UNICODE) -+ # and then we would double-encode. This seems to be the least bad -+ # approach. -+ if ($$self{utf8}) { -+ eval { binmode ($$self{output_fh}, ':encoding(UTF-8)') }; -+ } -+ - # Determine information for the preamble and then output it. - my ($name, $section); - if (defined $$self{name}) { -@@ -851,7 +864,7 @@ - # module, but this order is correct for both Solaris and Linux. - sub preamble { - my ($self, $name, $section, $date) = @_; -- my $preamble = $self->preamble_template; -+ my $preamble = $self->preamble_template (!$$self{utf8}); - - # Build the index line and make sure that it will be syntactically valid. - my $index = "$name $section"; -@@ -1025,7 +1038,7 @@ - sub cmd_head2 { - my ($self, $attrs, $text) = @_; - $text = $self->heading_common ($text, $$attrs{start_line}); -- $self->output ($self->switchquotes ('.Sh', $self->mapfonts ($text))); -+ $self->output ($self->switchquotes ('.SS', $self->mapfonts ($text))); - $self->outindex ('Subsection', $text); - $$self{NEEDSPACE} = 0; - return ''; -@@ -1273,7 +1286,7 @@ - # results are pretty poor. - # - # This only works in an ASCII world. What to do in a non-ASCII world is very --# unclear. -+# unclear -- hopefully we can assume UTF-8 and just leave well enough alone. - @ESCAPES{0xA0 .. 0xFF} = ( - "\\ ", undef, undef, undef, undef, undef, undef, undef, - undef, undef, undef, undef, undef, "\\%", undef, undef, -@@ -1294,27 +1307,18 @@ - "o\\*/" , "u\\*`", "u\\*'", "u\\*^", "u\\*:", "y\\*'", "\\*(th", "y\\*:", - ) if ASCII; - --# Make sure that at least this works even outside of ASCII. --$ESCAPES{ord("\\")} = "\\e"; -- - ############################################################################## - # Premable - ############################################################################## - - # The following is the static preamble which starts all *roff output we --# generate. It's completely static except for the font to use as a --# fixed-width font, which is designed by @CFONT@, and the left and right --# quotes to use for C<> text, designated by @LQOUTE@ and @RQUOTE@. -+# generate. Most is static except for the font to use as a fixed-width font, -+# which is designed by @CFONT@, and the left and right quotes to use for C<> -+# text, designated by @LQOUTE@ and @RQUOTE@. However, the second part, which -+# defines the accent marks, is only used if $escapes is set to true. - sub preamble_template { -- return <<'----END OF PREAMBLE----'; --.de Sh \" Subsection heading --.br --.if t .Sp --.ne 5 --.PP --\fB\\$1\fR --.PP --.. -+ my ($self, $accents) = @_; -+ my $preamble = <<'----END OF PREAMBLE----'; - .de Sp \" Vertical space (when we can't use .PP) - .if t .sp .5v - .if n .sp -@@ -1358,7 +1362,7 @@ - .el .ds Aq ' - .\" - .\" If the F register is turned on, we'll generate index entries on stderr for --.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index - .\" entries marked with X<> in POD. Of course, you'll have to process the - .\" output yourself in some meaningful fashion. - .ie \nF \{\ -@@ -1372,6 +1376,10 @@ - . de IX - .. - .\} -+----END OF PREAMBLE---- -+ -+ if ($accents) { -+ $preamble .= <<'----END OF PREAMBLE----' - .\" - .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). - .\" Fear. Run. Save yourself. No user-serviceable parts. -@@ -1436,6 +1444,8 @@ - .rm #[ #] #H #V #F C - ----END OF PREAMBLE---- - #`# for cperl-mode -+ } -+ return $preamble; - } - - ############################################################################## -@@ -1582,6 +1592,28 @@ - By default, section 1 will be used unless the file ends in .pm in which case - section 3 will be selected. - -+=item utf8 -+ -+By default, Pod::Man produces the most conservative possible *roff output -+to try to ensure that it will work with as many different *roff -+implementations as possible. Many *roff implementations cannot handle -+non-ASCII characters, so this means all non-ASCII characters are converted -+either to a *roff escape sequence that tries to create a properly accented -+character (at least for troff output) or to C<X>. -+ -+If this option is set, Pod::Man will instead output UTF-8. If your *roff -+implementation can handle it, this is the best output format to use and -+avoids corruption of documents containing non-ASCII characters. However, -+be warned that *roff source with literal UTF-8 characters is not supported -+by many implementations and may even result in segfaults and other bad -+behavior. -+ -+Be aware that, when using this option, the input encoding of your POD -+source must be properly declared unless it is US-ASCII or Latin-1. POD -+input without an C<=encoding> command will be assumed to be in Latin-1, -+and if it's actually in UTF-8, the output will be double-encoded. See -+L<perlpod(1)> for more information on the C<=encoding> command. -+ - =back - - The standard Pod::Simple method parse_file() takes one argument naming the -@@ -1617,14 +1649,11 @@ - - =head1 BUGS - --Eight-bit input data isn't handled at all well at present. The correct --approach would be to map EE<lt>E<gt> escapes to the appropriate UTF-8 --characters and then do a translation pass on the output according to the --user-specified output character set. Unfortunately, we can't send eight-bit --data directly to the output unless the user says this is okay, since some --vendor *roff implementations can't handle eight-bit data. If the *roff --implementation can, however, that's far superior to the current hacked --characters that only work under troff. -+Encoding handling assumes that PerlIO is available and does not work -+properly if it isn't since encode and decode do not work well in -+combination with PerlIO encoding layers. It's very unclear how to -+correctly handle this without PerlIO encoding layers. The C<utf8> option -+is therefore not supported unless Perl is built with PerlIO support. - - There is currently no way to turn off the guesswork that tries to format - unmarked text appropriately, and sometimes it isn't wanted (particularly -@@ -1651,6 +1680,13 @@ - - =head1 CAVEATS - -+If Pod::Man is given the C<utf8> option, the encoding of its output file -+handle will be forced to UTF-8 if possible, overriding any existing -+encoding. This will be done even if the file handle is not created by -+Pod::Man and was passed in from outside. This seems to be the only way to -+consistently enforce UTF-8-encoded output regardless of PERL_UNICODE and -+other settings. -+ - The handling of hyphens and em dashes is somewhat fragile, and one may get - the wrong one under some circumstances. This should only matter for - B<troff> output. ---- perl-5.10.0.orig/lib/Pod/t/htmlview.pod -+++ perl-5.10.0/lib/Pod/t/htmlview.pod -@@ -110,7 +110,7 @@ - - =head1 TESTING FOR AND BEGIN - --=for html <br> -+=for html <br /> - <p> - blah blah - </p> ---- perl-5.10.0.orig/lib/Pod/t/htmlview.t -+++ perl-5.10.0/lib/Pod/t/htmlview.t -@@ -86,17 +86,15 @@ - <h2><a name="new__"><code>new()</code></a></h2> - <p>Constructor method. Accepts the following config options:</p> - <dl> --<dt><strong><a name="foo" class="item">foo</a></strong> -+<dt><strong><a name="foo" class="item">foo</a></strong></dt> - - <dd> - <p>The foo item.</p> - </dd> --</li> --<dt><strong><a name="bar" class="item">bar</a></strong> -+<dt><strong><a name="bar" class="item">bar</a></strong></dt> - - <dd> - <p>The bar item.</p> --</dd> - <p>This is a list within a list</p> - <ul> - <li> -@@ -106,30 +104,36 @@ - <p>The waz item.</p> - </li> - </ul> --<dt><strong><a name="baz" class="item">baz</a></strong> -+</dd> -+<dt><strong><a name="baz" class="item">baz</a></strong></dt> - - <dd> - <p>The baz item.</p> - </dd> --</li> - </dl> - <p>Title on the same line as the =item + * bullets</p> - <ul> - <li><strong><a name="black_cat" class="item"><code>Black</code> Cat</a></strong> - -+</li> - <li><strong><a name="sat_on_the" class="item">Sat <em>on</em> the</a></strong> - -+</li> - <li><strong><a name="mat" class="item">Mat<!></a></strong> - -+</li> - </ul> - <p>Title on the same line as the =item + numerical bullets</p> - <ol> - <li><strong><a name="cat" class="item">Cat</a></strong> - -+</li> - <li><strong><a name="sat" class="item">Sat</a></strong> - -+</li> - <li><strong><a name="mat2" class="item">Mat</a></strong> - -+</li> - </ol> - <p>No bullets, no title</p> - <dl> -@@ -137,17 +141,14 @@ - <dd> - <p>Cat</p> - </dd> --</li> - <dt> - <dd> - <p>Sat</p> - </dd> --</li> - <dt> - <dd> - <p>Mat</p> - </dd> --</li> - </dl> - <p> - </p> -@@ -157,7 +158,7 @@ - </p> - <hr /> - <h1><a name="testing_for_and_begin">TESTING FOR AND BEGIN</a></h1> --<br> -+<br /> - <p> - blah blah - </p><p>intermediate text</p> ---- perl-5.10.0.orig/lib/Pod/t/htmllink.t -+++ perl-5.10.0/lib/Pod/t/htmllink.t -@@ -108,24 +108,21 @@ - <h2><a name="section_three">section three</a></h2> - <p>This is section three.</p> - <dl> --<dt><strong><a name="item1" class="item">item1</a></strong> -+<dt><strong><a name="item1" class="item">item1</a></strong></dt> - - <dd> - <p>This is item one.</p> - </dd> --</li> --<dt><strong><a name="item_2" class="item">item 2</a></strong> -+<dt><strong><a name="item_2" class="item">item 2</a></strong></dt> - - <dd> - <p>This is item two.</p> - </dd> --</li> --<dt><strong><a name="item_three" class="item">item three</a></strong> -+<dt><strong><a name="item_three" class="item">item three</a></strong></dt> - - <dd> - <p>This is item three.</p> - </dd> --</li> - </dl> - - </body> ---- perl-5.10.0.orig/lib/Pod/t/man.t -+++ perl-5.10.0/lib/Pod/t/man.t -@@ -17,7 +17,7 @@ - } - unshift (@INC, '../blib/lib'); - $| = 1; -- print "1..22\n"; -+ print "1..23\n"; - } - - END { -@@ -344,7 +344,7 @@ - ### - .SH "NAME" - "Stuff" (no guesswork) --.Sh "\s-1THINGS\s0" -+.SS "\s-1THINGS\s0" - .IX Subsection "THINGS" - Oboy, is this \*(C+ \*(L"fun\*(R" yet! (guesswork) - ### -@@ -431,3 +431,14 @@ - .IX Header "Quote escaping" - Don't escape `this' but do escape \f(CW\`this\*(Aq\fR (and don't surround it in quotes). - ### -+ -+### -+=head1 INDEX -+ -+Index entry matching a whitespace escape.X<\n> -+### -+.SH "INDEX" -+.IX Header "INDEX" -+Index entry matching a whitespace escape. -+.IX Xref "\\n" -+### ---- perl-5.10.0.orig/lib/Pod/t/basic.man -+++ perl-5.10.0/lib/Pod/t/basic.man -@@ -7,7 +7,7 @@ - .ie n .SH "This ""is"" a ""level 1"" heading" - .el .SH "This \f(CWis\fP a ``level 1'' heading" - .IX Header "This is a level 1 heading" --.Sh "``Level'' ""2 \fIheading\fP" -+.SS "``Level'' ""2 \fIheading\fP" - .IX Subsection "``Level'' ""2 heading" - \fILevel 3 \f(BIheading \f(BIwith \f(CB\*(C`weird \f(CBstuff "" (double quote)\f(CB\*(C'\f(BI\f(BI\fI\fR - .IX Subsection "Level 3 heading with weird stuff """" (double quote)" -@@ -20,7 +20,7 @@ - .el .SH "This \f(CWis\fP a ``level 1'' heading" - .IX Header "This is a level 1 heading" - Text. --.Sh "``Level'' 2 \fIheading\fP" -+.SS "``Level'' 2 \fIheading\fP" - .IX Subsection "``Level'' 2 heading" - Text. - .PP ---- perl-5.10.0.orig/lib/Object/Accessor.pm -+++ perl-5.10.0/lib/Object/Accessor.pm -@@ -621,6 +621,7 @@ - - See C<perldoc perlsub> for details. - -+=back - - =cut - ---- perl-5.10.0.orig/lib/Net/SMTP.pm -+++ perl-5.10.0/lib/Net/SMTP.pm -@@ -625,6 +625,7 @@ - - B<Debug> - Enable debugging information - -+B<Port> - Select a port on the remote host to connect to (default is 25) - - Example: - ---- perl-5.10.0.orig/lib/Net/Config.pm -+++ perl-5.10.0/lib/Net/Config.pm -@@ -57,9 +57,8 @@ - } - TRY_INTERNET_CONFIG - --my $file = __FILE__; -+my $file = '/etc/perl/Net/libnet.cfg'; - my $ref; --$file =~ s/Config.pm/libnet.cfg/; - if (-f $file) { - $ref = eval { local $SIG{__DIE__}; do $file }; - if (ref($ref) eq 'HASH') { -@@ -132,8 +131,8 @@ - C<Net::Config> holds configuration data for the modules in the libnet - distribution. During installation you will be asked for these values. - --The configuration data is held globally in a file in the perl installation --tree, but a user may override any of these values by providing their own. This -+The configuration data is held globally in C</etc/perl/Net/libnet.cfg>, -+but a user may override any of these values by providing their own. This - can be done by having a C<.libnetrc> file in their home directory. This file - should return a reference to a HASH containing the keys described below. - For example ---- perl-5.10.0.orig/lib/Net/hostent.t -+++ perl-5.10.0/lib/Net/hostent.t -@@ -16,6 +16,9 @@ - } - if ($^O eq 'MacOS' || ($^O eq 'irix' && $Config{osvers} == 5)) { - plan skip_all => "Test relies on resolution of localhost, fails on $^O ($Config{osvers})"; -+ } elsif (!-f '/etc/hosts') { -+ # /etc/hosts is not always present on buildds -+ plan skip_all => "Test requires /etc/hosts: not found"; - } - } - ---- perl-5.10.0.orig/lib/ExtUtils/CBuilder.pm -+++ perl-5.10.0/lib/ExtUtils/CBuilder.pm -@@ -36,6 +36,8 @@ - sunos Unix - cygwin Unix - os2 Unix -+ gnukfreebsd Unix -+ gnu Unix - - dos Windows - MSWin32 Windows ---- perl-5.10.0.orig/lib/ExtUtils/MM_Unix.pm -+++ perl-5.10.0/lib/ExtUtils/MM_Unix.pm -@@ -2088,16 +2088,16 @@ - my(@m); - - push @m, q{ --install :: all pure_install doc_install -+install :: pure_install doc_install - $(NOECHO) $(NOOP) - --install_perl :: all pure_perl_install doc_perl_install -+install_perl :: pure_perl_install doc_perl_install - $(NOECHO) $(NOOP) - --install_site :: all pure_site_install doc_site_install -+install_site :: pure_site_install doc_site_install - $(NOECHO) $(NOOP) - --install_vendor :: all pure_vendor_install doc_vendor_install -+install_vendor :: pure_vendor_install doc_vendor_install - $(NOECHO) $(NOOP) - - pure_install :: pure_$(INSTALLDIRS)_install -@@ -2112,10 +2112,8 @@ - doc__install : doc_site_install - $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site - --pure_perl_install :: -- $(NOECHO) $(MOD_INSTALL) \ -- read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ -- write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ -+pure_perl_install :: all -+ $(NOECHO) umask 022; $(MOD_INSTALL) \ - $(INST_LIB) $(DESTINSTALLPRIVLIB) \ - $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \ - $(INST_BIN) $(DESTINSTALLBIN) \ -@@ -2126,8 +2124,8 @@ - }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{ - - --pure_site_install :: -- $(NOECHO) $(MOD_INSTALL) \ -+pure_site_install :: all -+ $(NOECHO) umask 02; $(MOD_INSTALL) \ - read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ - write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ - $(INST_LIB) $(DESTINSTALLSITELIB) \ -@@ -2139,10 +2137,8 @@ - $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ - }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ - --pure_vendor_install :: -- $(NOECHO) $(MOD_INSTALL) \ -- read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ -- write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \ -+pure_vendor_install :: all -+ $(NOECHO) umask 022; $(MOD_INSTALL) \ - $(INST_LIB) $(DESTINSTALLVENDORLIB) \ - $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ - $(INST_BIN) $(DESTINSTALLVENDORBIN) \ -@@ -2150,38 +2146,20 @@ - $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ - $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) - --doc_perl_install :: -- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod -- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -- -$(NOECHO) $(DOC_INSTALL) \ -- "Module" "$(NAME)" \ -- "installed into" "$(INSTALLPRIVLIB)" \ -- LINKTYPE "$(LINKTYPE)" \ -- VERSION "$(VERSION)" \ -- EXE_FILES "$(EXE_FILES)" \ -- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ -+doc_perl_install :: all - --doc_site_install :: -- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod -- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -- -$(NOECHO) $(DOC_INSTALL) \ -+doc_site_install :: all -+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod -+ -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH) -+ -$(NOECHO) umask 02; $(DOC_INSTALL) \ - "Module" "$(NAME)" \ - "installed into" "$(INSTALLSITELIB)" \ - LINKTYPE "$(LINKTYPE)" \ - VERSION "$(VERSION)" \ - EXE_FILES "$(EXE_FILES)" \ -- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ -+ >> }.$self->catfile('$(DESTINSTALLSITEARCH)','perllocal.pod').q{ - --doc_vendor_install :: -- $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod -- -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -- -$(NOECHO) $(DOC_INSTALL) \ -- "Module" "$(NAME)" \ -- "installed into" "$(INSTALLVENDORLIB)" \ -- LINKTYPE "$(LINKTYPE)" \ -- VERSION "$(VERSION)" \ -- EXE_FILES "$(EXE_FILES)" \ -- >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ -+doc_vendor_install :: all - - }; - -@@ -2190,13 +2168,12 @@ - $(NOECHO) $(NOOP) - - uninstall_from_perldirs :: -- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ - - uninstall_from_sitedirs :: - $(NOECHO) $(UNINSTALL) }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ - - uninstall_from_vendordirs :: -- $(NOECHO) $(UNINSTALL) }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ -+ - }; - - join("",@m); -@@ -2474,7 +2451,7 @@ - ($lperl = $libperl) =~ s/\$\(A\)/$self->{LIB_EXT}/; - } - unless ($libperl && -f $lperl) { # Ilya's code... -- my $dir = $self->{PERL_SRC} || "$self->{PERL_ARCHLIB}/CORE"; -+ my $dir = $self->{PERL_SRC} || "/usr/lib"; - $dir = "$self->{PERL_ARCHLIB}/.." if $self->{UNINSTALLED_PERL}; - $libperl ||= "libperl$self->{LIB_EXT}"; - $libperl = "$dir/$libperl"; -@@ -3065,8 +3042,7 @@ - print STDERR " prefixify $var => $path\n" if $Verbose >= 2; - print STDERR " from $sprefix to $rprefix\n" if $Verbose >= 2; - -- if( $self->{ARGS}{PREFIX} && $self->file_name_is_absolute($path) && -- $path !~ s{^\Q$sprefix\E\b}{$rprefix}s ) -+ if( $path !~ s{^\Q$sprefix\E\b}{$rprefix}s && $self->{ARGS}{PREFIX} ) - { - - print STDERR " cannot prefix, using default.\n" if $Verbose >= 2; -@@ -3110,14 +3086,11 @@ - # pm_to_blib depends on then it can't depend on pm_to_blib - # else we have a dependency loop. - my $pm_dep; -- my $perlrun; - if( defined $self->{PM}{$target} ) { - $pm_dep = ''; -- $perlrun = 'PERLRUN'; - } - else { - $pm_dep = 'pm_to_blib'; -- $perlrun = 'PERLRUNINST'; - } - - $m .= <<MAKE_FRAG; -@@ -3126,7 +3099,7 @@ - \$(NOECHO) \$(NOOP) - - $target :: $plfile $pm_dep -- \$($perlrun) $plfile $target -+ \$(PERLRUNINST) $plfile $target - MAKE_FRAG - - } ---- perl-5.10.0.orig/lib/ExtUtils/MM_Any.pm -+++ perl-5.10.0/lib/ExtUtils/MM_Any.pm -@@ -685,8 +685,6 @@ - sub manifypods_target { - my($self) = shift; - -- my $man1pods = ''; -- my $man3pods = ''; - my $dependencies = ''; - - # populate manXpods & dependencies: -@@ -702,7 +700,7 @@ - foreach my $section (qw(1 3)) { - my $pods = $self->{"MAN${section}PODS"}; - push @man_cmds, $self->split_command(<<CMD, %$pods); -- \$(NOECHO) \$(POD2MAN) --section=$section --perm_rw=\$(PERM_RW) -+ \$(NOECHO) \$(POD2MAN) --section=\$(MAN${section}EXT) --perm_rw=\$(PERM_RW) - CMD - } - -@@ -1157,9 +1155,11 @@ - $self->{SITEPREFIX} ||= $sprefix; - $self->{VENDORPREFIX} ||= $vprefix; - -- # Lots of MM extension authors like to use $(PREFIX) so we -- # put something sensible in there no matter what. -- $self->{PREFIX} = '$('.uc $self->{INSTALLDIRS}.'PREFIX)'; -+ my $p = $self->{PREFIX} = $self->{PERLPREFIX}; -+ for my $t (qw/PERL SITE VENDOR/) -+ { -+ $self->{"${t}PREFIX"} =~ s!^\Q$p\E(?=/|$)!\$(PREFIX)!; -+ } - } - - my $arch = $Config{archname}; ---- perl-5.10.0.orig/lib/ExtUtils/Install.pm -+++ perl-5.10.0/lib/ExtUtils/Install.pm -@@ -453,7 +453,7 @@ - return 0; - } - --=item _mkpath($dir,$show,$mode,$verbose,$fake) -+=item _mkpath($dir,$show,$verbose,$fake) - - Wrapper around File::Path::mkpath() to handle errors. - -@@ -470,13 +470,13 @@ - =cut - - sub _mkpath { -- my ($dir,$show,$mode,$verbose,$fake)=@_; -+ my ($dir,$show,$verbose,$fake)=@_; - if ( $verbose && $verbose > 1 && ! -d $dir) { - $show= 1; -- printf "mkpath(%s,%d,%#o)\n", $dir, $show, $mode; -+ printf "mkpath(%s,%d)\n", $dir, $show; - } - if (!$fake) { -- if ( ! eval { File::Path::mkpath($dir,$show,$mode); 1 } ) { -+ if ( ! eval { File::Path::mkpath($dir,$show); 1 } ) { - _choke("Can't create '$dir'","$@"); - } - -@@ -644,7 +644,7 @@ - } - - foreach my $targetdir (sort keys %check_dirs) { -- _mkpath( $targetdir, 0, 0755, $verbose, $nonono ); -+ _mkpath( $targetdir, 0, $verbose, $nonono ); - } - foreach my $found (@found_files) { - my ($diff, $ffd, $origfile, $mode, $size, $atime, $mtime, -@@ -657,7 +657,7 @@ - $targetfile= _unlink_or_rename( $targetfile, 'tryhard', 'install' ) - unless $nonono; - } elsif ( ! -d $targetdir ) { -- _mkpath( $targetdir, 0, 0755, $verbose, $nonono ); -+ _mkpath( $targetdir, 0, $verbose, $nonono ); - } - print "Installing $targetfile\n"; - _copy( $sourcefile, $targetfile, $verbose, $nonono, ); -@@ -686,7 +686,7 @@ - - if ($pack{'write'}) { - $dir = install_rooted_dir(dirname($pack{'write'})); -- _mkpath( $dir, 0, 0755, $verbose, $nonono ); -+ _mkpath( $dir, 0, $verbose, $nonono ); - print "Writing $pack{'write'}\n"; - $packlist->write(install_rooted_file($pack{'write'})) unless $nonono; - } -@@ -984,7 +984,7 @@ - sub pm_to_blib { - my($fromto,$autodir,$pm_filter) = @_; - -- _mkpath($autodir,0,0755); -+ _mkpath($autodir,0); - while(my($from, $to) = each %$fromto) { - if( -f $to && -s $from == -s $to && -M $to < -M $from ) { - print "Skip $to (unchanged)\n"; -@@ -1007,7 +1007,7 @@ - # we wont try hard here. its too likely to mess things up. - forceunlink($to); - } else { -- _mkpath(dirname($to),0,0755); -+ _mkpath(dirname($to),0); - } - if ($need_filtering) { - run_filter($pm_filter, $from, $to); ---- perl-5.10.0.orig/lib/ExtUtils/t/INST.t -+++ perl-5.10.0/lib/ExtUtils/t/INST.t -@@ -65,9 +65,7 @@ - is( $mm->{NAME}, 'Big::Dummy', 'NAME' ); - is( $mm->{VERSION}, 0.01, 'VERSION' ); - --my $config_prefix = $Config{installprefixexp} || $Config{installprefix} || -- $Config{prefixexp} || $Config{prefix}; --is( $mm->{PERLPREFIX}, $config_prefix, 'PERLPREFIX' ); -+is( $mm->{PERLPREFIX}, '$(PREFIX)', 'PERLPREFIX' ); - - is( !!$mm->{PERL_CORE}, !!$ENV{PERL_CORE}, 'PERL_CORE' ); - ---- perl-5.10.0.orig/lib/ExtUtils/t/INST_PREFIX.t -+++ perl-5.10.0/lib/ExtUtils/t/INST_PREFIX.t -@@ -16,7 +16,7 @@ - } - - use strict; --use Test::More tests => 52; -+use Test::More tests => 47; - use MakeMaker::Test::Utils; - use MakeMaker::Test::Setup::BFD; - use ExtUtils::MakeMaker; -@@ -62,16 +62,16 @@ - Writing\ $Makefile\ for\ Big::Dummy\n - }x ); - --is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' ); -+#is( $mm->{PREFIX}, '$(SITEPREFIX)', 'PREFIX set based on INSTALLDIRS' ); - - isa_ok( $mm, 'ExtUtils::MakeMaker' ); - - is( $mm->{NAME}, 'Big::Dummy', 'NAME' ); - is( $mm->{VERSION}, 0.01, 'VERSION' ); - --foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) { -- unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ ); --} -+#foreach my $prefix (qw(PREFIX PERLPREFIX SITEPREFIX VENDORPREFIX)) { -+# unlike( $mm->{$prefix}, qr/\$\(PREFIX\)/ ); -+#} - - - my $PREFIX = File::Spec->catdir('foo', 'bar'); ---- perl-5.10.0.orig/lib/Getopt/Long.pm -+++ perl-5.10.0/lib/Getopt/Long.pm -@@ -1483,7 +1483,6 @@ - use overload - # Treat this object as an oridinary string for legacy API. - '""' => \&name, -- '0+' => sub { 0 }, - fallback => 1; - - 1; ---- perl-5.10.0.orig/lib/File/Temp.pm -+++ perl-5.10.0/lib/File/Temp.pm -@@ -890,7 +890,12 @@ - @{ $dirs_to_unlink{$$} } : () ); - foreach my $dir (@dirs) { - if (-d $dir) { -- rmtree($dir, $DEBUG, 0); -+ # Some versions of rmtree will abort if you attempt to remove -+ # the directory you are sitting in. We protect that and turn it -+ # into a warning. We do this because this occurs during -+ # cleanup and so can not be caught by the user. -+ eval { rmtree($dir, $DEBUG, 0); }; -+ warn $@ if ($@ && $^W); - } - } - -@@ -2234,6 +2239,12 @@ - through the same set of random file names and may well cause - themselves to give up if they exceed the number of retry attempts. - -+=head2 Directory removal -+ -+Note that if you have chdir'ed into the temporary directory and it is -+subsequently cleaned up in the END block, then you will get a warning -+from File::Path::rmtree(). -+ - =head2 BINMODE - - The file returned by File::Temp will have been opened in binary mode ---- perl-5.10.0.orig/lib/File/Find.pm -+++ perl-5.10.0/lib/File/Find.pm -@@ -84,7 +84,7 @@ - - Reports the name of a directory only AFTER all its entries - have been reported. Entry point C<finddepth()> is a shortcut for --specifying C<<{ bydepth => 1 }>> in the first argument of C<find()>. -+specifying C<{ bydepth =E<gt> 1 }> in the first argument of C<find()>. - - =item C<preprocess> - ---- perl-5.10.0.orig/lib/File/Path.pm -+++ perl-5.10.0/lib/File/Path.pm -@@ -316,10 +316,8 @@ - print "skipped $root\n" if $arg->{verbose}; - next ROOT_DIR; - } -- if (!chmod $perm | 0700, $root) { -- if ($Force_Writeable) { -- _error($arg, "cannot make directory writeable", $canon); -- } -+ if ($Force_Writeable && !chmod $perm | 0700, $root) { -+ _error($arg, "cannot make directory writeable", $canon); - } - print "rmdir $root\n" if $arg->{verbose}; - if (rmdir $root) { -@@ -328,7 +326,7 @@ - } - else { - _error($arg, "cannot remove directory", $canon); -- if (!chmod($perm, ($Is_VMS ? VMS::Filespec::fileify($root) : $root)) -+ if ($Force_Writeable && !chmod($perm, ($Is_VMS ? VMS::Filespec::fileify($root) : $root)) - ) { - _error($arg, sprintf("cannot restore permissions to 0%o",$perm), $canon); - } -@@ -351,10 +349,8 @@ - } - - my $nperm = $perm & 07777 | 0600; -- if ($nperm != $perm and not chmod $nperm, $root) { -- if ($Force_Writeable) { -- _error($arg, "cannot make file writeable", $canon); -- } -+ if ($Force_Writeable && $nperm != $perm and not chmod $nperm, $root) { -+ _error($arg, "cannot make file writeable", $canon); - } - print "unlink $canon\n" if $arg->{verbose}; - # delete all versions under VMS ---- perl-5.10.0.orig/lib/Math/Complex.t -+++ perl-5.10.0/lib/Math/Complex.t -@@ -34,6 +34,11 @@ - } # cos(), sin(), cosh(), sinh(). The division - # of doubles is the current suspect. - -+my %skip; -+if (`uname -m` =~ /^arm/) { -+ $skip{$_} = 'non-IEEE fp rounding' for 289, 509; -+} -+ - while (<DATA>) { - s/^\s+//; - next if $_ eq '' || /^\#/; -@@ -563,7 +568,9 @@ - - print "# @_\n"; - -- if ("$got" eq "$expected" -+ if ($skip{$test}) { -+ print "ok $test # skipped: $skip{$test}\n"; -+ } elsif ("$got" eq "$expected" - || - ($expected =~ /^-?\d/ && $got == $expected) - || ---- perl-5.10.0.orig/lib/Math/BigFloat.pm -+++ perl-5.10.0/lib/Math/BigFloat.pm -@@ -2142,8 +2142,9 @@ - # But we need at least $scale digits, so calculate how many are missing - my $shift = $scale - $digits; - -- # That should never happen (we take care of integer guesses above) -- # $shift = 0 if $shift < 0; -+ # This happens if the input had enough digits -+ # (we take care of integer guesses above) -+ $shift = 0 if $shift < 0; - - # Multiply in steps of 100, by shifting left two times the "missing" digits - my $s2 = $shift * 2; ---- perl-5.10.0.orig/lib/Math/BigInt/CalcEmu.pm -+++ perl-5.10.0/lib/Math/BigInt/CalcEmu.pm -@@ -295,7 +295,7 @@ - =head1 DESCRIPTION - - Contains routines that emulate low-level math functions in BigInt, e.g. --optional routines the low-level math package does not provide on it's own. -+optional routines the low-level math package does not provide on its own. - - Will be loaded on demand and called automatically by BigInt. - ---- perl-5.10.0.orig/lib/Math/BigInt/t/mbimbf.t -+++ perl-5.10.0/lib/Math/BigInt/t/mbimbf.t -@@ -32,7 +32,7 @@ - print "# INC = @INC\n"; - - plan tests => 684 -- + 23; # own tests -+ + 26; # own tests - } - - use Math::BigInt 1.70; -@@ -100,3 +100,9 @@ - $x = $x->blog(Math::BigInt->new(10)); - - ok ($x,2); -+ -+for my $i (80,88,100) { -+ $x = Math::BigFloat->new("1." . ("0" x $i) . "1"); -+ $x = $x->bsqrt; -+ ok ($x, 1); -+} ---- perl-5.10.0.orig/lib/CPAN/FirstTime.pm -+++ perl-5.10.0/lib/CPAN/FirstTime.pm -@@ -940,7 +940,7 @@ - } - - if (!$matcher or 'makepl_arg make_arg' =~ /$matcher/) { -- my_dflt_prompt(makepl_arg => "", $matcher); -+ my_dflt_prompt(makepl_arg => "INSTALLDIRS=site", $matcher); - my_dflt_prompt(make_arg => "", $matcher); - } - ---- perl-5.10.0.orig/lib/CPAN/HandleConfig.pm -+++ perl-5.10.0/lib/CPAN/HandleConfig.pm -@@ -526,7 +526,7 @@ - $configpm = $INC{"CPAN/MyConfig.pm"}; - $redo++; - } else { -- my($path_to_cpan) = File::Basename::dirname($INC{"CPAN.pm"}); -+ my($path_to_cpan) = '/etc/perl'; - my($configpmdir) = File::Spec->catdir($path_to_cpan,"CPAN"); - my($configpmtest) = File::Spec->catfile($configpmdir,"Config.pm"); - my $inc_key; ---- perl-5.10.0.orig/lib/Module/Build.pm -+++ perl-5.10.0/lib/Module/Build.pm -@@ -49,6 +49,8 @@ - cygwin Unix - os2 Unix - interix Unix -+ gnukfreebsd Unix -+ gnu Unix - - dos Windows - MSWin32 Windows ---- perl-5.10.0.orig/lib/Module/Build/Base.pm -+++ perl-5.10.0/lib/Module/Build/Base.pm -@@ -2552,7 +2552,7 @@ - foreach my $file (keys %$files) { - # Pod::Simple based parsers only support one document per instance. - # This is expected to change in a future version (Pod::Simple > 3.03). -- my $parser = Pod::Man->new( section => 1 ); # binaries go in section 1 -+ my $parser = Pod::Man->new( section => '1p' ); # binaries go in section 1p - my $manpage = $self->man1page_name( $file ) . '.' . - $self->config( 'man1ext' ); - my $outfile = File::Spec->catfile($mandir, $manpage); -@@ -2576,7 +2576,7 @@ - while (my ($file, $relfile) = each %$files) { - # Pod::Simple based parsers only support one document per instance. - # This is expected to change in a future version (Pod::Simple > 3.03). -- my $parser = Pod::Man->new( section => 3 ); # libraries go in section 3 -+ my $parser = Pod::Man->new( section => '3pm' ); # libraries go in section 3pm - my $manpage = $self->man3page_name( $relfile ) . '.' . - $self->config( 'man3ext' ); - my $outfile = File::Spec->catfile( $mandir, $manpage); ---- perl-5.10.0.orig/lib/Archive/Tar.pm -+++ perl-5.10.0/lib/Archive/Tar.pm -@@ -261,6 +261,13 @@ - $self->_error( qq[Cannot read compressed format in tar-mode] ); - return; - } -+ -+ ### size is < HEAD, which means a corrupted file, as the minimum -+ ### length is _at least_ HEAD -+ if (length $chunk != HEAD) { -+ $self->_error( qq[Cannot read enough bytes from the tarfile] ); -+ return; -+ } - } - - ### if we can't read in all bytes... ### -@@ -561,26 +568,61 @@ - - ### it's a relative path ### - } else { -- my $cwd = (defined $self->{cwd} ? $self->{cwd} : cwd()); -+ my $cwd = (ref $self and defined $self->{cwd}) -+ ? $self->{cwd} -+ : cwd(); - - my @dirs = defined $alt - ? File::Spec->splitdir( $dirs ) # It's a local-OS path - : File::Spec::Unix->splitdir( $dirs ); # it's UNIX-style, likely - # straight from the tarball - -- ### paths that leave the current directory are not allowed under -- ### strict mode, so only allow it if a user tells us to do this. - if( not defined $alt and -- not $INSECURE_EXTRACT_MODE and -- grep { $_ eq '..' } @dirs -- ) { -- $self->_error( -- q[Entry ']. $entry->full_path .q[' is attempting to leave the ]. -- q[current working directory. Not extracting under SECURE ]. -- q[EXTRACT MODE] -- ); -- return; -- } -+ not $INSECURE_EXTRACT_MODE -+ ) { -+ -+ ### paths that leave the current directory are not allowed under -+ ### strict mode, so only allow it if a user tells us to do this. -+ if( grep { $_ eq '..' } @dirs ) { -+ -+ $self->_error( -+ q[Entry ']. $entry->full_path .q[' is attempting to leave ]. -+ q[the current working directory. Not extracting under ]. -+ q[SECURE EXTRACT MODE] -+ ); -+ return; -+ } -+ -+ ### the archive may be asking us to extract into a symlink. This -+ ### is not sane and a possible security issue, as outlined here: -+ ### https://rt.cpan.org/Ticket/Display.html?id=30380 -+ ### https://bugzilla.redhat.com/show_bug.cgi?id=295021 -+ ### https://issues.rpath.com/browse/RPL-1716 -+ my $full_path = $cwd; -+ for my $d ( @dirs ) { -+ $full_path = File::Spec->catdir( $full_path, $d ); -+ -+ ### we've already checked this one, and it's safe. Move on. -+ next if ref $self and $self->{_link_cache}->{$full_path}; -+ -+ if( -l $full_path ) { -+ my $to = readlink $full_path; -+ my $diag = "symlinked directory ($full_path => $to)"; -+ -+ $self->_error( -+ q[Entry ']. $entry->full_path .q[' is attempting to ]. -+ qq[extract to a $diag. This is considered a security ]. -+ q[vulnerability and not allowed under SECURE EXTRACT ]. -+ q[MODE] -+ ); -+ return; -+ } -+ -+ ### XXX keep a cache if possible, so the stats become cheaper: -+ $self->{_link_cache}->{$full_path} = 1 if ref $self; -+ } -+ } -+ - - ### '.' is the directory delimiter, of which the first one has to - ### be escaped/changed. -@@ -622,7 +664,8 @@ - unless ( -d _ ) { - eval { File::Path::mkpath( $dir, 0, 0777 ) }; - if( $@ ) { -- $self->_error( qq[Could not create directory '$dir': $@] ); -+ my $fp = $entry->full_path; -+ $self->_error(qq[Could not create directory '$dir' for '$fp': $@]); - return; - } - -@@ -672,8 +715,13 @@ - $self->_make_special_file( $entry, $full ) or return; - } - -- utime time, $entry->mtime - TIME_OFFSET, $full or -- $self->_error( qq[Could not update timestamp] ); -+ ### only update the timestamp if it's not a symlink; that will change the -+ ### timestamp of the original. This addresses bug #33669: Could not update -+ ### timestamp warning on symlinks -+ if( not -l $full ) { -+ utime time, $entry->mtime - TIME_OFFSET, $full or -+ $self->_error( qq[Could not update timestamp] ); -+ } - - if( $CHOWN && CAN_CHOWN ) { - chown $entry->uid, $entry->gid, $full or -@@ -707,8 +755,8 @@ - or $fail++; - } - -- $err = qq[Making symbolink link from '] . $entry->linkname . -- qq[' to '$file' failed] if $fail; -+ $err = qq[Making symbolic link '$file' to '] . -+ $entry->linkname .q[' failed] if $fail; - - } elsif ( $entry->is_hardlink ) { - my $fail; ---- perl-5.10.0.orig/lib/Archive/Extract.pm -+++ perl-5.10.0/lib/Archive/Extract.pm -@@ -550,12 +550,19 @@ - $self->bin_tar, '-tf', '-'] : - [$self->bin_tar, '-tf', $self->archive]; - -- ### run the command ### -- my $buffer = ''; -- unless( scalar run( command => $cmd, -+ ### run the command -+ ### newer versions of 'tar' (1.21 and up) now print record size -+ ### to STDERR as well if v OR t is given (used to be both). This -+ ### is a 'feature' according to the changelog, so we must now only -+ ### inspect STDOUT, otherwise, failures like these occur: -+ ### nntp.perl.org/group/perl.cpan.testers/2009/02/msg3230366.html -+ my $buffer = ''; -+ my @out = run( command => $cmd, - buffer => \$buffer, -- verbose => $DEBUG ) -- ) { -+ verbose => $DEBUG ); -+ -+ ### command was unsuccessful -+ unless( $out[0] ) { - return $self->_error(loc( - "Error listing contents of archive '%1': %2", - $self->archive, $buffer )); -@@ -578,7 +585,8 @@ - \s+ [\d,.]+ \s tape \s blocks - |x ? $1 : $_); - -- } split $/, $buffer; -+ ### only STDOUT, see above -+ } map { split $/, $_ } @{$out[3]}; - - ### store the files that are in the archive ### - $self->files(\@files); ---- perl-5.10.0.orig/lib/Archive/Tar/File.pm -+++ perl-5.10.0/lib/Archive/Tar/File.pm -@@ -445,7 +445,14 @@ - - ### don't know why this one is different from the one we /write/ ### - substr ($raw, 148, 8) = " "; -- return unpack ("%16C*", $raw) == $self->chksum ? 1 : 0; -+ -+ ### bug #43513: [PATCH] Accept wrong checksums from SunOS and HP-UX tar -+ ### like GNU tar does. See here for details: -+ ### http://www.gnu.org/software/tar/manual/tar.html#SEC139 -+ ### so we do both a signed AND unsigned validate. if one succeeds, that's -+ ### good enough -+ return ( (unpack ("%16C*", $raw) == $self->chksum) -+ or (unpack ("%16c*", $raw) == $self->chksum)) ? 1 : 0; - } - - =head2 has_content ---- perl-5.10.0.orig/lib/Archive/Tar/t/04_resolved_issues.t -+++ perl-5.10.0/lib/Archive/Tar/t/04_resolved_issues.t -@@ -159,3 +159,27 @@ - - - } -+ -+### return error properly on corrupted archives -+### Addresses RT #44680: Improve error reporting on short corrupted archives -+{ ok( 1, "Testing bug 44680" ); -+ -+ { ### XXX whitebox test -- resetting the error string -+ no warnings 'once'; -+ $Archive::Tar::error = ""; -+ } -+ -+ my $src = File::Spec->catfile( qw[src short b] ); -+ my $tar = $Class->new; -+ -+ isa_ok( $tar, $Class, " Object" ); -+ -+ -+ ### we quell the error on STDERR -+ local $Archive::Tar::WARN = 0; -+ -+ ok( !$tar->read( $src ), " No files in the corrupted archive" ); -+ like( $tar->error, qr/enough bytes/, -+ " Expected error reported" ); -+} -+ ---- perl-5.10.0.orig/ext/POSIX/POSIX.pm -+++ perl-5.10.0/ext/POSIX/POSIX.pm -@@ -13,7 +13,9 @@ - use Fcntl qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK F_SETFD - F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK O_ACCMODE O_APPEND - O_CREAT O_EXCL O_NOCTTY O_NONBLOCK O_RDONLY O_RDWR O_TRUNC -- O_WRONLY); -+ O_WRONLY SEEK_CUR SEEK_END SEEK_SET -+ S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISGID S_ISUID -+ S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR); - - # Grandfather old foo_h form to new :foo_h form - my $loaded; ---- perl-5.10.0.orig/ext/POSIX/Makefile.PL -+++ perl-5.10.0/ext/POSIX/Makefile.PL -@@ -48,13 +48,11 @@ - MAX_INPUT MB_LEN_MAX MSG_CTRUNC MSG_DONTROUTE MSG_EOR MSG_OOB MSG_PEEK - MSG_TRUNC MSG_WAITALL NAME_MAX NCCS NGROUPS_MAX NOFLSH OPEN_MAX OPOST - PARENB PARMRK PARODD PATH_MAX PIPE_BUF RAND_MAX R_OK SCHAR_MAX -- SCHAR_MIN SEEK_CUR SEEK_END SEEK_SET SHRT_MAX SHRT_MIN SIGABRT SIGALRM -+ SCHAR_MIN SHRT_MAX SHRT_MIN SIGABRT SIGALRM - SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT - SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN SIGTTOU - SIGUSR1 SIGUSR2 SIG_BLOCK SIG_SETMASK SIG_UNBLOCK SSIZE_MAX -- STDERR_FILENO STDIN_FILENO STDOUT_FILENO STREAM_MAX -- S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISGID S_ISUID -- S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR TCIFLUSH TCIOFF -+ STDERR_FILENO STDIN_FILENO STDOUT_FILENO STREAM_MAX TCIFLUSH TCIOFF - TCIOFLUSH TCION TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW - TMP_MAX TOSTOP TZNAME_MAX VEOF VEOL VERASE VINTR VKILL VMIN VQUIT - VSTART VSTOP VSUSP VTIME WNOHANG WUNTRACED W_OK X_OK ---- perl-5.10.0.orig/ext/NDBM_File/NDBM_File.xs -+++ perl-5.10.0/ext/NDBM_File/NDBM_File.xs -@@ -1,7 +1,7 @@ - #include "EXTERN.h" - #include "perl.h" - #include "XSUB.h" --#include <ndbm.h> -+#include <gdbm-ndbm.h> - - typedef struct { - DBM * dbp ; ---- perl-5.10.0.orig/ext/NDBM_File/hints/linux.pl -+++ perl-5.10.0/ext/NDBM_File/hints/linux.pl -@@ -2,7 +2,4 @@ - # Prefer gdbm to avoid the broken ndbm in some distributions - # (no null key support) - # Jonathan Stowe <gellyfish@gellyfish.com> --use Config; --use ExtUtils::Liblist; --($self->{LIBS}) = ExtUtils::Liblist->ext('-lgdbm -lgdbm_compat') -- if $Config{libs} =~ /(?:^|\s)-lgdbm(?:\s|$)/; -+$self->{LIBS} = ['-lgdbm_compat']; ---- perl-5.10.0.orig/ext/Data/Dumper/Dumper.pm -+++ perl-5.10.0/ext/Data/Dumper/Dumper.pm -@@ -65,7 +65,7 @@ - - croak "Usage: PACKAGE->new(ARRAYREF, [ARRAYREF])" - unless (defined($v) && (ref($v) eq 'ARRAY')); -- $n = [] unless (defined($n) && (ref($v) eq 'ARRAY')); -+ $n = [] unless (defined($n) && (ref($n) eq 'ARRAY')); - - my($s) = { - level => 0, # current recursive depth ---- perl-5.10.0.orig/ext/Compress/Raw/Zlib/config.in -+++ perl-5.10.0/ext/Compress/Raw/Zlib/config.in -@@ -16,9 +16,9 @@ - # Setting the Gzip OS Code - # - --BUILD_ZLIB = True --INCLUDE = ./zlib-src --LIB = ./zlib-src -+BUILD_ZLIB = False -+INCLUDE = /usr/include -+LIB = /usr/lib - - OLD_ZLIB = False - GZIP_OS_CODE = AUTO_DETECT ---- perl-5.10.0.orig/ext/Compress/Raw/Zlib/Zlib.xs -+++ perl-5.10.0/ext/Compress/Raw/Zlib/Zlib.xs -@@ -1295,7 +1295,7 @@ - - if (s->stream.avail_out == 0 ) { - /* out of space in the output buffer so make it bigger */ -- Sv_Grow(output, SvLEN(output) + bufinc) ; -+ Sv_Grow(output, SvLEN(output) + bufinc +1) ; - cur_length += increment ; - s->stream.next_out = (Bytef*) SvPVbyte_nolen(output) + cur_length ; - increment = bufinc ; ---- perl-5.10.0.orig/ext/Errno/Errno_pm.PL -+++ perl-5.10.0/ext/Errno/Errno_pm.PL -@@ -337,13 +337,8 @@ - package Errno; - our (\@EXPORT_OK,\%EXPORT_TAGS,\@ISA,\$VERSION,\%errno,\$AUTOLOAD); - use Exporter (); --use Config; - use strict; - --"\$Config{'archname'}-\$Config{'osvers'}" eq --"$Config{'archname'}-$Config{'osvers'}" or -- die "Errno architecture ($Config{'archname'}-$Config{'osvers'}) does not match executable architecture (\$Config{'archname'}-\$Config{'osvers'})"; -- - \$VERSION = "$VERSION"; - \$VERSION = eval \$VERSION; - \@ISA = qw(Exporter); ---- perl-5.10.0.orig/ext/ODBM_File/hints/linux.pl -+++ perl-5.10.0/ext/ODBM_File/hints/linux.pl -@@ -1,8 +1,2 @@ - # uses GDBM dbm compatibility feature - at least on SuSE 8.0 --$self->{LIBS} = ['-lgdbm']; -- --# Debian/Ubuntu have /usr/lib/libgdbm_compat.so.3* but not this file, --# so linking may fail --if (-e '/usr/lib/libgdbm_compat.so' or -e '/usr/lib64/libgdbm_compat.so') { -- $self->{LIBS}->[0] .= ' -lgdbm_compat'; --} -+$self->{LIBS} = ['-lgdbm_compat']; ---- perl-5.10.0.orig/ext/B/B/Deparse.pm -+++ perl-5.10.0/ext/B/B/Deparse.pm -@@ -1456,7 +1456,6 @@ - my %ignored_hints = ( - 'open<' => 1, - 'open>' => 1, -- 'v_string' => 1, - ); - - sub declare_hinthash { ---- perl-5.10.0.orig/ext/DB_File/version.c -+++ perl-5.10.0/ext/DB_File/version.c -@@ -48,12 +48,14 @@ - - (void)db_version(&Major, &Minor, &Patch) ; - -+#ifndef DEBIAN - /* Check that the versions of db.h and libdb.a are the same */ - if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR - || Patch != DB_VERSION_PATCH) - croak("\nDB_File needs compatible versions of libdb & db.h\n\tyou have db.h version %d.%d.%d and libdb version %d.%d.%d\n", - DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, - Major, Minor, Patch) ; -+#endif /* DEBIAN */ - - /* check that libdb is recent enough -- we need 2.3.4 or greater */ - if (Major == 2 && (Minor < 3 || (Minor == 3 && Patch < 4))) ---- perl-5.10.0.orig/ext/Sys/Syslog/Syslog.pm -+++ perl-5.10.0/ext/Sys/Syslog/Syslog.pm -@@ -741,7 +741,7 @@ - - my $rin = ''; - vec($rin, fileno(SYSLOG), 1) = 1; -- my $ret = select $rin, undef, $rin, 0.25; -+ my $ret = select $rin, undef, $rin, 0; - return ($ret ? 0 : 1); - } - ---- perl-5.10.0.orig/ext/Sys/Syslog/t/syslog.t -+++ perl-5.10.0/ext/Sys/Syslog/t/syslog.t -@@ -189,6 +189,9 @@ - skip "the 'unix' mechanism works, so the tests will likely fail with the 'stream' mechanism", 10 - if grep {/unix/} @passed; - -+ skip "can't connect to Unix socket: _PATH_LOG unavailable", 10 -+ unless -e Sys::Syslog::_PATH_LOG(); -+ - # setlogsock() with "stream" and an undef path - $r = eval { setlogsock("stream", undef ) } || ''; - is( $@, '', "setlogsock() called, with 'stream' and an undef path" ); ---- perl-5.10.0.orig/ext/PerlIO/via/via.xs -+++ perl-5.10.0/ext/PerlIO/via/via.xs -@@ -89,7 +89,7 @@ - if (!s->fh) { - GV *gv = newGVgen(HvNAME_get(s->stash)); - GvIOp(gv) = newIO(); -- s->fh = newRV_noinc((SV *) gv); -+ s->fh = newRV((SV *) gv); - s->io = GvIOp(gv); - } - IoIFP(s->io) = PerlIONext(f); ---- perl-5.10.0.orig/ext/Time/HiRes/t/HiRes.t -+++ perl-5.10.0/ext/Time/HiRes/t/HiRes.t -@@ -68,7 +68,7 @@ - - my $have_alarm = $Config{d_alarm}; - my $have_fork = $Config{d_fork}; --my $waitfor = 180; # 30-45 seconds is normal (load affects this). -+my $waitfor = 300; # 30-45 seconds is normal (load affects this). - my $timer_pid; - my $TheEnd; - ---- perl-5.10.0.orig/ext/IO/lib/IO/Socket/INET.pm -+++ perl-5.10.0/ext/IO/lib/IO/Socket/INET.pm -@@ -27,7 +27,7 @@ - ); - my %proto_number; - $proto_number{tcp} = Socket::IPPROTO_TCP() if defined &Socket::IPPROTO_TCP; --$proto_number{upd} = Socket::IPPROTO_UDP() if defined &Socket::IPPROTO_UDP; -+$proto_number{udp} = Socket::IPPROTO_UDP() if defined &Socket::IPPROTO_UDP; - $proto_number{icmp} = Socket::IPPROTO_ICMP() if defined &Socket::IPPROTO_ICMP; - my %proto_name = reverse %proto_number; - ---- perl-5.10.0.orig/ext/Encode/Encode.pm -+++ perl-5.10.0/ext/Encode/Encode.pm -@@ -734,7 +734,7 @@ - - =back - --=Head2 coderef for CHECK -+=head2 coderef for CHECK - - As of Encode 2.12 CHECK can also be a code reference which takes the - ord value of unmapped caharacter as an argument and returns a string ---- perl-5.10.0.orig/ext/Encode/bin/enc2xs -+++ perl-5.10.0/ext/Encode/bin/enc2xs -@@ -924,11 +924,11 @@ - sub find_e2x{ - eval { require File::Find; }; - my (@inc, %e2x_dir); -- for my $inc (@INC){ -+ for my $inc (grep -d, @INC){ - push @inc, $inc unless $inc eq '.'; #skip current dir - } - File::Find::find( -- sub { -+ { wanted => sub { - my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, - $atime,$mtime,$ctime,$blksize,$blocks) - = lstat($_) or return; -@@ -938,7 +938,7 @@ - $e2x_dir{$File::Find::dir} ||= $mtime; - } - return; -- }, @inc); -+ }, follow => 1}, @inc); - warn join("\n", keys %e2x_dir), "\n"; - for my $d (sort {$e2x_dir{$a} <=> $e2x_dir{$b}} keys %e2x_dir){ - $_E2X = $d; -@@ -1005,7 +1005,7 @@ - $LocalMod{$enc} ||= $mod; - } - }; -- File::Find::find({wanted => $wanted}, @INC); -+ File::Find::find({wanted => $wanted, follow => 1}, grep -d, @INC); - $_ModLines = ""; - for my $enc ( sort keys %LocalMod ) { - $_ModLines .= ---- perl-5.10.0.orig/utils/h2xs.PL -+++ perl-5.10.0/utils/h2xs.PL -@@ -901,6 +901,7 @@ - - # Remove C and C++ comments - $src =~ s#/\*[^*]*\*+([^/*][^*]*\*+)*/|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#$2#gs; -+ $src =~ s#//.*$##gm; - - while ($src =~ /\benum\s*([\w_]*)\s*\{\s([^}]+)\}/gsc) { - my ($enum_name, $enum_body) = ($1, $2); -@@ -912,7 +913,7 @@ - my ($key, $declared_val) = $item =~ /(\w+)\s*(?:=\s*(.*))?/; - $val = defined($declared_val) && length($declared_val) ? $declared_val : 1 + $val; - $seen_define{$key} = $val; -- $const_names{$key}++; -+ $const_names{$key} = { name => $key, macro => 1 }; - } - } # while (...) - } # if (!defined $opt_e or $opt_e) -@@ -1076,7 +1077,14 @@ - } - } - } --my @const_names = sort keys %const_names; -+my (@const_specs, @const_names); -+ -+for (sort(keys(%const_names))) { -+ my $v = $const_names{$_}; -+ -+ push(@const_specs, ref($v) ? $v : $_); -+ push(@const_names, $_); -+} - - -d $modpmdir || mkpath([$modpmdir], 0, 0775); - open(PM, ">$modpmname") || die "Can't create $ext$modpname/$modpmname: $!\n"; -@@ -1465,7 +1473,7 @@ - XS_FILE => $xsfallback, - DEFAULT_TYPE => $opt_t, - NAME => $module, -- NAMES => \@const_names, -+ NAMES => \@const_specs, - ); - print XS "#include \"$constscfname\"\n"; - } -@@ -1950,7 +1958,7 @@ - XS_FILE => $constsxsfname, - DEFAULT_TYPE => $opt_t, - NAME => $module, -- NAMES => \@const_names, -+ NAMES => \@const_specs, - ); - print PL <<"END"; - if (eval {require ExtUtils::Constant; 1}) { ---- perl-5.10.0.orig/utils/perlivp.PL -+++ perl-5.10.0/utils/perlivp.PL -@@ -142,6 +142,7 @@ - my $INC_there = 0; - foreach (@INC) { - next if $_ eq '.'; # skip -d test here -+ next if m|/usr/local|; - if ($^O eq 'MacOS') { - next if $_ eq ':'; # skip -d test here - next if $_ eq 'Dev:Pseudo:'; # why is this in @INC? ---- perl-5.10.0.orig/utils/h2ph.PL -+++ perl-5.10.0/utils/h2ph.PL -@@ -85,7 +85,7 @@ - } - - my ($t, $tab, %curargs, $new, $eval_index, $dir, $name, $args, $outfile); --my ($incl, $incl_type, $next); -+my ($incl, $incl_type, $incl_quote, $next); - while (defined (my $file = next_file())) { - if (-l $file and -d $file) { - link_if_possible($file) if ($opt_l); -@@ -123,7 +123,7 @@ - - print OUT - "require '_h2ph_pre.ph';\n\n", -- "no warnings 'redefine';\n\n"; -+ "no warnings qw(redefine misc);\n\n"; - - while (defined (local $_ = next_line($file))) { - if (s/^\s*\#\s*//) { -@@ -186,9 +186,10 @@ - print OUT $t,"unless(defined(\&$name)) {\n sub $name () {\t",$new,";}\n}\n"; - } - } -- } elsif (/^(include|import|include_next)\s*[<\"](.*)[>\"]/) { -+ } elsif (/^(include|import|include_next)\s*([<\"])(.*)[>\"]/) { - $incl_type = $1; -- $incl = $2; -+ $incl_quote = $2; -+ $incl = $3; - if (($incl_type eq 'include_next') || - ($opt_e && exists($bad_file{$incl}))) { - $incl =~ s/\.h$/.ph/; -@@ -221,6 +222,10 @@ - "warn(\$\@) if \$\@;\n"); - } else { - $incl =~ s/\.h$/.ph/; -+ # copy the prefix in the quote syntax (#include "x.h") case -+ if ($incl !~ m|/| && $incl_quote eq q{"} && $file =~ m|^(.*)/|) { -+ $incl = "$1/$incl"; -+ } - print OUT $t,"require '$incl';\n"; - } - } elsif (/^ifdef\s+(\w+)/) { -@@ -724,8 +729,13 @@ - $line .= <HEADER>; - } - -- if ($line =~ /^#\s*include\s+<(.*?)>/) { -- push(@ARGV, $1) unless $Is_converted{$1}; -+ if ($line =~ /^#\s*include\s+([<"])(.*?)[>"]/) { -+ my ($delimiter, $new_file) = ($1, $2); -+ # copy the prefix in the quote syntax (#include "x.h") case -+ if ($delimiter eq q{"} && $file =~ m|^(.*)/|) { -+ $new_file = "$1/$new_file"; -+ } -+ push(@ARGV, $new_file) unless $Is_converted{$new_file}; - } - } - close HEADER; -@@ -733,7 +743,7 @@ - - - # Determine include directories; $Config{usrinc} should be enough for (all --# non-GCC?) C compilers, but gcc uses an additional include directory. -+# non-GCC?) C compilers, but gcc uses additional include directories. - sub inc_dirs - { - my $from_gcc = `LC_ALL=C $Config{cc} -v 2>&1`; -@@ -745,7 +755,7 @@ - $from_gcc = ''; - }; - }; -- length($from_gcc) ? ($from_gcc, $Config{usrinc}) : ($Config{usrinc}); -+ length($from_gcc) ? ($from_gcc, $from_gcc . "-fixed", $Config{usrinc}) : ($Config{usrinc}); - } - - ---- perl-5.10.0.orig/pod/perldoc.pod -+++ perl-5.10.0/pod/perldoc.pod -@@ -222,6 +222,10 @@ - even more descriptive output than the C<-v> switch does -- the higher the - number, the more it emits. - -+=head1 SEE ALSO -+ -+L<perlpod>, L<Pod::Perldoc> -+ - =head1 AUTHOR - - Current maintainer: Sean M. Burke, <sburke@cpan.org> ---- perl-5.10.0.orig/pod/perlapi.pod -+++ perl-5.10.0/pod/perlapi.pod -@@ -1193,6 +1193,50 @@ - - =back - -+=head1 Functions in file perl.h -+ -+ -+=over 8 -+ -+=item PERL_SYS_INIT -+X<PERL_SYS_INIT> -+ -+Provides system-specific tune up of the C runtime environment necessary to -+run Perl interpreters. This should be called only once, before creating -+any Perl interpreters. -+ -+ void PERL_SYS_INIT(int argc, char** argv) -+ -+=for hackers -+Found in file perl.h -+ -+=item PERL_SYS_INIT3 -+X<PERL_SYS_INIT3> -+ -+Provides system-specific tune up of the C runtime environment necessary to -+run Perl interpreters. This should be called only once, before creating -+any Perl interpreters. -+ -+ void PERL_SYS_INIT3(int argc, char** argv, char** env) -+ -+=for hackers -+Found in file perl.h -+ -+=item PERL_SYS_TERM -+X<PERL_SYS_TERM> -+ -+Provides system-specific clean up of the C runtime environment after -+running Perl interpreters. This should be called only once, after -+freeing any remaining Perl interpreters. -+ -+ void PERL_SYS_TERM() -+ -+=for hackers -+Found in file perl.h -+ -+ -+=back -+ - =head1 Functions in file pp_ctl.c - - ---- perl-5.10.0.orig/pod/perlpodspec.pod -+++ perl-5.10.0/pod/perlpodspec.pod -@@ -338,7 +338,7 @@ - before any non-US-ASCII data!), declares that this document is - encoded in the encoding I<encodingname>, which must be - an encoding name that L<Encoding> recognizes. (Encoding's list --of supported encodings, in L<Encoding::Supported>, is useful here.) -+of supported encodings, in L<Encode::Supported>, is useful here.) - If the Pod parser cannot decode the declared encoding, it - should emit a warning and may abort parsing the document - altogether. ---- perl-5.10.0.orig/pod/pod2man.PL -+++ perl-5.10.0/pod/pod2man.PL -@@ -36,9 +36,9 @@ - print OUT <<'!NO!SUBS!'; - - # pod2man -- Convert POD data to formatted *roff input. --# $Id: pod2man.PL,v 1.16 2006-01-21 01:53:55 eagle Exp $ - # --# Copyright 1999, 2000, 2001, 2004, 2006 by Russ Allbery <rra@stanford.edu> -+# Copyright 1999, 2000, 2001, 2004, 2006, 2008 -+# Russ Allbery <rra@stanford.edu> - # - # This program is free software; you may redistribute it and/or modify it - # under the same terms as Perl itself. -@@ -66,7 +66,7 @@ - GetOptions (\%options, 'section|s=s', 'release|r:s', 'center|c=s', - 'date|d=s', 'fixed=s', 'fixedbold=s', 'fixeditalic=s', - 'fixedbolditalic=s', 'name|n=s', 'official|o', 'quotes|q=s', -- 'lax|l', 'help|h', 'verbose|v') or exit 1; -+ 'lax|l', 'help|h', 'verbose|v', 'utf8|u') or exit 1; - pod2usage (0) if $options{help}; - - # Official sets --center, but don't override things explicitly set. -@@ -104,7 +104,7 @@ - [B<--center>=I<string>] [B<--date>=I<string>] [B<--fixed>=I<font>] - [B<--fixedbold>=I<font>] [B<--fixeditalic>=I<font>] - [B<--fixedbolditalic>=I<font>] [B<--name>=I<name>] [B<--official>] --[B<--lax>] [B<--quotes>=I<quotes>] [B<--verbose>] -+[B<--lax>] [B<--quotes>=I<quotes>] [B<--utf8>] [B<--verbose>] - [I<input> [I<output>] ...] - - pod2man B<--help> -@@ -243,6 +243,28 @@ - By default, section 1 will be used unless the file ends in .pm in which case - section 3 will be selected. - -+=item B<-u>, B<--utf8> -+ -+By default, B<pod2man> produces the most conservative possible *roff -+output to try to ensure that it will work with as many different *roff -+implementations as possible. Many *roff implementations cannot handle -+non-ASCII characters, so this means all non-ASCII characters are converted -+either to a *roff escape sequence that tries to create a properly accented -+character (at least for troff output) or to C<X>. -+ -+This option says to instead output literal UTF-8 characters. If your -+*roff implementation can handle it, this is the best output format to use -+and avoids corruption of documents containing non-ASCII characters. -+However, be warned that *roff source with literal UTF-8 characters is not -+supported by many implementations and may even result in segfaults and -+other bad behavior. -+ -+Be aware that, when using this option, the input encoding of your POD -+source must be properly declared unless it is US-ASCII or Latin-1. POD -+input without an C<=encoding> command will be assumed to be in Latin-1, -+and if it's actually in UTF-8, the output will be double-encoded. See -+L<perlpod(1)> for more information on the C<=encoding> command. -+ - =item B<-v>, B<--verbose> - - Print out the name of each output file as it is being generated. -@@ -518,8 +540,8 @@ - - =head1 SEE ALSO - --L<Pod::Man>, L<Pod::Simple>, L<man(1)>, L<nroff(1)>, L<podchecker(1)>, --L<troff(1)>, L<man(7)> -+L<Pod::Man>, L<Pod::Simple>, L<man(1)>, L<nroff(1)>, L<perlpod(1)>, -+L<podchecker(1)>, L<troff(1)>, L<man(7)> - - The man page documenting the an macro set may be L<man(5)> instead of - L<man(7)> on your system. -@@ -537,7 +559,8 @@ - - =head1 COPYRIGHT AND LICENSE - --Copyright 1999, 2000, 2001, 2004, 2006 by Russ Allbery <rra@stanford.edu>. -+Copyright 1999, 2000, 2001, 2004, 2006, 2008 Russ Allbery -+<rra@stanford.edu>. - - This program is free software; you may redistribute it and/or modify it - under the same terms as Perl itself. ---- perl-5.10.0.orig/pod/perlre.pod -+++ perl-5.10.0/pod/perlre.pod -@@ -102,7 +102,7 @@ - - =head3 Metacharacters - --The patterns used in Perl pattern matching evolved from the ones supplied in -+The patterns used in Perl pattern matching evolved from those supplied in - the Version 8 regex routines. (The routines are derived - (distantly) from Henry Spencer's freely redistributable reimplementation - of the V8 routines.) See L<Version 8 Regular Expressions> for ---- perl-5.10.0.orig/pod/perlxs.pod -+++ perl-5.10.0/pod/perlxs.pod -@@ -1212,6 +1212,12 @@ - - VERSIONCHECK: DISABLE - -+Note that if the version of the PM module is an NV (a floating point -+number), it will be stringified with a possible loss of precision -+(currently chopping to nine decimal places) so that it may not match -+the version of the XS module anymore. Quoting the $VERSION declaration -+to make it a string is recommended if long version numbers are used. -+ - =head2 The PROTOTYPES: Keyword - - The PROTOTYPES: keyword corresponds to B<xsubpp>'s C<-prototypes> and ---- perl-5.10.0.orig/pod/perlembed.pod -+++ perl-5.10.0/pod/perlembed.pod -@@ -196,11 +196,20 @@ - - Notice that we don't use the C<env> pointer. Normally handed to - C<perl_parse> as its final argument, C<env> here is replaced by --C<NULL>, which means that the current environment will be used. The macros --PERL_SYS_INIT3() and PERL_SYS_TERM() provide system-specific tune up --of the C runtime environment necessary to run Perl interpreters; since --PERL_SYS_INIT3() may change C<env>, it may be more appropriate to provide --C<env> as an argument to perl_parse(). -+C<NULL>, which means that the current environment will be used. -+ -+The macros PERL_SYS_INIT3() and PERL_SYS_TERM() provide system-specific -+tune up of the C runtime environment necessary to run Perl interpreters; -+they should only be called once regardless of how many interpreters you -+create or destroy. Call PERL_SYS_INIT3() before you create your first -+interpreter, and PERL_SYS_TERM() after you free your last interpreter. -+ -+Since PERL_SYS_INIT3() may change C<env>, it may be more appropriate to -+provide C<env> as an argument to perl_parse(). -+ -+Also notice that no matter what arguments you pass to perl_parse(), -+PERL_SYS_INIT3() must be invoked on the C main() argc, argv and env and -+only once. - - Now compile this program (I'll call it I<interp.c>) into an executable: - ---- perl-5.10.0.orig/pod/perlfunc.pod -+++ perl-5.10.0/pod/perlfunc.pod -@@ -1556,6 +1556,10 @@ - is implemented. It is also Perl's exception trapping mechanism, where - the die operator is used to raise exceptions. - -+If you want to trap errors when loading an XS module, some problems with -+the binary interface (such as Perl version skew) may be fatal even with -+C<eval> unless C<$ENV{PERL_DL_NONLAZY}> is set. See L<perlrun>. -+ - If the code to be executed doesn't vary, you may use the eval-BLOCK - form to trap run-time errors without incurring the penalty of - recompiling each time. The error, if any, is still returned in C<$@>. -@@ -5214,7 +5218,7 @@ - limited control of the sort. Its rather blunt control of the - underlying algorithm may not persist into future Perls, but the - ability to characterize the input or output in implementation --independent ways quite probably will. See L<sort>. -+independent ways quite probably will. See L<the sort pragma|sort>. - - Examples: - -@@ -6855,22 +6859,16 @@ - - Specifying VERSION as a literal of the form v5.6.1 should generally be - avoided, because it leads to misleading error messages under earlier --versions of Perl that do not support this syntax. The equivalent numeric --version should be used instead. -- --Alternatively, you can use a numeric version C<use 5.006> followed by a --v-string version like C<use v5.10.1>, to avoid the unintuitive C<use --5.010_001>. (older perl versions fail gracefully at the first C<use>, --later perl versions understand the v-string syntax in the second). -+versions of Perl (that is, prior to 5.6.0) that do not support this -+syntax. The equivalent numeric version should be used instead. - - use v5.6.1; # compile time version check - use 5.6.1; # ditto - use 5.006_001; # ditto; preferred for backwards compatibility -- use 5.006; use 5.6.1; # ditto, for compatibility and readability - - This is often useful if you need to check the current Perl version before --C<use>ing library modules that have changed in incompatible ways from --older versions of Perl. (We try not to do this more than we have to.) -+C<use>ing library modules that won't work with older versions of Perl. -+(We try not to do this more than we have to.) - - Also, if the specified perl version is greater than or equal to 5.9.5, - C<use VERSION> will also load the C<feature> pragma and enable all ---- perl-5.10.0.orig/pod/perldiag.pod -+++ perl-5.10.0/pod/perldiag.pod -@@ -4935,18 +4935,6 @@ - (W misc) The version string contains invalid characters at the end, which - are being ignored. - --=item v-string in use/require is non-portable -- --(W portable) The use of v-strings is non-portable to older, pre-5.6, Perls. --If you want your scripts to be backward portable, use the floating --point version number: for example, instead of C<use 5.6.1> say --C<use 5.006_001>. This of course won't make older Perls suddenly start --understanding newer features, but at least they will show a sensible --error message indicating the required minimum version. -- --This warning is suppressed if the C<use 5.x.y> is preceded by a --C<use 5.006> (see C<use VERSION> in L<perlfunc/use>). -- - =item Warning: something's wrong - - (W) You passed warn() an empty string (the equivalent of C<warn "">) or ---- perl-5.10.0.orig/pod/perllol.pod -+++ perl-5.10.0/pod/perllol.pod -@@ -276,7 +276,7 @@ - - @newAoA = map { [ @{ $AoA[$_] } [ 7..12 ] ] } 4 .. 8; - --Although if your manager accused of seeking job security (or rapid -+Although if your manager accused you of seeking job security (or rapid - insecurity) through inscrutable code, it would be hard to argue. :-) - If I were you, I'd put that in a function: - - |