Subversion Repositories Kolibri OS

Rev

Rev 984 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 984 Rev 1415
1
//INI parser in C--, GPL licence.
1
//INI parser in C--, GPL licence.
2
//Copyright 2008 by Leency
2
//Leency - 2008
3
 
3
 
4
#define COMMENT	0
4
#define COMMENT	0
5
#define SECTION	1
5
#define SECTION	1
6
#define PARAM	2
6
#define PARAM	2
7
#define OPTION	3
7
#define OPTION	3
8
 
8
 
9
void GetIni(dword inipath)
9
void GetIni(dword inipath)
10
{
10
{
11
	byte section[32]='', parametr[32]='', option[256]='', InfType=0;
11
	byte section[32]='', parametr[32]='', option[256]='', InfType=0;
12
	word bukva[1];
12
	word bukva[1];
13
	dword buff, fsize, tj;
13
	dword buff, fsize, tj;
14
	//÷èòàåì ôàéë
14
	//÷èòàåì ôàéë
15
	buff = malloc(1048576);
15
	buff = malloc(1048576);
16
	ReadFile(0, 1048576, buff, inipath);
16
	ReadFile(0, 1048576, buff, inipath);
17
	IF (EAX<>6) {WriteDebug("INI-file not found. Defaults will be used."); goto INI_END;}
17
	IF (EAX<>6) {WriteDebug("INI-file not found. Defaults will be used."); goto INI_END;}
18
	fsize=EBX;
18
	fsize=EBX;
19
	//ïàðñèì åãî
19
	//ïàðñèì åãî
20
	for (tj=0; tj
20
	for (tj=0; tj
21
	{   
21
	{   
22
		bukva = ESBYTE[buff+tj];
22
		bukva = ESBYTE[buff+tj];
23
		switch (bukva)
23
		switch (bukva)
24
		{
24
		{
25
			case ';':
25
			case ';':
26
				InfType=COMMENT;
26
				InfType=COMMENT;
27
				break;				
27
				break;				
28
			case '[':
28
			case '[':
29
				InfType=SECTION;
29
				InfType=SECTION;
30
				section='';
30
				section='';
31
				break;
31
				break;
32
			case ']':
32
			case ']':
33
				InfType=PARAM;
33
				InfType=PARAM;
34
				break;
34
				break;
35
			case '=':
35
			case '=':
36
				InfType=OPTION;
36
				InfType=OPTION;
37
				break;
37
				break;
38
			case 0x0a:
38
			case 0x0a:
39
			case 0x0d:
39
			case 0x0d:
40
				InfType=PARAM;
40
				InfType=PARAM;
41
				//IF (strcmp(#parametr,"select_color")==0) videlenie=StrToCol(#option);
41
				//IF (strcmp(#parametr,"select_color")==0) videlenie=StrToCol(#option);
42
				IF (parametr) && (!strcmp(#file_name+find_symbol(#file_name,'.'),#parametr)) {RunProgram(#option,#file_path); return;}
42
				IF (parametr) && (!strcmp(#file_name+find_symbol(#file_name,'.'),#parametr)) {
-
 
43
					RunProgram(#option,#file_path);
-
 
44
					return;
-
 
45
				}
43
				parametr=option='';
46
				parametr=option='';
44
				break;
47
				break;
45
			default:
48
			default:
46
				IF (InfType==SECTION) copystr(#bukva,#section+strlen(#section));
49
				IF (InfType==SECTION) copystr(#bukva,#section+strlen(#section));
47
				IF (InfType==PARAM) copystr(#bukva,#parametr+strlen(#parametr));
50
				IF (InfType==PARAM) copystr(#bukva,#parametr+strlen(#parametr));
48
				IF (InfType==OPTION) copystr(#bukva,#option+strlen(#option));
51
				IF (InfType==OPTION) copystr(#bukva,#option+strlen(#option));
49
		}
52
		}
50
	}
53
	}
51
	INI_END: 
54
	INI_END: 
52
	IF (file_path) RunProgram(#file_path,''); 
55
	IF (file_path) RunProgram(#file_path,''); 
53
}
56
}
54
 
-
 
55
 
-
 
56
/*inline fastcall void OpenFile(ESI)
-
 
57
{
-
 
58
	byte ext_n_progs="ext|tinypad|ext2|Eolite|"; //=ESI
-
 
59
	byte str;
-
 
60
	do{
-
 
61
		$lodsb
-
 
62
		IF(AL=='|') str='';
-
 
63
		copystr(ESBYTE[AL],str);
-
 
64
	} while(AL!=0);
-
 
65
	//RunProgram(fpath, #fparam); //çàïóñê!	
-
 
66
}*/
-