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 | }*/> |
- |