Subversion Repositories Kolibri OS

Rev

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