X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Fre-engine-Hooks.git;a=blobdiff_plain;f=src%2F5021000%2Forig%2Fdquote_static.c;fp=src%2F5019003%2Forig%2Fdquote_static.c;h=bb1bd4a565251bb119ec448607bef655a0fef4e3;hp=da1b5b950a63d265df465f210dfd5542a9754e23;hb=819b78c9396701a0ef5fe7334e4054dd53c7ef93;hpb=5f4fe0b63e7d03e713a655997310a3875c40b7a8 diff --git a/src/5019003/orig/dquote_static.c b/src/5021000/orig/dquote_static.c similarity index 88% rename from src/5019003/orig/dquote_static.c rename to src/5021000/orig/dquote_static.c index da1b5b9..bb1bd4a 100644 --- a/src/5019003/orig/dquote_static.c +++ b/src/5021000/orig/dquote_static.c @@ -46,44 +46,44 @@ S_regcurly(pTHX_ const char *s, */ STATIC char -S_grok_bslash_c(pTHX_ const char source, const bool utf8, const bool output_warning) +S_grok_bslash_c(pTHX_ const char source, const bool output_warning) { U8 result; - if (utf8) { - /* Trying to deprecate non-ASCII usages. This construct has never - * worked for a utf8 variant. So, even though are accepting non-ASCII - * Latin1 in 5.14, no need to make them work under utf8 */ - if (! isASCII(source)) { - Perl_croak(aTHX_ "Character following \"\\c\" must be ASCII"); + if (! isPRINT_A(source)) { + const char msg[] = "Character following \"\\c\" must be printable ASCII"; + if (! isASCII(source)) { + Perl_croak(aTHX_ "%s", msg); + } + else if (output_warning) { /* Unprintables can be removed in v5.22 */ + Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX), "%s", + msg); } } + else if (source == '{') { + assert(isPRINT_A(toCTRL('{'))); - result = toCTRL(source); - if (! isASCII(source)) { - Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX), - "Character following \"\\c\" must be ASCII"); + /* diag_listed_as: Use "%s" instead of "%s" */ + Perl_croak(aTHX_ "Use \"%c\" instead of \"\\c{\"", toCTRL('{')); } - else if (! isCNTRL(result) && output_warning) { - if (source == '{') { - Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX), - "\"\\c{\" is deprecated and is more clearly written as \";\""); - } - else { - U8 clearer[3]; - U8 i = 0; - if (! isWORDCHAR(result)) { - clearer[i++] = '\\'; - } - clearer[i++] = result; - clearer[i++] = '\0'; - - Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX), - "\"\\c%c\" is more clearly written simply as \"%s\"", - source, - clearer); - } + + result = toCTRL(source); + if (output_warning && ! isCNTRL_L1(result)) { + /* We use isCNTRL_L1 above and not simply isCNTRL, because on EBCDIC + * machines, things like \cT map into a C1 control. */ + U8 clearer[3]; + U8 i = 0; + if (! isWORDCHAR(result)) { + clearer[i++] = '\\'; + } + clearer[i++] = result; + clearer[i++] = '\0'; + + Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX), + "\"\\c%c\" is more clearly written simply as \"%s\"", + source, + clearer); } return result;