diff options
Diffstat (limited to 'perl.c')
-rw-r--r-- | perl.c | 34 |
1 files changed, 33 insertions, 1 deletions
@@ -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 * |