Rev 984 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
984 | leency | 1 | //INI parser in C--, GPL licence. |
1415 | leency | 2 | //Leency - 2008 |
984 | leency | 3 | |
4 | #define COMMENT 0 |
||
5 | #define SECTION 1 |
||
6 | #define PARAM 2 |
||
7 | #define OPTION 3 |
||
8 | |||
9 | void GetIni(dword inipath) |
||
10 | { |
||
11 | byte section[32]='', parametr[32]='', option[256]='', InfType=0; |
||
12 | word bukva[1]; |
||
13 | dword buff, fsize, tj; |
||
14 | //читаем файл |
||
15 | buff = malloc(1048576); |
||
16 | ReadFile(0, 1048576, buff, inipath); |
||
17 | IF (EAX<>6) {WriteDebug("INI-file not found. Defaults will be used."); goto INI_END;} |
||
18 | fsize=EBX; |
||
19 | //парсим его |
||
20 | for (tj=0; tj |
||
21 | { |
||
22 | bukva = ESBYTE[buff+tj]; |
||
23 | switch (bukva) |
||
24 | { |
||
25 | case ';': |
||
26 | InfType=COMMENT; |
||
27 | break; |
||
28 | case '[': |
||
29 | InfType=SECTION; |
||
30 | section=''; |
||
31 | break; |
||
32 | case ']': |
||
33 | InfType=PARAM; |
||
34 | break; |
||
35 | case '=': |
||
36 | InfType=OPTION; |
||
37 | break; |
||
38 | case 0x0a: |
||
39 | case 0x0d: |
||
40 | InfType=PARAM; |
||
41 | //IF (strcmp(#parametr,"select_color")==0) videlenie=StrToCol(#option); |
||
1415 | leency | 42 | IF (parametr) && (!strcmp(#file_name+find_symbol(#file_name,'.'),#parametr)) { |
43 | RunProgram(#option,#file_path); |
||
44 | return; |
||
45 | } |
||
984 | leency | 46 | parametr=option=''; |
47 | break; |
||
48 | default: |
||
49 | IF (InfType==SECTION) copystr(#bukva,#section+strlen(#section)); |
||
50 | IF (InfType==PARAM) copystr(#bukva,#parametr+strlen(#parametr)); |
||
51 | IF (InfType==OPTION) copystr(#bukva,#option+strlen(#option)); |
||
52 | } |
||
53 | } |
||
54 | INI_END: |
||
55 | IF (file_path) RunProgram(#file_path,''); |
||
56 | }> |