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