summaryrefslogtreecommitdiff
path: root/dquote_static.c
diff options
context:
space:
mode:
authorKarl Williamson <public@khwilliamson.com>2011-02-09 17:34:38 -0700
committerKarl Williamson <public@khwilliamson.com>2011-02-09 22:46:02 -0700
commit68b355dd7516941437134d1c22e1de0c8bf0e517 (patch)
tree45a796d724e9f212a389f2c1da4da5d1d791eaee /dquote_static.c
parentdb30362b9b16c8b3b431a133169e91f19b1e38e7 (diff)
downloadperl-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.c41
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,