Rev 1415 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1415 | Rev 2031 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | //INI parser in C--, GPL licence. |
1 | //INI parser in C--, GPL licence. |
2 | //Leency - 2008 |
2 | //Leency - 2011 |
Line 3... | Line 3... | ||
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 |
Line 7... | Line 7... | ||
7 | #define OPTION 3 |
7 | #define OPTION 3 |
8 | 8 | ||
9 | void GetIni(dword inipath) |
9 | void GetIni(byte onload) |
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 | int errornum; |
13 | dword buff, fsize, tj; |
14 | dword buff, fsize, tj; |
14 | //÷èòàåì ôàéë |
15 | //÷èòàåì ôàéë |
- | 16 | buff = malloc(1048576); |
|
- | 17 | ReadFile(0, 1048576, buff, INI_PATH); |
|
15 | buff = malloc(1048576); |
18 | IF (EAX<>6) //åñëè ôàéë ñ íàñòðîéêàìè íå íàéäåí |
- | 19 | { |
|
- | 20 | IF (onload==1) RunProgram(NOTIFY_PATH, "Eolite.ini not found. Defaults will be used."); |
|
16 | ReadFile(0, 1048576, buff, inipath); |
21 | IF (onload==0) goto RUN_AS_PROGRAM; |
17 | IF (EAX<>6) {WriteDebug("INI-file not found. Defaults will be used."); goto INI_END;} |
22 | } |
18 | fsize=EBX; |
23 | fsize=EBX; |
19 | //ïàðñèì åãî |
24 | //ïàðñèì åãî |
20 | for (tj=0; tj |
25 | for (tj=0; tj |
Line 38... | Line 43... | ||
38 | case 0x0a: |
43 | case 0x0a: |
39 | case 0x0d: |
44 | case 0x0d: |
40 | InfType=PARAM; |
45 | InfType=PARAM; |
41 | //IF (strcmp(#parametr,"select_color")==0) videlenie=StrToCol(#option); |
46 | //IF (strcmp(#parametr,"select_color")==0) videlenie=StrToCol(#option); |
42 | IF (parametr) && (!strcmp(#file_name+find_symbol(#file_name,'.'),#parametr)) { |
47 | IF (parametr) && (!strcmp(#file_name+find_symbol(#file_name,'.'),#parametr)) { |
43 | RunProgram(#option,#file_path); |
48 | errornum=RunProgram(#option,#file_path); |
- | 49 | IF (errornum<0) //åñëè îøèáî÷êà âûøëà ïðè çàïóñêå |
|
- | 50 | { |
|
- | 51 | WriteDebug(#option); |
|
- | 52 | Write_Debug_Error(errornum); |
|
- | 53 | } |
|
44 | return; |
54 | return; |
45 | } |
55 | } |
46 | parametr=option=''; |
56 | parametr=option=''; |
47 | break; |
57 | break; |
48 | default: |
58 | default: |
49 | IF (InfType==SECTION) copystr(#bukva,#section+strlen(#section)); |
59 | IF (InfType==SECTION) copystr(#bukva,#section+strlen(#section)); |
50 | IF (InfType==PARAM) copystr(#bukva,#parametr+strlen(#parametr)); |
60 | IF (InfType==PARAM) copystr(#bukva,#parametr+strlen(#parametr)); |
51 | IF (InfType==OPTION) copystr(#bukva,#option+strlen(#option)); |
61 | IF (InfType==OPTION) copystr(#bukva,#option+strlen(#option)); |
52 | } |
62 | } |
53 | } |
63 | } |
54 | INI_END: |
64 | RUN_AS_PROGRAM: |
55 | IF (file_path) RunProgram(#file_path,''); |
65 | IF (file_path) errornum=RunProgram(#file_path,''); |
- | 66 | IF (errornum<0) //åñëè îøèáî÷êà âûøëà ïðè çàïóñêå |
|
- | 67 | { |
|
- | 68 | WriteDebug(#file_path); |
|
- | 69 | Write_Debug_Error(errornum); |
|
- | 70 | } |
|
- | 71 | } |
|
- | 72 | ||
- | 73 | ||
- | 74 | /////////////////////////////////////////// |
|
- | 75 | /// íóæíî ÷òîáû ïðîñòî âîçâðàùàëî òåêñò /// |
|
- | 76 | /////////////////////////////////////////// |
|
- | 77 | ||
- | 78 | void Write_Debug_Error(int error_number){ |
|
- | 79 | ||
- | 80 | IF (error_number<0) error_number=-1*error_number; |
|
- | 81 | switch (error_number) //èçâåñíàÿ îøèáêà - ïèøåì êàêàÿ è óõîäèì |
|
- | 82 | { |
|
- | 83 | CASE 2: RunProgram(NOTIFY_PATH, "Eolite: error 2 - Function is not supported for the given file system"); |
|
- | 84 | return; |
|
- | 85 | CASE 3: RunProgram(NOTIFY_PATH, "Eolite: error 3 - Unknown file system"); |
|
- | 86 | return; |
|
- | 87 | CASE 5: RunProgram(NOTIFY_PATH, "Eolite: error 5 - File or folder not found"); |
|
- | 88 | return; |
|
- | 89 | CASE 6: RunProgram(NOTIFY_PATH, "Eolite: error 6 - End of file, EOF"); |
|
- | 90 | return; |
|
- | 91 | CASE 7: RunProgram(NOTIFY_PATH, "Eolite: error 7 - Pointer lies outside of application memory"); |
|
- | 92 | return; |
|
- | 93 | case 8: RunProgram(NOTIFY_PATH, "Eolite: error 8 - FAT table is destroyed"); |
|
- | 94 | return; |
|
- | 95 | case 9: RunProgram(NOTIFY_PATH, "Eolite: error 9 - FAT table is destroyed"); |
|
- | 96 | RETURN; |
|
- | 97 | case 10:RunProgram(NOTIFY_PATH, "Eolite: error 10 - Access denied"); |
|
- | 98 | RETURN; |
|
- | 99 | case 11:RunProgram(NOTIFY_PATH, "Eolite: error 11 - Device error"); |
|
- | 100 | RETURN; |
|
- | 101 | case 30:RunProgram(NOTIFY_PATH, "Eolite: error 30 - Not enough memory"); |
|
- | 102 | RETURN; |
|
- | 103 | case 31:RunProgram(NOTIFY_PATH, "Eolite: error 31 - File is not executable"); |
|
- | 104 | RETURN; |
|
- | 105 | case 32:RunProgram(NOTIFY_PATH, "Eolite: error 32 - Too many processes"); |
|
- | 106 | RETURN; |
|
- | 107 | default:RunProgram(NOTIFY_PATH, "Unknown error number O_o"); |
|
- | 108 | } |
|
56 | }> |
109 | }0)>0)>0)>> |