Subversion Repositories Kolibri OS

Rev

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

  1. pars_cmd:
  2.         mov     edi, PATH
  3.         mov     ecx, 512
  4. .still:
  5.         mov     al, ' '
  6.         repz    scasb
  7.  
  8.         test    ecx, ecx
  9.         jz      .end_parser
  10.  
  11.         dec     edi
  12.         mov     ebx, edi  ;save edi
  13.         cmp     byte[edi],'"'
  14.         jnz     @f ;.skip_string
  15.         mov     eax, [save_file]
  16.         cmp     eax, [.flag_drv]
  17.         jae     .str_save
  18.  
  19.         cmp     dword[drv_ptr], 0
  20.         jnz     .err
  21.         mov     [drv_ptr],edi
  22.         inc     dword[drv_ptr]
  23.         jmp     .skip_string
  24. .str_save:
  25.         cmp     dword[save_ptr], 0
  26.         jnz     .err
  27.         mov     [save_ptr],edi
  28.         inc     dword[save_ptr]
  29.         jmp     .skip_string
  30. @@:
  31.  
  32.         cmp     word[edi], 's-'
  33.         jnz     @f
  34.         cmp     dword[save_file], 0
  35.         jnz     @f
  36.         mov     [save_file], edi
  37. @@:
  38.         cmp     word[edi], 'd-'
  39.         jnz     @f
  40.         cmp     dword[.flag_drv], 0
  41.         jnz     @f
  42.         mov     [.flag_drv], edi
  43.         add     edi, 2
  44. @@:
  45.         cmp     edi, ebx
  46.         jz      .err
  47.         jmp     .still
  48.  
  49. .skip_string:
  50.         inc     edi
  51.         mov     al, '"'
  52.         rep     scasb
  53.         test    ecx, ecx
  54.         jz      .err
  55.         mov     byte[edi-1], 0x00
  56.         jmp     .still
  57. .err:
  58.         or      eax, -1
  59.         ret
  60. .end_parser:
  61.         xor     eax, eax
  62.         ret
  63. .flag_drv:      dd 0;don`t using in other code