Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
7282 leency 1
bool GetNextParam() {
2
	if (!old_tag_parser_mode)
3
		return GetNextParam_NEW();
4
	else
5
		return GetNextParam_OLD();
6
}
7
 
8
bool GetNextParam_NEW()
4411 leency 9
{
7282 leency 10
	byte  quotes = NULL;
11
	int   i;
12
 
13
	if (!tagparam) return false;
14
 
15
	if (debug_mode) {
16
		debug("tagparam: "); debugln(#tagparam);
17
	}
18
 
19
	i = strlen(#tagparam) - 1;
20
 
21
	if (tagparam[i] == '/') i--;
22
 
23
	while (i>0) && (__isWhite(tagparam[i])) i--;
24
 
25
	if (tagparam[i] == '"') || (tagparam[i] == '\'')
26
	{
27
		//find VAL end
28
		quotes = tagparam[i];
29
		tagparam[i] = '\0'; i--;
30
 
31
		//find VAL start and copy
32
		i = strrchr(#tagparam, quotes);
33
		strlcpy(#val, #tagparam + i, sizeof(val));
34
		tagparam[i] = '\0'; i--;
35
 
36
		//find ATTR end
37
		while (i > 0) && (tagparam[i] != '=') i--;
38
		tagparam[i+1] = '\0';
39
	}
40
	else
41
	{
42
		//find VAL end
43
		//already have
44
 
45
		//find VAL start and copy
46
		while (i > 0) && (tagparam[i] != '=') i--;
47
		i++;
48
		strlcpy(#val, #tagparam + i, sizeof(val));
49
		tagparam[i] = '\0';
50
 
51
		//find ATTR end
52
		//already have
53
	}
54
 
55
	//find ATTR start and copy
56
	while (i>0) && (!__isWhite(tagparam[i])) i--;
57
	strlcpy(#attr, #tagparam + i + 1, sizeof(attr));
58
	tagparam[i] = '\0';
59
 
60
	strlwr(#attr);
61
 
62
	if (debug_mode) {
63
		if (quotes) {
64
			debug("quote: "); debugch(quotes); debugln(" ");
65
		}
66
		else {
67
			debugln("unquoted text");
68
		}
69
		sprintf(#param, "val: %s\nattr: %s\n\n", #val, #attr);
70
		debug(#param);
71
	}
72
 
73
	return true;
74
}
75
 
76
 
77
 
78
unsigned int GetNextParam_OLD()
79
{
4688 leency 80
	byte	kavichki=0;
4411 leency 81
	int		i = strlen(#tagparam) - 1;
82
 
83
	if (!tagparam) return 0;
84
 
85
	WHILE((i > 0) && ((tagparam[i] == '"') || (tagparam[i] == ' ') || (tagparam[i] == '\'') || (tagparam[i] == '/')))
86
	{
87
		IF (tagparam[i] == '"') || (tagparam[i] == '\'') kavichki=tagparam[i];
88
		tagparam[i] = 0x00;
89
		i--;
90
	}
91
 
92
	if (kavichki)
93
	{
6986 leency 94
		i = strrchr(#tagparam, kavichki);
5746 leency 95
		strlcpy(#val, #tagparam + i, sizeof(val));
4411 leency 96
	}
97
	else
98
	{
99
		WHILE((i > 0) && (tagparam[i] <>'=')) i--; //i=strrchr(#tagparam, '=')+1;
100
		i++;
5746 leency 101
		strlcpy(#val, #tagparam + i, sizeof(val));
4411 leency 102
 
5746 leency 103
		WHILE (val[0] == ' ') strcpy(#val, #val+1);
6986 leency 104
		ESBYTE[strchr(#val, ' ')] = NULL;
4411 leency 105
	}
106
	tagparam[i] = 0x00;
107
 
108
	FOR ( ; ((tagparam[i] <>' ') && (i > 0); i--)
109
	{
7282 leency 110
		IF (tagparam[i] == '=') //dirty fix (kludge)
4411 leency 111
			tagparam[i + 1] = 0x00;
112
	}
5746 leency 113
	strlcpy(#attr, #tagparam + i + 1, sizeof(attr));
4411 leency 114
	tagparam[i] = 0x00;
5746 leency 115
	strlwr(#attr);
4411 leency 116
	return 1;
117
}