I haven't followed the whole discussion so I'm not quite sure what you want
to do. In any case, you can't include files from PHP in Zend (i.e. #include
"main/SAPI.h"). Zend should not be dependent on PHP.
Andi
At 07:09 PM 9/19/2002 -0400, [EMAIL PROTECTED] wrote:
>diff -u ../../php4cvs/Zend/zend_highlight.c ./zend_highlight.c
>--- ../../php4cvs/Zend/zend_highlight.c Sun Sep 15 23:56:30 2002
>+++ ./zend_highlight.c Fri Sep 20 00:07:11 2002
>@@ -24,6 +24,7 @@
> #include "zend_highlight.h"
> #include "zend_ptr_stack.h"
> #include "zend_globals.h"
>+#include "main/SAPI.h"
>
> ZEND_API void zend_html_putc(char c)
> {
>@@ -52,7 +53,6 @@
> }
> }
>
>-
> ZEND_API void zend_html_puts(const char *s, uint len)
> {
> const char *ptr=s, *end=s+len;
>@@ -76,18 +76,33 @@
> }
> }
>
>-
>-
> ZEND_API void zend_highlight(zend_syntax_highlighter_ini
>*syntax_highlighter_ini TSRMLS_DC)
> {
> zval token;
> int token_type;
> char *last_color = syntax_highlighter_ini->highlight_html;
> char *next_color;
>- int in_string=0;
>+ int in_string = 0, lineno = 0, highlight_format = 0;
>+ char *strtok_buf = NULL, *strtoken, *val;
>+
>+ if (SG(request_info).query_string) {
>+ strtoken = strtok_r(SG(request_info).query_string, "&",
>&strtok_buf);
>+ while (strtoken) {
>+ val = strchr(strtoken, '=');
>+ if (val && strncmp(strtoken, "HIGHLIGHT_FORMAT",
>16) == 0 &&
>strncmp(val, "=lineno", 7) == 0) {
>+ highlight_format = 1;
>+ } else if (val && strncmp(strtoken,
>"HIGHLIGHT_FORMAT", 16) == 0 &&
>strncmp(val, "=default", 8) == 0) {
>+ highlight_format = 0;
>+ }
>+ strtoken = strtok_r(NULL, ".", &strtok_buf);
>+ }
>+ }
>+
>+ zend_printf("<pre>");
>+ if (highlight_format == HL_FORMAT_LINENO) {
>+ zend_highlight_puts("\n", 1, highlight_format, &lineno,
>last_color);
>+ }
>
>- zend_printf("<code>");
>- zend_printf("<font color=\"%s\">\n", last_color);
> /* highlight stuff coming back from zendlex() */
> token.type = 0;
> while ((token_type=lex_scan(&token TSRMLS_CC))) {
>@@ -113,7 +128,7 @@
> in_string = !in_string;
> break;
> case T_WHITESPACE:
>- zend_html_puts(LANG_SCNG(yy_text),
>LANG_SCNG(yy_leng)); /* no color
>needed */
>+ zend_highlight_puts(LANG_SCNG(yy_text),
>LANG_SCNG(yy_leng),
>highlight_format, &lineno, last_color); /* no color needed */
> token.type = 0;
> continue;
> break;
>@@ -141,10 +156,10 @@
> }
> switch (token_type) {
> case T_END_HEREDOC:
>- zend_html_puts(token.value.str.val,
>token.value.str.len);
>+ zend_highlight_puts(token.value.str.val,
>token.value.str.len,
>highlight_format, &lineno, last_color);
> break;
> default:
>- zend_html_puts(LANG_SCNG(yy_text),
>LANG_SCNG(yy_leng));
>+ zend_highlight_puts(LANG_SCNG(yy_text),
>LANG_SCNG(yy_leng),
>highlight_format, &lineno, last_color);
> break;
> }
>
>@@ -172,14 +187,11 @@
> token.type = 0;
> }
> if (last_color != syntax_highlighter_ini->highlight_html) {
>- zend_printf("</font>\n");
>+ zend_printf("</font>");
> }
>- zend_printf("</font>\n");
>- zend_printf("</code>");
>+ zend_printf("</font>\n</pre>");
> }
>
>-
>-
> ZEND_API void zend_strip(TSRMLS_D)
> {
> zval token;
>@@ -191,7 +203,7 @@
> case T_COMMENT:
> token.type = 0;
> continue;
>-
>+
> case T_WHITESPACE:
> if (token.type) {
> putchar(' ');
>@@ -237,6 +249,45 @@
> }
> }
> token.type = 0;
>+ }
>+}
>+
>+ZEND_API void zend_highlight_putc(char c, int highlight_format, int
>*lineno, char *color)
>+{
>+ switch (c) {
>+ case '\n':
>+ if (highlight_format == HL_FORMAT_LINENO) {
>+ ++(*lineno);
>+ zend_printf("</font>\n<a name=\"%d\">%
>4d</a>: <font color=\"%s\">",
>*lineno, *lineno, color);
>+ } else {
>+ zend_printf("\n");
>+ }
>+ break;
>+ case '<':
>+ ZEND_PUTS("<");
>+ break;
>+ case '>':
>+ ZEND_PUTS(">");
>+ break;
>+ case '&':
>+ ZEND_PUTS("&");
>+ break;
>+ case '\t':
>+ ZEND_PUTS(" ");
>+ break;
>+ default:
>+ ZEND_PUTC(c);
>+ break;
>+ }
>+}
>+
>+
>+ZEND_API void zend_highlight_puts(const char *s, uint len, int
>highlight_format, int *lineno, char *color)
>+{
>+ const char *ptr = s, *end = s + len;
>+
>+ while (ptr < end) {
>+ zend_highlight_putc(*ptr++, highlight_format, lineno, color);
> }
> }
> /*
>
>diff -u ../../php4cvs/Zend/zend_highlight.h ./zend_highlight.h
>--- ../../php4cvs/Zend/zend_highlight.h Sat May 11 13:35:52 2002
>+++ ./zend_highlight.h Fri Sep 20 00:07:13 2002
>@@ -27,7 +27,8 @@
> #define HL_STRING_COLOR "#DD0000" /* red */
> #define HL_BG_COLOR "#FFFFFF" /* white */
> #define HL_KEYWORD_COLOR "#007700" /* green */
>-
>+#define HL_FORMAT_DEFAULT 0
>+#define HL_FORMAT_LINENO 1
>
> typedef struct _zend_syntax_highlighter_ini {
> char *highlight_html;
>@@ -45,6 +46,8 @@
> ZEND_API int highlight_string(zval *str, zend_syntax_highlighter_ini
>*syntax_highlighter_ini, char *str_name TSRMLS_DC);
> ZEND_API void zend_html_putc(char c);
> ZEND_API void zend_html_puts(const char *s, uint len);
>+ZEND_API void zend_highlight_putc(char c, int highlight_format, int
>*lineno, char *color);
>+ZEND_API void zend_highlight_puts(const char *s, uint len, int
>highlight_format, int *lineno, char *color);
> END_EXTERN_C()
>
> extern zend_syntax_highlighter_ini syntax_highlighter_ini;
>
>
>--------------------------------------------------------------------
>mail2web - Check your email from the web at
>http://mail2web.com/ .
>
>
>
>--
>PHP CVS Mailing List (http://www.php.net/)
>To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php