summaryrefslogtreecommitdiff
path: root/perl.c
diff options
context:
space:
mode:
Diffstat (limited to 'perl.c')
-rw-r--r--perl.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/perl.c b/perl.c
index c0be8d51a1..e3623e5bde 100644
--- a/perl.c
+++ b/perl.c
@@ -2219,10 +2219,16 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit)
const char *s;
if ((s = PerlEnv_getenv("PERL_MADSKILLS"))) {
PL_madskills = atoi(s);
- Perl_warn(aTHX_ "set madskills s %s n %x a %d\n", s, (unsigned)PL_madskills, atoi(s));
my_setenv("PERL_MADSKILLS", NULL); /* hide from subprocs */
}
}
+
+ {
+ const char *s;
+ if (!PL_tainting && (s = PerlEnv_getenv("PERL_MADOPTIONS"))) {
+ PL_madoptions = get_mad_options(s);
+ }
+ }
#endif
lex_start(linestr_sv, rsfp, 0);
@@ -3027,6 +3033,32 @@ Perl_get_debug_opts(pTHX_ const char **s, bool givehelp)
}
#endif
+#ifdef PERL_MAD
+STATIC U32
+S_get_mad_options(aTHX_ const char *s) {
+ if (isDIGIT(*s)) {
+ return atoi(s);
+ }
+ else {
+ U32 i = 0;
+ while (*s) {
+ switch (*s) {
+ case 't':
+ i |= MADf_TERSE;
+ break;
+ case 'c':
+ i |= MADf_CUDDLE;
+ break;
+ default:
+ Perl_croak(aTHX_ "invalid PERL_MADOPTION %c\n", *s);
+ }
+ ++s;
+ }
+ return i;
+ }
+}
+#endif
+
/* This routine handles any switches that can be given during run */
const char *