Subversion Repositories Kolibri OS

Rev

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

  1. ;-------------------------------------------------------------------------
  2. ;
  3. ;    Замена имен файлов
  4. ;
  5. ;
  6. ;     SPraid
  7. ;
  8. ;-------------------------------------------------------------------------
  9.  
  10. ; перебирает по файлу варианты замен
  11. proc full_file_name stdcall,sourc,dest
  12. locals
  13.   param  rb 60
  14.   val    rb 60
  15.   tmpsrc rb 60  ; временное хранение преобразования
  16. endl  
  17.   pushad
  18.  
  19.    
  20.   mov esi,[sourc]
  21.   mov edi,ebp
  22.   add edi,tmpsrc-ebp
  23. @@:
  24.   lodsb
  25.   stosb
  26.   or al,al
  27.   jnz @b
  28.  
  29.   mov al,[conf_file_loaded]                                     ; требуется при обращении к первому файлу (конфигу)
  30.   or al,al
  31.   jnz @use_replace
  32.      
  33.   jmp full_file_name_exit
  34.  
  35.    
  36. ;--------------------------------
  37.  @use_replace:
  38.  
  39.   xor eax,eax
  40. .loop:
  41.   push eax
  42.   mov ebx,ebp
  43.   add ebx,param-ebp
  44.   mov ecx,ebp
  45.   add ecx,val-ebp
  46.   invoke ini.get_par,sect, ebx, ecx, eax
  47.  
  48.   mov bl,[param]
  49.   or bl,bl
  50.   jz .done
  51.  
  52.   mov eax,ebp
  53.   add eax,tmpsrc-ebp
  54.   mov ebx,ebp
  55.   add ebx,param-ebp
  56.   mov ecx,ebp
  57.   add ecx,val-ebp
  58.   mov edx,[dest]
  59.  
  60.   stdcall full_file_name_parse, eax,edx,ebx,ecx
  61.  
  62.   mov esi,[dest]
  63.   mov edi,ebp
  64.   add edi,tmpsrc-ebp
  65. @@:
  66.   lodsb
  67.   stosb
  68.   or al,al
  69.   jnz @b
  70.  
  71.   pop eax
  72.   inc eax
  73.   jmp .loop
  74.  
  75. .done:  
  76.   pop eax
  77. full_file_name_exit:
  78.  
  79.   mov eax,ebp
  80.   add eax,tmpsrc-ebp
  81.   stdcall full_file_name_parse , eax , [dest], sysdir_ , sys_path
  82.   popad
  83.   ret
  84. endp
  85.  
  86. sect: db 'path',0
  87.  
  88. ;
  89. ;  Преобразовать имя в полное. Если в начале стоит
  90. ;     sourc - ссылка на строку...
  91. ;         dest - ссылка на буфер куда результат ложить
  92. ;         def - строка шаблон для поиска
  93. ;         dval - к чему приравнивать шаблон
  94. proc full_file_name_parse stdcall,sourc,dest,def,dval
  95.   ; для одного
  96.   pushad
  97.  
  98.   mov eax,[sourc]
  99.   mov ebx,[def]
  100. @@:
  101.   mov dl,[ebx]
  102.   mov cl,[eax]
  103.   cmp cl,0
  104.   je  @@bad_s
  105.   cmp dl,0
  106.   je  @@good
  107.  
  108.   or cl,0x20
  109.   or dl,0x20
  110.   cmp cl,dl
  111.   jne  @@bad
  112.  
  113.   inc eax
  114.   inc ebx
  115.   jmp @b
  116.  
  117. @@bad_s:
  118.   cmp dl,0
  119.   je  @@good  
  120.  
  121. @@bad:
  122.   mov edi,[dest]
  123.   mov esi,[sourc]
  124. @@:
  125.   lodsb
  126.   stosb
  127.   or al,al
  128.   jnz   @b
  129.   jmp @@ret_ok
  130.  
  131. @@good:
  132.   push eax
  133.   mov edi,[dest]
  134.   mov esi,[dval]
  135. @@:
  136.   lodsb
  137.   stosb
  138.   or al,al
  139.   jnz   @b
  140.  
  141. @@goodl:  
  142.   pop esi
  143.   dec edi
  144. @@:
  145.   lodsb
  146.   stosb
  147.   or al,al
  148.   jnz   @b
  149.  
  150. @@ret_ok:
  151.   popad
  152.   ret
  153.  
  154. endp                            
  155.    
  156.  sys_dir_mess: db 'System dir is '
  157.  sys_path: db '/HD0/1/KOLIBRI',0,0
  158.  sysdir_ db '%sys%',0
  159.  
  160. ; берет параметры bx_from_load и исчит файл конфигурации
  161. Parser_params:
  162.   pushad
  163.   mov ax,[BOOT_VAR+bx_from_load]
  164.   cmp al,'r' ; рам диск
  165.   jnz @f
  166.   mov [sys_path],dword '/RD/'
  167.   mov [sys_path+4],byte ah
  168.   mov [sys_path+5],word 0 ;0x002F
  169.   jmp .done
  170. @@:
  171.   sub al,49
  172.   mov [sys_path],dword '/HDa'
  173.   mov [sys_path+3],byte al
  174.   mov [sys_path+4],byte '/'
  175.   mov [sys_path+5],byte ah
  176.   mov [sys_path+6],dword '/KOL'
  177.   mov [sys_path+10],dword 'IBRI'
  178.   mov [sys_path+14],word 0 ;0x002F
  179.  
  180. .done:
  181.   popad
  182.   ret
  183.