Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  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<fsize; 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. }*/
  67.