Rev 7756 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7756 | Rev 7757 | ||
---|---|---|---|
1 | enum { TAG=1, VALUE, TEXT, COMMENT, SCRIPT}; |
1 | enum { TAG=1, VALUE, TEXT, COMMENT, SCRIPT}; |
2 | 2 | ||
3 | int opened_font_counter=0; |
3 | int opened_font_counter=0; |
4 | int mode; |
4 | int mode; |
5 | 5 | ||
6 | dword source_buf_end; |
6 | dword source_buf_end; |
7 | 7 | ||
8 | void SourceBufAdd(dword _mode, src) |
8 | void SourceBufAdd(dword _mode, src) |
9 | { |
9 | { |
10 | dword font_found_pointer, src_orig = src; |
10 | dword font_found_pointer, src_orig = src; |
11 | 11 | ||
12 | if (_mode) mode = _mode; |
12 | if (_mode) mode = _mode; |
13 | 13 | ||
14 | strcpy(source_buf_end, src); |
14 | strcpy(source_buf_end, src); |
15 | source_buf_end += strlen(source_buf_end); |
15 | source_buf_end += strlen(source_buf_end); |
16 | 16 | ||
17 | if (font_found_pointer = strstr(src, "")) { |
17 | if (font_found_pointer = strstr(src, "")) { |
18 | opened_font_counter--; |
18 | opened_font_counter--; |
19 | src = font_found_pointer+2; |
19 | src = font_found_pointer+2; |
20 | } |
20 | } |
21 | 21 | ||
22 | src = src_orig; |
22 | src = src_orig; |
23 | if (font_found_pointer = strstr(src, " |
23 | if (font_found_pointer = strstr(src, " |
24 | opened_font_counter++; |
24 | opened_font_counter++; |
25 | src = font_found_pointer+2; |
25 | src = font_found_pointer+2; |
26 | } |
26 | } |
27 | } |
27 | } |
28 | 28 | ||
29 | void CloseAllOpenedFonts(dword _mode) |
29 | void CloseAllOpenedFonts(dword _mode) |
30 | { |
30 | { |
31 | while (opened_font_counter) SourceBufAdd(_mode, ""); |
31 | while (opened_font_counter) SourceBufAdd(_mode, ""); |
32 | } |
32 | } |
33 | 33 | ||
34 | dword ShowSource(dword _bufdata, _in_bufsize) |
34 | dword ShowSource(dword _bufdata, _in_bufsize) |
35 | { |
35 | { |
36 | dword i, j; |
36 | dword i, j; |
37 | bool activate_script_mode = false; |
37 | bool activate_script_mode = false; |
38 | dword source_buf_start; |
38 | dword source_buf_start; |
39 | 39 | ||
40 | opened_font_counter=0; |
40 | opened_font_counter=0; |
41 | source_buf_end = malloc(_in_bufsize*5); |
41 | source_buf_start = malloc(_in_bufsize*5); |
42 | source_buf_start = source_buf_end; |
42 | source_buf_end = source_buf_start; |
43 | 43 | ||
44 | SourceBufAdd(TEXT, " |
44 | SourceBufAdd(TEXT, " |
45 | 45 | ||
46 | for (i=_bufdata; i<_bufdata+_in_bufsize; i++) switch (ESBYTE[i]) |
46 | for (i=_bufdata; i<_bufdata+_in_bufsize; i++) switch (ESBYTE[i]) |
47 | { |
47 | { |
48 | case '<': |
48 | case '<': |
49 | if (!strncmp(i+1,"!--", 3)) SourceBufAdd(COMMENT, "<"); |
49 | if (!strncmp(i+1,"!--", 3)) SourceBufAdd(COMMENT, "<"); |
50 | else if (SCRIPT == mode) { |
50 | else if (SCRIPT == mode) { |
51 | if (!strncmp(i+1,"/script>", 8)) { |
51 | if (!strncmp(i+1,"/script>", 8)) { |
52 | CloseAllOpenedFonts(NULL); |
52 | CloseAllOpenedFonts(NULL); |
53 | SourceBufAdd(TAG, "<"); |
53 | SourceBufAdd(TAG, "<"); |
54 | } |
54 | } |
55 | else SourceBufAdd(NULL, "<"); |
55 | else SourceBufAdd(NULL, "<"); |
56 | } |
56 | } |
57 | else if (COMMENT == mode) { |
57 | else if (COMMENT == mode) { |
58 | SourceBufAdd(NULL, "<"); |
58 | SourceBufAdd(NULL, "<"); |
59 | } |
59 | } |
60 | else if (TEXT == mode) { |
60 | else if (TEXT == mode) { |
61 | if (!strncmp(i+1,"script", 6)) activate_script_mode = true; |
61 | if (!strncmp(i+1,"script", 6)) activate_script_mode = true; |
62 | SourceBufAdd(TAG, "<"); |
62 | SourceBufAdd(TAG, "<"); |
63 | } |
63 | } |
64 | break; |
64 | break; |
65 | case '>': |
65 | case '>': |
66 | if (TAG == mode) && (activate_script_mode) { |
66 | if (TAG == mode) && (activate_script_mode) { |
67 | activate_script_mode = false; |
67 | activate_script_mode = false; |
68 | SourceBufAdd(SCRIPT, ">"); |
68 | SourceBufAdd(SCRIPT, ">"); |
69 | } |
69 | } |
70 | else if (VALUE == mode) CloseAllOpenedFonts(TEXT); |
70 | else if (VALUE == mode) CloseAllOpenedFonts(TEXT); |
71 | else if (COMMENT == mode) && (!strncmp(i-2,"--", 2)) { |
71 | else if (COMMENT == mode) && (!strncmp(i-2,"--", 2)) { |
72 | SourceBufAdd(TEXT, ">"); |
72 | SourceBufAdd(TEXT, ">"); |
73 | CloseAllOpenedFonts(TEXT); |
73 | CloseAllOpenedFonts(TEXT); |
74 | } |
74 | } |
75 | else if (COMMENT == mode) || (SCRIPT == mode) SourceBufAdd(NULL, ">"); |
75 | else if (COMMENT == mode) || (SCRIPT == mode) SourceBufAdd(NULL, ">"); |
76 | else if (TAG == mode) SourceBufAdd(TEXT, ">"); |
76 | else if (TAG == mode) SourceBufAdd(TEXT, ">"); |
77 | break; |
77 | break; |
78 | case '&': |
78 | case '&': |
79 | SourceBufAdd(NULL, "&"); |
79 | SourceBufAdd(NULL, "&"); |
80 | break; |
80 | break; |
81 | case '\"': |
81 | case '\"': |
82 | case '\'': |
82 | case '\'': |
83 | if (TAG == mode) SourceBufAdd(VALUE, "'"); |
83 | if (TAG == mode) SourceBufAdd(VALUE, "'"); |
84 | else if (VALUE == mode) SourceBufAdd(TAG, "'"); |
84 | else if (VALUE == mode) SourceBufAdd(TAG, "'"); |
85 | else SourceBufAdd(NULL, "'"); |
85 | else SourceBufAdd(NULL, "'"); |
86 | break; |
86 | break; |
87 | default: |
87 | default: |
88 | ESBYTE[source_buf_end] = ESBYTE[i]; |
88 | ESBYTE[source_buf_end] = ESBYTE[i]; |
89 | source_buf_end++; |
89 | source_buf_end++; |
90 | } |
90 | } |
91 | ESBYTE[source_buf_end] = 0; |
91 | ESBYTE[source_buf_end] = 0; |
92 | LoadInternalPage(source_buf_start, _in_bufsize); |
92 | LoadInternalPage(source_buf_start, source_buf_end-source_buf_start); |
93 | free(source_buf_start); |
93 | free(source_buf_start); |
94 | }': |
94 | }': |
95 | > |
95 | > |