diff options
author | Karl Williamson <public@khwilliamson.com> | 2011-02-09 17:34:38 -0700 |
---|---|---|
committer | Karl Williamson <public@khwilliamson.com> | 2011-02-09 22:46:02 -0700 |
commit | 68b355dd7516941437134d1c22e1de0c8bf0e517 (patch) | |
tree | 45a796d724e9f212a389f2c1da4da5d1d791eaee /dquote_static.c | |
parent | db30362b9b16c8b3b431a133169e91f19b1e38e7 (diff) | |
download | perl-68b355dd7516941437134d1c22e1de0c8bf0e517.tar.gz |
Move grok_bslash_c to dquote.c and make static
No other changes were made
Diffstat (limited to 'dquote_static.c')
-rw-r--r-- | dquote_static.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/dquote_static.c b/dquote_static.c index dd58c6bb60..28afd25ae0 100644 --- a/dquote_static.c +++ b/dquote_static.c @@ -36,6 +36,47 @@ S_regcurly(pTHX_ register const char *s) return TRUE; } +/* XXX Add documentation after final interface and behavior is decided */ +/* May want to show context for error, so would pass Perl_bslash_c(pTHX_ const char* current, const char* start, const bool output_warning) + U8 source = *current; + + May want to add eg, WARN_REGEX +*/ + +STATIC char +S_grok_bslash_c(pTHX_ const char source, const bool output_warning) +{ + + U8 result; + + if (! isASCII(source)) { + Perl_croak(aTHX_ "Character following \"\\c\" must be ASCII"); + } + + result = toCTRL(source); + if (! isCNTRL(result)) { + if (source == '{') { + Perl_croak(aTHX_ "It is proposed that \"\\c{\" no longer be valid. It has historically evaluated to\n \";\". If you disagree with this proposal, send email to perl5-porters@perl.org\nOtherwise, or in the meantime, you can work around this failure by changing\n\"\\c{\" to \";\""); + } + else if (output_warning) { + U8 clearer[3]; + U8 i = 0; + if (! isALNUM(result)) { + clearer[i++] = '\\'; + } + clearer[i++] = result; + clearer[i++] = '\0'; + + Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), + "\"\\c%c\" more clearly written simply as \"%s\"", + source, + clearer); + } + } + + return result; +} + STATIC bool S_grok_bslash_o(pTHX_ const char *s, UV *uv, |