diff options
author | Karl Williamson <khw@khw-desktop.(none)> | 2010-07-25 13:13:10 -0600 |
---|---|---|
committer | Rafael Garcia-Suarez <rgs@consttype.org> | 2010-07-27 09:42:01 +0200 |
commit | 454155d98d52c903969d4c71a5cd1f2f269aaf5f (patch) | |
tree | 1eac25e5f85dd8b517e82387bb6f392022be8732 /util.c | |
parent | 154bd5274ebc449c2a37261db17c2e721d16078d (diff) | |
download | perl-454155d98d52c903969d4c71a5cd1f2f269aaf5f.tar.gz |
Change function signature of grok_bslash_o
The previous return value where NULL meant OK is outside-the-norm.
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 39 |
1 files changed, 26 insertions, 13 deletions
@@ -3935,18 +3935,28 @@ Perl_grok_bslash_c(pTHX_ const char source, const bool output_warning) return result; } -char * -Perl_grok_bslash_o(pTHX_ const char *s, UV *uv, STRLEN *len, const bool output_warning) +bool +Perl_grok_bslash_o(pTHX_ const char *s, + UV *uv, + STRLEN *len, + const char** error_msg, + const bool output_warning) { /* Documentation to be supplied when interface nailed down finally - * This returns NULL on success, otherwise a pointer to an internal constant - * error message. On input: - * s points to a string that begins with o, and the previous character was - * a backslash. - * uv points to a UV that will hold the output value - * len will point to the next character in the string past the end of this - * construct + * This returns FALSE if there is an error which the caller need not recover + * from; , otherwise TRUE. In either case the caller should look at *len + * On input: + * s points to a string that begins with 'o', and the previous character + * was a backslash. + * uv points to a UV that will hold the output value, valid only if the + * return from the function is TRUE + * len on success will point to the next character in the string past the + * end of this construct. + * on failure, it will point to the failure + * error_msg is a pointer that will be set to an internal buffer giving an + * error message upon failure (the return is FALSE). Untouched if + * function succeeds * output_warning says whether to output any warning messages, or suppress * them */ @@ -3966,13 +3976,15 @@ Perl_grok_bslash_o(pTHX_ const char *s, UV *uv, STRLEN *len, const bool output_w if (*s != '{') { *len = 1; /* Move past the o */ - return "Missing braces on \\o{}"; + *error_msg = "Missing braces on \\o{}"; + return FALSE; } e = strchr(s, '}'); if (!e) { *len = 2; /* Move past the o{ */ - return "Missing right brace on \\o{"; + *error_msg = "Missing right brace on \\o{"; + return FALSE; } /* Return past the '}' no matter what is inside the braces */ @@ -3982,7 +3994,8 @@ Perl_grok_bslash_o(pTHX_ const char *s, UV *uv, STRLEN *len, const bool output_w numbers_len = e - s; if (numbers_len == 0) { - return "Number with no digits"; + *error_msg = "Number with no digits"; + return FALSE; } *uv = NATIVE_TO_UNI(grok_oct(s, &numbers_len, &flags, NULL)); @@ -3998,7 +4011,7 @@ Perl_grok_bslash_o(pTHX_ const char *s, UV *uv, STRLEN *len, const bool output_w s); } - return NULL; + return TRUE; } /* To workaround core dumps from the uninitialised tm_zone we get the |