Subversion Repositories Kolibri OS

Rev

Rev 501 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
488 spraid 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