X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_sys.c;h=43b3f66dd71a275ace30306d4adb90d63894206c;hb=c6b85e5d3668a89cd3bf3dfeefdf7162018b7166;hp=9329ffdb401a11a27a7c2289e8fbb448bc636482;hpb=22d4bb9ccb8701e68f9243547d7e3a3c55f70908;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_sys.c b/pp_sys.c index 9329ffd..43b3f66 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -54,25 +54,10 @@ extern "C" int syscall(unsigned long,...); # include #endif -#if defined(HAS_SOCKET) && !defined(VMS) /* VMS handles sockets via vmsish.h */ -# include -# if defined(USE_SOCKS) && defined(I_SOCKS) -# include -# endif -# ifdef I_NETDB -# include -# endif -# ifndef ENOTSOCK -# ifdef I_NET_ERRNO -# include -# endif -# endif -#endif - #ifdef HAS_SELECT -#ifdef I_SYS_SELECT -#include -#endif +# ifdef I_SYS_SELECT +# include +# endif #endif /* XXX Configure test needed. @@ -142,7 +127,7 @@ extern int h_errno; # include # endif -# if defined(HAS_FCNTL) && defined(F_SETLK) && defined (F_SETLKW) +# if defined(HAS_FCNTL) && defined(FCNTL_CAN_LOCK) # define FLOCK fcntl_emulate_flock # define FCNTL_EMULATE_FLOCK # else /* no flock() or fcntl(F_SETLK,...) */ @@ -794,9 +779,12 @@ PP(pp_tie) POPSTACK; if (sv_isobject(sv)) { sv_unmagic(varsv, how); - /* Croak if a self-tie is attempted */ - if (varsv == SvRV(sv)) - Perl_croak(aTHX_ "Self-ties are not supported"); + /* Croak if a self-tie on an aggregate is attempted. */ + if (varsv == SvRV(sv) && + (SvTYPE(sv) == SVt_PVAV || + SvTYPE(sv) == SVt_PVHV)) + Perl_croak(aTHX_ + "Self-ties of arrays and hashes are not supported"); sv_magic(varsv, sv, how, Nullch, 0); } LEAVE; @@ -2546,9 +2534,15 @@ PP(pp_stat) if (PL_op->op_flags & OPf_REF) { gv = cGVOP_gv; - if (PL_op->op_type == OP_LSTAT && ckWARN(WARN_IO)) - Perl_warner(aTHX_ WARN_IO, + if (PL_op->op_type == OP_LSTAT) { + if (PL_laststype != OP_LSTAT) + Perl_croak(aTHX_ "The stat preceding lstat() wasn't an lstat"); + if (ckWARN(WARN_IO) && gv != PL_defgv) + Perl_warner(aTHX_ WARN_IO, "lstat() on filehandle %s", GvENAME(gv)); + /* Perl_my_lstat (-l) croak's on filehandle, why warn here? */ + } + do_fstat: if (gv != PL_defgv) { PL_laststype = OP_STAT;