Subversion Repositories Kolibri OS

Rev

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