| 111 | } |
| 112 | |
| 113 | AP_DECLARE(apr_size_t) ap_regerror(int errcode, const ap_regex_t *preg, |
| 114 | char *errbuf, apr_size_t errbuf_size) |
| 115 | { |
| 116 | const char *message, *addmessage; |
| 117 | apr_size_t length, addlength; |
| 118 | |
| 119 | message = (errcode >= (int)(sizeof(pstring) / sizeof(char *))) ? |
| 120 | "unknown error code" : pstring[errcode]; |
| 121 | length = strlen(message) + 1; |
| 122 | |
| 123 | addmessage = " at offset "; |
| 124 | addlength = (preg != NULL && (int)preg->re_erroffset != -1) ? |
| 125 | strlen(addmessage) + 6 : 0; |
| 126 | |
| 127 | if (errbuf_size > 0) { |
| 128 | if (addlength > 0 && errbuf_size >= length + addlength) |
| 129 | apr_snprintf(errbuf, errbuf_size, "%s%s%-6d", message, addmessage, |
| 130 | (int)preg->re_erroffset); |
| 131 | else |
| 132 | apr_cpystrn(errbuf, message, errbuf_size); |
| 133 | } |
| 134 | |
| 135 | return length + addlength; |
| 136 | } |
| 137 | |
| 138 | |
| 139 | |