Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
984 | leency | 1 | //INI parser in C--, GPL licence. |
2 | //Copyright 2008 by 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); |
||
42 | IF (parametr) && (!strcmp(#file_name+find_symbol(#file_name,'.'),#parametr)) {RunProgram(#option,#file_path); return;} |
||
43 | parametr=option=''; |
||
44 | break; |
||
45 | default: |
||
46 | IF (InfType==SECTION) copystr(#bukva,#section+strlen(#section)); |
||
47 | IF (InfType==PARAM) copystr(#bukva,#parametr+strlen(#parametr)); |
||
48 | IF (InfType==OPTION) copystr(#bukva,#option+strlen(#option)); |
||
49 | } |
||
50 | } |
||
51 | INI_END: |
||
52 | IF (file_path) RunProgram(#file_path,''); |
||
53 | } |
||
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 | }*/> |