summaryrefslogtreecommitdiff
path: root/pp_sys.c
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1997-03-26 07:04:34 +1200
committerChip Salzenberg <chip@atlantic.net>1997-03-26 07:04:34 +1200
commit54310121b442974721115f93666234a200f5c7e4 (patch)
tree99b5953030ddf062d77206ac0cf8ac967e7cbd93 /pp_sys.c
parentd03407ef6d8e534a414e9ce92c6c5c8dab664a40 (diff)
downloadperl-54310121b442974721115f93666234a200f5c7e4.tar.gz
[inseperable changes from patch from perl-5.003_95 to perl-5.003_86]
[editor's note: this commit was prepared manually so may differ in minor ways to other inseperable changes commits] CORE LANGUAGE CHANGES Title: "Support $ENV{PERL5OPT}" From: Chip Salzenberg Files: perl.c pod/perldiag.pod pod/perldelta.pod pod/perlrun.pod Title: "Implement void context, in which C<wantarray> is undef" From: Chip Salzenberg Files: cop.h doop.c dump.c global.sym gv.c op.c op.h perl.c pod/perlcall.pod pod/perldelta.pod pod/perlfunc.pod pod/perlguts.pod pod/perlsub.pod pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h Title: "Don't look up &AUTOLOAD in @ISA when calling plain function" From: Chip Salzenberg Files: global.sym gv.c lib/Text/ParseWords.pm pod/perldelta.pod pp_hot.c proto.h t/op/method.t Title: "Allow closures to be constant subroutines" From: Chip Salzenberg Files: op.c Title: "Make C<scalar(reverse)> mean C<scalar(reverse $_)>" From: Chip Salzenberg Files: pp.c Title: "Fix lexical suicide from C<my $x = $x> in sub" From: Chip Salzenberg Files: op.c Title: "Make "Unrecog. char." fatal, and update its doc" From: Chip Salzenberg Files: pod/perldiag.pod toke.c CORE PORTABILITY Title: "safefree() mismatch" From: Roderick Schertler Msg-ID: <21338.859653381@eeyore.ibcinc.com> Date: Sat, 29 Mar 1997 11:36:21 -0500 Files: util.c (applied based on p5p patch as commit id 9b9b466fb02dc96c81439bafbb3b2da55238cfd2) Title: "Win32 update (seven patches)" From: Gurusamy Sarathy and Nick Ing-Simmons Files: EXTERN.h MANIFEST win32/Makefile win32/perl.mak win32/perl.rc win32/perldll.mak win32/makedef.pl win32/modules.mak win32/win32io.c win32/bin/pl2bat.bat OTHER CORE CHANGES Title: "Report PERL* environment variables in -V and perlbug" From: Chip Salzenberg Files: perl.c utils/perlbug.PL Title: "Typo in perl.c: Printing NO_EMBED for perl -V" From: Gisle Aas Msg-ID: <199703301922.VAA13509@furubotn.sn.no> Date: Sun, 30 Mar 1997 21:22:11 +0200 Files: perl.c (applied based on p5p patch as commit id b6c639e4b1912ad03b9b10ba9518d96bd0a6cfaf) Title: "Don't let C<$var = $var> untaint $var" From: Chip Salzenberg Files: pp_hot.c pp_sys.c sv.h t/op/taint.t Title: "Fix autoviv bug in C<my $x; ++$x->{KEY}>" From: Chip Salzenberg Files: pp_hot.c Title: "Re: 5.004's new srand() default seed" From: Hallvard B Furuseth Msg-ID: <199703302219.AAA20998@bombur2.uio.no> Date: Mon, 31 Mar 1997 00:19:13 +0200 (MET DST) Files: pp.c (applied based on p5p patch as commit id d7d933a26349f945f93b2f0dbf85b773d8ca3219) Title: "Re: embedded perl and top_env problem " From: Gurusamy Sarathy Msg-ID: <199703280031.TAA05711@aatma.engin.umich.edu> Date: Thu, 27 Mar 1997 19:31:42 -0500 Files: gv.c interp.sym perl.c perl.h pp_ctl.c pp_sys.c scope.h util.c (applied based on p5p patch as commit id f289f7d2518e7a8a82114282e774adf50fa6ce85) Title: "Define and use new macro: boolSV()" From: Tim Bunce Files: gv.c lib/ExtUtils/typemap os2/os2.c pp.c pp_hot.c pp_sys.c sv.c sv.h universal.c vms/vms.c Title: "Re: strict @F" From: Hallvard B Furuseth Msg-ID: <199703252110.WAA16038@bombur2.uio.no> Date: Tue, 25 Mar 1997 22:10:33 +0100 (MET) Files: toke.c (applied based on p5p patch as commit id dfd44a5c8c8dd4c001c595debfe73d011a96d844) Title: "Try harder to identify errors at EOF" From: Chip Salzenberg Files: toke.c Title: "Minor string change in toke.c: 'bareword'" From: lvirden@cas.org Msg-ID: <1997Mar27.130247.1911552@hmivax.humgen.upenn.edu> Date: Thu, 27 Mar 1997 13:02:46 -0500 (EST) Files: toke.c (applied based on p5p patch as commit id 9b56c8f8085a9e773ad87c6b3c1d0b5e39dbc348) Title: "Improve diagnostic on \r in program text" From: Chip Salzenberg Files: pod/perldiag.pod toke.c Title: "Make Sock_size_t typedef work right" From: Chip Salzenberg Files: perl.h pp_sys.c LIBRARY AND EXTENSIONS Title: "New module constant.pm" From: Tom Phoenix Files: MANIFEST lib/constant.pm op.c pp.c t/pragma/constant.t Title: "Remove chat2" From: Chip Salzenberg Files: MANIFEST lib/chat2.inter lib/chat2.pl Title: "Include CGI.pm 2.32" From: Chip Salzenberg Files: MANIFEST eg/cgi/* lib/CGI.pm lib/CGI/Apache.pm lib/CGI/Carp.pm lib/CGI/Fast.pm lib/CGI/Push.pm lib/CGI/Switch.pm UTILITIES Title: "Tom C's Pod::Html and html tools, as of 30 March 97" From: Chip Salzenberg Files: MANIFEST installhtml lib/Pod/Html.pm pod/pod2html.PL Title: "Fix path bugs in installhtml" From: Robin Barker <rmb1@cise.npl.co.uk> Msg-ID: <3180.9703270906@tempest.cise.npl.co.uk> Date: Thu, 27 Mar 97 09:06:14 GMT Files: installhtml Title: "Make perlbug say that it's only for core Perl bugs" From: Chip Salzenberg Files: utils/perlbug.PL DOCUMENTATION Title: "Document autouse and constant; update diagnostics" From: Chip Salzenberg Files: pod/perldelta.pod Title: "Suggest to upgraders that they try '-w' again" From: Hallvard B Furuseth Msg-ID: <199703251901.UAA15982@bombur2.uio.no> Date: Tue, 25 Mar 1997 20:01:26 +0100 (MET) Files: pod/perldelta.pod (applied based on p5p patch as commit id 4176c059b9ba6b022e99c44270434a5c3e415b73) Title: "Improve and update documentation of constant subs" From: Tom Phoenix <rootbeer@teleport.com> Msg-ID: <Pine.GSO.3.96.970331122546.14185C-100000@kelly.teleport.com> Date: Mon, 31 Mar 1997 13:05:54 -0800 (PST) Files: pod/perlsub.pod Title: "Improve documentation of C<return>" From: Chip Salzenberg Files: pod/perlfunc.pod pod/perlsub.pod Title: "perlfunc.pod patch" From: Gisle Aas Msg-ID: <199703262159.WAA17531@furubotn.sn.no> Date: Wed, 26 Mar 1997 22:59:23 +0100 Files: pod/perlfunc.pod (applied based on p5p patch as commit id 35a731fcbcd7860eb497d6598f3f77b8746319c4) Title: "Use 'while (defined($x = <>)) {}', per <gnat@frii.com>" From: Chip Salzenberg Files: configpm lib/Term/Cap.pm perlsh pod/perlipc.pod pod/perlop.pod pod/perlsub.pod pod/perlsyn.pod pod/perltrap.pod pod/perlvar.pod win32/bin/search.bat Title: "Document and test C<%> behavior with negative operands" From: Chip Salzenberg Files: pod/perlop.pod t/op/arith.t Title: "Update docs on $]" From: Chip Salzenberg Files: pod/perlvar.pod Title: "perlvar.pod patch" From: Gisle Aas Msg-ID: <199703261254.NAA10237@bergen.sn.no> Date: Wed, 26 Mar 1997 13:54:00 +0100 Files: pod/perlvar.pod (applied based on p5p patch as commit id 0aa182cb0caa3829032904b9754807b1b7418509) Title: "Fix example of C<or> vs. C<||>" From: Chip Salzenberg Files: pod/perlsyn.pod Title: "Pod usage and spelling patch" From: Larry W. Virden Files: pod/*.pod Title: "Pod updates" From: "Cary D. Renzema" <caryr@mxim.com> Msg-ID: <199703262353.PAA01819@macs.mxim.com> Date: Wed, 26 Mar 1997 15:53:22 -0800 (PST) Files: pod/*.pod (applied based on p5p patch as commit id 5695b28edc67a3f45e8a0f25755d07afef3660ac)
Diffstat (limited to 'pp_sys.c')
-rw-r--r--pp_sys.c74
1 files changed, 43 insertions, 31 deletions
diff --git a/pp_sys.c b/pp_sys.c
index 998d271758..3b06b9ccb1 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -30,13 +30,6 @@
# include <sys/resource.h>
#endif
-/* Put this after #includes because fork and vfork prototypes may
- conflict.
-*/
-#ifndef HAS_VFORK
-# define vfork fork
-#endif
-
#if defined(HAS_SOCKET) && !defined(VMS) /* VMS handles sockets via vmsish.h */
# include <sys/socket.h>
# include <netdb.h>
@@ -91,6 +84,18 @@ extern int h_errno;
#include <sys/file.h>
#endif
+/* Put this after #includes because fork and vfork prototypes may conflict. */
+#ifndef HAS_VFORK
+# define vfork fork
+#endif
+
+/* Put this after #includes because <unistd.h> defines _XOPEN_VERSION. */
+#if _XOPEN_VERSION >= 4
+# define Sock_size_t Size_t
+#else
+# define Sock_size_t int
+#endif
+
#if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
static int dooneliner _((char *cmd, char *filename));
#endif
@@ -155,10 +160,17 @@ PP(pp_backtick)
dSP; dTARGET;
PerlIO *fp;
char *tmps = POPp;
+ I32 gimme = GIMME_V;
+
TAINT_PROPER("``");
fp = my_popen(tmps, "r");
if (fp) {
- if (GIMME == G_SCALAR) {
+ if (gimme == G_VOID) {
+ while (PerlIO_read(fp, buf, sizeof buf) > 0)
+ /*SUPPRESS 530*/
+ ;
+ }
+ else if (gimme == G_SCALAR) {
sv_setpv(TARG, ""); /* note that this preserves previous buffer */
while (sv_gets(TARG, fp, SvCUR(TARG)) != Nullch)
/*SUPPRESS 530*/
@@ -188,7 +200,7 @@ PP(pp_backtick)
}
else {
STATUS_NATIVE_SET(-1);
- if (GIMME == G_SCALAR)
+ if (gimme == G_SCALAR)
RETPUSHUNDEF;
}
@@ -320,7 +332,7 @@ PP(pp_close)
else
gv = (GV*)POPs;
EXTEND(SP, 1);
- PUSHs( do_close(gv, TRUE) ? &sv_yes : &sv_no );
+ PUSHs(boolSV(do_close(gv, TRUE)));
RETURN;
}
@@ -463,7 +475,7 @@ PP(pp_tie)
SV **mark = stack_base + ++*markstack_ptr; /* reuse in entersub */
I32 markoff = mark - stack_base - 1;
char *methname;
- bool oldmustcatch = mustcatch;
+ bool oldcatch = CATCH_GET;
varsv = mark[0];
if (SvTYPE(varsv) == SVt_PVHV)
@@ -483,8 +495,8 @@ PP(pp_tie)
Zero(&myop, 1, BINOP);
myop.op_last = (OP *) &myop;
myop.op_next = Nullop;
- myop.op_flags = OPf_KNOW|OPf_STACKED;
- mustcatch = TRUE;
+ myop.op_flags = OPf_WANT_SCALAR | OPf_STACKED;
+ CATCH_SET(TRUE);
ENTER;
SAVESPTR(op);
@@ -499,7 +511,7 @@ PP(pp_tie)
runops();
SPAGAIN;
- mustcatch = oldmustcatch;
+ CATCH_SET(oldcatch);
sv = TOPs;
if (sv_isobject(sv)) {
if (SvTYPE(varsv) == SVt_PVHV || SvTYPE(varsv) == SVt_PVAV) {
@@ -576,7 +588,7 @@ PP(pp_dbmopen)
GV *gv;
BINOP myop;
SV *sv;
- bool oldmustcatch = mustcatch;
+ bool oldcatch = CATCH_GET;
hv = (HV*)POPs;
@@ -594,8 +606,8 @@ PP(pp_dbmopen)
Zero(&myop, 1, BINOP);
myop.op_last = (OP *) &myop;
myop.op_next = Nullop;
- myop.op_flags = OPf_KNOW|OPf_STACKED;
- mustcatch = TRUE;
+ myop.op_flags = OPf_WANT_SCALAR | OPf_STACKED;
+ CATCH_SET(TRUE);
ENTER;
SAVESPTR(op);
@@ -638,7 +650,7 @@ PP(pp_dbmopen)
SPAGAIN;
}
- mustcatch = oldmustcatch;
+ CATCH_SET(oldcatch);
if (sv_isobject(TOPs))
sv_magic((SV*)hv, TOPs, 'P', Nullch, 0);
LEAVE;
@@ -843,15 +855,16 @@ PP(pp_getc)
gv = argvgv;
if (SvMAGICAL(gv) && (mg = mg_find((SV*)gv, 'q'))) {
+ I32 gimme = GIMME_V;
PUSHMARK(SP);
XPUSHs(mg->mg_obj);
PUTBACK;
ENTER;
- perl_call_method("GETC", GIMME);
+ perl_call_method("GETC", gimme);
LEAVE;
SPAGAIN;
- if (GIMME == G_SCALAR)
- SvSetSV_nosteal(TARG, TOPs);
+ if (gimme == G_SCALAR)
+ SvSetMagicSV_nosteal(TARG, TOPs);
RETURN;
}
if (!gv || do_eof(gv)) /* make sure we have fp with something */
@@ -875,7 +888,7 @@ GV *gv;
OP *retop;
{
register CONTEXT *cx;
- I32 gimme = GIMME;
+ I32 gimme = GIMME_V;
AV* padlist = CvPADLIST(cv);
SV** svp = AvARRAY(padlist);
@@ -1334,7 +1347,7 @@ PP(pp_eof)
gv = last_in_gv;
else
gv = last_in_gv = (GV*)POPs;
- PUSHs(!gv || do_eof(gv) ? &sv_yes : &sv_no);
+ PUSHs(boolSV(!gv || do_eof(gv)));
RETURN;
}
@@ -1359,7 +1372,7 @@ PP(pp_seek)
long offset = POPl;
gv = last_in_gv = (GV*)POPs;
- PUSHs( do_seek(gv, offset, whence) ? &sv_yes : &sv_no );
+ PUSHs(boolSV(do_seek(gv, offset, whence)));
RETURN;
}
@@ -1950,6 +1963,7 @@ PP(pp_stat)
{
dSP;
GV *tmpgv;
+ I32 gimme;
I32 max = 13;
if (op->op_flags & OPf_REF) {
@@ -1991,17 +2005,15 @@ PP(pp_stat)
}
}
- if (GIMME != G_ARRAY) {
- EXTEND(SP, 1);
- if (max)
- RETPUSHYES;
- else
- RETPUSHUNDEF;
+ gimme = GIMME_V;
+ if (gimme != G_ARRAY) {
+ if (gimme != G_VOID)
+ XPUSHs(boolSV(max));
+ RETURN;
}
if (max) {
EXTEND(SP, max);
EXTEND_MORTAL(max);
-
PUSHs(sv_2mortal(newSViv((I32)statcache.st_dev)));
PUSHs(sv_2mortal(newSViv((I32)statcache.st_ino)));
PUSHs(sv_2mortal(newSViv((I32)statcache.st_mode)));