Subversion Repositories Kolibri OS

Rev

Rev 6794 | Rev 7746 | 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;
5773 leency 13
	header[strrchr(#header, '-')-2]=0;
6794 leency 14
	sprintf(new_buf,"Source: %s
",#header);
15
	new_buf += strlen(new_buf);
4718 leency 16
	for (i=bufpointer; i
17
	{
18
		ww = ESBYTE[i];
19
		switch (ww)
20
		{
21
			case '<':
6986 leency 22
				if (mode == COMMENT)
23
				{
24
					strcpy(new_buf, "<");
25
					new_buf+=4;
26
					break;
27
				}
4718 leency 28
				if (ESBYTE[i+1]=='!') && (ESBYTE[i+2]=='-') && (ESBYTE[i+3]=='-')
29
				{
4728 leency 30
					strcpy(new_buf, "<");
4725 leency 31
					new_buf+=21;
4719 leency 32
					mode = COMMENT;
6986 leency 33
					break;
4718 leency 34
				}
4728 leency 35
				if (mode != COMMENT)
4718 leency 36
				{
4725 leency 37
					strcpy(new_buf, "<");
38
					new_buf+=21;
4719 leency 39
					mode = TAG;
6986 leency 40
					break;
4718 leency 41
				}
42
				break;
43
			case '>':
4719 leency 44
				if (mode == OPTION_VALUE) //fix non-closed quote in TAG
4718 leency 45
				{
4725 leency 46
					strcpy(new_buf, """);
47
					new_buf+=13;
4719 leency 48
					mode = TAG;
6986 leency 49
					break;
4718 leency 50
				}
4719 leency 51
				if (mode == COMMENT) && (ESBYTE[i-1]=='-') && (ESBYTE[i-2]=='-')
4718 leency 52
				{
4725 leency 53
					strcpy(new_buf, ">");
54
					new_buf+=11;
4719 leency 55
					mode = TEXT;
6986 leency 56
					break;
4718 leency 57
				}
6986 leency 58
				if (mode == COMMENT)
59
				{
60
					strcpy(new_buf, ">");
61
					new_buf+=4;
62
					break;
63
				}
4719 leency 64
				if (mode == TAG)
4718 leency 65
				{
4725 leency 66
					strcpy(new_buf, ">");
67
					new_buf+=11;
4719 leency 68
					mode = TEXT;
6986 leency 69
					break;
4718 leency 70
				}
71
				break;
72
			case '\"':
73
			case '\'':
4719 leency 74
				if (mode == TAG)
4718 leency 75
				{
4725 leency 76
					strcpy(new_buf, "'");
4718 leency 77
					new_buf+=22;
4719 leency 78
					mode = OPTION_VALUE;
79
					break;
4718 leency 80
				}
4719 leency 81
				if (mode == OPTION_VALUE)
4718 leency 82
				{
4725 leency 83
					strcpy(new_buf, "'");
4718 leency 84
					new_buf+=12;
4719 leency 85
					mode = TAG;
86
					break;
4718 leency 87
				}
88
			default:
4725 leency 89
				ESBYTE[new_buf] = ww;
90
				new_buf++;
4718 leency 91
		}
92
	}
4725 leency 93
	ESBYTE[new_buf] = 0;
94
	bufsize = new_buf - new_buf_start;
4718 leency 95
	free(bufpointer);
96
	bufpointer = new_buf_start;
97
}