Subversion Repositories Kolibri OS

Rev

Rev 4719 | Rev 4728 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4719 leency 1
enum { TAG, OPTION_VALUE, TEXT, COMMENT };
2
 
4718 leency 3
//you are butifull, you are butifull
4
dword ShowSource()
5
{
6
	dword new_buf, new_buf_start, i;
4719 leency 7
	byte ww, mode;
4718 leency 8
 
9
	if (souce_mode) return;
10
	souce_mode = true;
4725 leency 11
	new_buf = malloc(bufsize*5);
12
	new_buf_start = new_buf;
13
	strcpy(new_buf, "");</pre></td>
        </tr>
        <tr valign="middle">
           <td></td>
           <td></td>
           <td><a name="l14">14</a></td>
           <td class="code"><pre>	if (strlen(#header)-strlen(#version)>0) header[strlen(#header)-strlen(#version)-2] = 0; else strcpy(#header, "Source");</pre></td>
        </tr>
        <tr valign="middle">
           <td></td>
           <td></td>
           <td><a name="l15">15</a></td>
           <td class="code"><pre>	strcat(new_buf, #header);</pre></td>
        </tr>
        <tr valign="middle">
           <td></td>
           <td></td>
           <td><a name="l16">16</a></td>
           <td class="code"><pre>	strcat(new_buf, "
");
17
	new_buf += strlen(new_buf);
4718 leency 18
	for (i=bufpointer; i
19
	{
20
		ww = ESBYTE[i];
21
		switch (ww)
22
		{
23
			case '<':
24
				if (ESBYTE[i+1]=='!') && (ESBYTE[i+2]=='-') && (ESBYTE[i+3]=='-')
25
				{
4725 leency 26
					strcpy(new_buf, "<");
27
					new_buf+=21;
4719 leency 28
					mode = COMMENT;
4718 leency 29
				}
30
				else
31
				{
4725 leency 32
					strcpy(new_buf, "<");
33
					new_buf+=21;
4719 leency 34
					mode = TAG;
4718 leency 35
				}
36
				break;
37
			case '>':
4719 leency 38
				if (mode == OPTION_VALUE) //fix non-closed quote in TAG
4718 leency 39
				{
4725 leency 40
					strcpy(new_buf, """);
41
					new_buf+=13;
4719 leency 42
					mode = TAG;
4718 leency 43
				}
4719 leency 44
				if (mode == COMMENT) && (ESBYTE[i-1]=='-') && (ESBYTE[i-2]=='-')
4718 leency 45
				{
4725 leency 46
					strcpy(new_buf, ">");
47
					new_buf+=11;
4719 leency 48
					mode = TEXT;
4718 leency 49
				}
4719 leency 50
				if (mode == TAG)
4718 leency 51
				{
4725 leency 52
					strcpy(new_buf, ">");
53
					new_buf+=11;
4719 leency 54
					mode = TEXT;
4718 leency 55
				}
56
				break;
57
			case '\"':
58
			case '\'':
4719 leency 59
				if (mode == TAG)
4718 leency 60
				{
4725 leency 61
					strcpy(new_buf, "'");
4718 leency 62
					new_buf+=22;
4719 leency 63
					mode = OPTION_VALUE;
64
					break;
4718 leency 65
				}
4719 leency 66
				if (mode == OPTION_VALUE)
4718 leency 67
				{
4725 leency 68
					strcpy(new_buf, "'");
4718 leency 69
					new_buf+=12;
4719 leency 70
					mode = TAG;
71
					break;
4718 leency 72
				}
73
			default:
4725 leency 74
				ESBYTE[new_buf] = ww;
75
				new_buf++;
4718 leency 76
		}
77
	}
4725 leency 78
	ESBYTE[new_buf] = 0;
79
	bufsize = new_buf - new_buf_start;
4718 leency 80
	free(bufpointer);
81
	bufpointer = new_buf_start;
82
}