Subversion Repositories Kolibri OS

Rev

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