diff options
author | Marcus Boerger <helly@php.net> | 2002-08-09 21:57:03 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2002-08-09 21:57:03 +0000 |
commit | 2e29e53e00d39aa6f5ea1ff4102f792f6ba7ae60 (patch) | |
tree | 301bd4a4bc810239d2c86f73faf386964a264793 | |
parent | 0019a842b44194e36f93592a88297fb1de8bfa2a (diff) | |
download | php-git-2e29e53e00d39aa6f5ea1ff4102f792f6ba7ae60.tar.gz |
docref shall either be NULL or a reference to a manual page without an
extension or an external reference starting with 'http://'.
-rw-r--r-- | main/main.c | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/main/main.c b/main/main.c index 2f0b82cf66..90b39ae89a 100644 --- a/main/main.c +++ b/main/main.c @@ -390,14 +390,16 @@ PHPAPI int php_printf(const char *format, ...) /* {{{ php_verror */ PHPAPI void php_verror(const char *docref, const char *params, int type, const char *format, va_list args TSRMLS_DC) { - char *buffer = NULL, *docref_buf = NULL, *function, *p; + char *buffer = NULL, *docref_buf = NULL, *ref = NULL, *target = NULL; + char *docref_target = "", *docref_root = ""; + char *function, *p; vspprintf(&buffer, 0, format, args); if (buffer) { if (!docref) { function = get_active_function_name(TSRMLS_C); if (function) { - spprintf(&docref_buf, 0, "function.%s%s", function, PG(docref_ext)); + spprintf(&docref_buf, 0, "function.%s", function); if (docref_buf) { while((p=strchr(docref_buf, '_'))!=NULL) *p = '-'; docref = docref_buf; @@ -405,11 +407,39 @@ PHPAPI void php_verror(const char *docref, const char *params, int type, const c } } if (docref) { - if (PG(html_errors) && PG(docref_ext)) { - php_error(type, "%s(%s) [<a href='%s%s'>%s</a>]: %s", get_active_function_name(TSRMLS_C), params, PG(docref_root), docref, docref, buffer); + if (strncmp(docref, "http://", 7)) { + docref_root = PG(docref_root); + /* now check copy of extension */ + ref = estrdup(docref); + if (ref) { + if (docref_buf) { + efree(docref_buf); + } + docref_buf = ref; + p = strrchr(ref, '#'); + if (p) { + target = estrdup(p); + if (target) { + docref_target = target; + *p = '\0'; + } + } + if ((!p || target) && PG(docref_ext) && strlen(PG(docref_ext))) { + spprintf(&docref_buf, 0, "%s%s", ref, PG(docref_ext)); + if (docref_buf) { + efree(ref); + docref = docref_buf; + } + } + } + } + if (PG(html_errors)) { + php_error(type, "%s(%s) [<a href='%s%s%s'>%s</a>]: %s", get_active_function_name(TSRMLS_C), params, docref_root, docref, docref, docref_target, buffer); } else { - php_error(type, "%s(%s) [%s%s]: %s", get_active_function_name(TSRMLS_C), params, PG(docref_root), docref, buffer); + php_error(type, "%s(%s) [%s%s%s]: %s", get_active_function_name(TSRMLS_C), params, docref_root, docref, docref_target, buffer); } + if (target) + efree(target); } else { docref = get_active_function_name(TSRMLS_C); if (!docref) |