kolibrios/programs/fs/Eolite/trunk/include/ini.h--
Kirill Lipatov (Leency) 5e2872af34 Eolite 0.98.5
git-svn-id: svn://kolibrios.org@984 a494cfbc-eb01-0410-851d-a64ba20cac60
2008-12-29 01:49:26 +00:00

67 lines
1.6 KiB
Plaintext

//INI parser in C--, GPL licence.
//Copyright 2008 by Leency
#define COMMENT 0
#define SECTION 1
#define PARAM 2
#define OPTION 3
void GetIni(dword inipath)
{
byte section[32]='', parametr[32]='', option[256]='', InfType=0;
word bukva[1];
dword buff, fsize, tj;
//÷èòàåì ôàéë
buff = malloc(1048576);
ReadFile(0, 1048576, buff, inipath);
IF (EAX<>6) {WriteDebug("INI-file not found. Defaults will be used."); goto INI_END;}
fsize=EBX;
//ïàðñèì åãî
for (tj=0; tj<fsize; tj++;)
{
bukva = ESBYTE[buff+tj];
switch (bukva)
{
case ';':
InfType=COMMENT;
break;
case '[':
InfType=SECTION;
section='';
break;
case ']':
InfType=PARAM;
break;
case '=':
InfType=OPTION;
break;
case 0x0a:
case 0x0d:
InfType=PARAM;
//IF (strcmp(#parametr,"select_color")==0) videlenie=StrToCol(#option);
IF (parametr) && (!strcmp(#file_name+find_symbol(#file_name,'.'),#parametr)) {RunProgram(#option,#file_path); return;}
parametr=option='';
break;
default:
IF (InfType==SECTION) copystr(#bukva,#section+strlen(#section));
IF (InfType==PARAM) copystr(#bukva,#parametr+strlen(#parametr));
IF (InfType==OPTION) copystr(#bukva,#option+strlen(#option));
}
}
INI_END:
IF (file_path) RunProgram(#file_path,'');
}
/*inline fastcall void OpenFile(ESI)
{
byte ext_n_progs="ext|tinypad|ext2|Eolite|"; //=ESI
byte str;
do{
$lodsb
IF(AL=='|') str='';
copystr(ESBYTE[AL],str);
} while(AL!=0);
//RunProgram(fpath, #fparam); //çàïóñê!
}*/