Subversion Repositories Kolibri OS

Rev

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

  1. //INI parser in C--, GPL licence.
  2. //Leency - 2008
  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)) {
  43.                                         RunProgram(#option,#file_path);
  44.                                         return;
  45.                                 }
  46.                                 parametr=option='';
  47.                                 break;
  48.                         default:
  49.                                 IF (InfType==SECTION) copystr(#bukva,#section+strlen(#section));
  50.                                 IF (InfType==PARAM) copystr(#bukva,#parametr+strlen(#parametr));
  51.                                 IF (InfType==OPTION) copystr(#bukva,#option+strlen(#option));
  52.                 }
  53.         }
  54.         INI_END:
  55.         IF (file_path) RunProgram(#file_path,'');
  56. }
  57.