waitpid() now handles externally spawned pids correctly;
[p5sagit/p5-mst-13.2.git] / perl.c
diff --git a/perl.c b/perl.c
index 95f10ff..197e737 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -2060,9 +2060,25 @@ Perl_moreswitches(pTHX_ char *s)
     case 'd':
        forbid_setid("-d");
        s++;
-       if (*s == ':' || *s == '=')  {
-           my_setenv("PERL5DB", Perl_form(aTHX_ "use Devel::%s;", ++s));
+       /* The following permits -d:Mod to accepts arguments following an =
+          in the fashion that -MSome::Mod does. */
+       if (*s == ':' || *s == '=') {
+           char *start;
+           SV *sv;
+           sv = newSVpv("use Devel::", 0);
+           start = ++s;
+           /* We now allow -d:Module=Foo,Bar */
+           while(isALNUM(*s) || *s==':') ++s;
+           if (*s != '=')
+               sv_catpv(sv, start);
+           else {
+               sv_catpvn(sv, start, s-start);
+               sv_catpv(sv, " split(/,/,q{");
+               sv_catpv(sv, ++s);
+               sv_catpv(sv,    "})");
+           }
            s += strlen(s);
+           my_setenv("PERL5DB", SvPV(sv, PL_na));
        }
        if (!PL_perldb) {
            PL_perldb = PERLDB_ALL;
@@ -2241,6 +2257,10 @@ Perl_moreswitches(pTHX_ char *s)
 
        PerlIO_printf(PerlIO_stdout(),
                      "\n\nCopyright 1987-2000, Larry Wall\n");
+#ifdef MACOS_TRADITIONAL
+       PerlIO_printf(PerlIO_stdout(),
+                     "\nMacOS port Copyright (c) 1991-2000, Matthias Neeracher\n");
+#endif
 #ifdef MSDOS
        PerlIO_printf(PerlIO_stdout(),
                      "\nMS-DOS port Copyright (c) 1989, 1990, Diomidis Spinellis\n");
@@ -2847,16 +2867,6 @@ S_validate_suid(pTHX_ char *validarg, char *scriptname, int fdscript)
            if (tmpstatbuf.st_dev != PL_statbuf.st_dev ||
                tmpstatbuf.st_ino != PL_statbuf.st_ino) {
                (void)PerlIO_close(PL_rsfp);
-               if (PL_rsfp = PerlProc_popen("/bin/mail root","w")) {   /* heh, heh */
-                   PerlIO_printf(PL_rsfp,
-"User %"Uid_t_f" tried to run dev %ld ino %ld in place of dev %ld ino %ld!\n\
-(Filename of set-id script was %s, uid %"Uid_t_f" gid %"Gid_t_f".)\n\nSincerely,\nperl\n",
-                       PL_uid,(long)tmpstatbuf.st_dev, (long)tmpstatbuf.st_ino,
-                       (long)PL_statbuf.st_dev, (long)PL_statbuf.st_ino,
-                       CopFILE(PL_curcop),
-                       PL_statbuf.st_uid, PL_statbuf.st_gid);
-                   (void)PerlProc_pclose(PL_rsfp);
-               }
                Perl_croak(aTHX_ "Permission denied\n");
            }
            if (
@@ -3675,14 +3685,7 @@ Perl_call_list(pTHX_ I32 oldscope, AV *paramList)
 
     while (AvFILL(paramList) >= 0) {
        cv = (CV*)av_shift(paramList);
-       if ((PL_minus_c & 0x10) && (paramList == PL_beginav)) {
-               /* save PL_beginav for compiler */
-           if (! PL_beginav_save)
-               PL_beginav_save = newAV();
-           av_push(PL_beginav_save, (SV*)cv);
-       } else {
-           SAVEFREESV(cv);
-       }
+       SAVEFREESV(cv);
 #ifdef PERL_FLEXIBLE_EXCEPTIONS
        CALLPROTECT(aTHX_ pcur_env, &ret, MEMBER_TO_FPTR(S_vcall_list_body), cv);
 #else