Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
8320 | leency | 1 | enum { TAG, OPTION_VALUE, TEXT, COMMENT, INLINE_COMMENT, CODE }; |
2 | |||
3 | |||
4 | |||
5 | char* C_HL_keywords[] = { |
||
6 | "switch", "if", "while", "for", "break", "continue", "return", "else", |
||
7 | "union", "typedef", "static", "class", "case", "#include", |
||
8 | "volatile", "register", "sizeof", "typedef", "union", "goto", "const", "auto", |
||
9 | "#define", "#endif", "#error", "#ifdef", "#ifndef", "#undef", "#if", "#else", |
||
10 | "inline", |
||
11 | |||
12 | "int ", "dword ", "long ", "double ", "float ", "char ", "unsigned ", "signed ", |
||
13 | "void ", "bool ", "enum ", "byte ", "word ", "struct ", "NULL", "loop", "stdcall ", |
||
14 | ":void ", ":int ", ":bool ", ":dword ", NULL |
||
15 | }; |
||
16 | |||
17 | dword ShowCodeSource(dword _bufpointer, _bufsize) |
||
18 | { |
||
19 | dword new_buf, new_buf_start, i; |
||
20 | int mode = CODE; |
||
21 | |||
22 | char spstr[64]; |
||
23 | dword keylen; |
||
24 | dword keyn; |
||
25 | dword keycolor; |
||
26 | |||
27 | new_buf = malloc(_bufsize*10); |
||
28 | new_buf_start = new_buf; |
||
29 | sprintf(new_buf," |
||
30 | new_buf += strlen(new_buf); |
||
31 | for (i=_bufpointer; i<_bufpointer+_bufsize; i++) |
||
32 | { |
||
33 | if ('<' == ESBYTE[i]) { |
||
34 | strcpy(new_buf, "<"); |
||
35 | new_buf+=4; |
||
36 | continue; |
||
37 | } |
||
38 | if ('>' == ESBYTE[i]) { |
||
39 | strcpy(new_buf, ">"); |
||
40 | new_buf+=4; |
||
41 | continue; |
||
42 | } |
||
43 | if (ESBYTE[i] >= '0') && (ESBYTE[i] <= '9') && (CODE == mode) { |
||
44 | strcpy(new_buf, "?"); |
||
45 | ESBYTE[new_buf+20] = ESBYTE[i]; |
||
46 | new_buf+=28; |
||
47 | if (ESBYTE[i+1] == 'x') { |
||
48 | strcpy(new_buf, "x"); |
||
49 | new_buf+=28; |
||
50 | i++; |
||
51 | } |
||
52 | continue; |
||
53 | } |
||
54 | |||
55 | if (CODE == mode) && ('\"' == ESBYTE[i]) { |
||
56 | mode = TEXT; |
||
57 | strcpy(new_buf, "\""); |
||
58 | new_buf+=18; |
||
59 | continue; |
||
60 | } |
||
61 | if (TEXT == mode) && ('\"' == ESBYTE[i]) { |
||
62 | mode = CODE; |
||
63 | strcpy(new_buf, "\""); |
||
64 | new_buf+=8; |
||
65 | continue; |
||
66 | } |
||
67 | |||
68 | if (! strncmp(i, "//", 2) ) && (mode == CODE) { |
||
69 | mode = INLINE_COMMENT; |
||
70 | strcpy(new_buf, "//"); |
||
71 | new_buf+=19; |
||
72 | i++; |
||
73 | continue; |
||
74 | } |
||
75 | |||
76 | if (INLINE_COMMENT == mode) { |
||
77 | if (13 == ESBYTE[i]) { |
||
78 | mode = CODE; |
||
79 | strcpy(new_buf, "\13"); |
||
80 | new_buf+=8; |
||
81 | continue; |
||
82 | } |
||
83 | } |
||
84 | |||
85 | if (! strncmp(i, "/*", 2) ) { |
||
86 | mode = COMMENT; |
||
87 | strcpy(new_buf, "/*"); |
||
88 | new_buf+=19; |
||
89 | i++; |
||
90 | continue; |
||
91 | } |
||
92 | if (! strncmp(i, "*/", 2) ) { |
||
93 | mode = CODE; |
||
94 | strcpy(new_buf, "*/"); |
||
95 | new_buf+=9; |
||
96 | i++; |
||
97 | continue; |
||
98 | } |
||
99 | |||
100 | if (CODE == mode) for (keyn=0; C_HL_keywords[keyn]!=NULL; keyn++) |
||
101 | { |
||
102 | keylen = strlen(C_HL_keywords[keyn]); |
||
103 | if (! strncmp(i, C_HL_keywords[keyn], keylen) ) { |
||
104 | |||
105 | if (keyn<31) keycolor="#f00"; else keycolor="#00f"; |
||
106 | sprintf(#spstr, "%s", keycolor, C_HL_keywords[keyn]); |
||
107 | strcpy(new_buf, #spstr); |
||
108 | |||
109 | new_buf += keylen + 24; |
||
110 | i += keylen-1; |
||
111 | goto _CONTINUE; |
||
112 | } |
||
113 | } |
||
114 | ESBYTE[new_buf] = ESBYTE[i]; |
||
115 | new_buf++; |
||
116 | _CONTINUE: |
||
117 | } |
||
118 | ESBYTE[new_buf] = 0; |
||
119 | LoadInternalPage(new_buf_start, new_buf - new_buf_start); |
||
120 | free(new_buf_start); |
||
121 | }31)>=>'> |