Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5906 → Rev 5907

/programs/string.inc
55,6 → 55,29
ret
endp
 
proc string.cmp uses ecx esi edi, _str1, _str2, _n
mov ecx, [_n]
test ecx, ecx ; Max length is zero?
je .done
 
mov esi, [_str1] ; esi = string s1
mov edi, [_str2] ; edi = string s2
cld
.compare:
cmpsb ; Compare two bytes
jne .done
cmp byte [esi-1], 0 ; End of string?
je .done
dec ecx ; Length limit reached?
jne .compare
.done:
seta al ; al = (s1 > s2)
setb ah ; ah = (s1 < s2)
sub al, ah
movsx eax, al ; eax = (s1 > s2) - (s1 < s2), i.e. -1, 0, 1
ret
endp
 
proc string.to_lower_case uses eax, _str
mov eax, [_str]
@@:
/programs/system/open/open.asm
208,7 → 208,6
;; if without '.' - execute
stdcall string.last_index_of, [param_s], '.', 1
cmpe eax, -1, execute
 
;; if '.' is part of path - execute
mov esi, eax
stdcall string.last_index_of, [param_s], '/', 1
298,6 → 297,7
 
;; get list
invoke libini.for_each_section, assoc_ini, section_cb
stdcall sort_list
mov eax, [sb_apps.max_area]
and eax, 1b
shr [sb_apps.max_area], 1
911,6 → 911,55
 
;----------------------
 
proc sort_list
mov edi, 0
mov ebx, list ;; i = 0
imul ecx, [list.size], 32 ;; i < n - 1
sub ecx, 32
add ecx, list
 
.loop1:
mov edx, list ;; j = 0
mov esi, [list.size] ;; j < n - i - 1
sub esi, edi
dec esi
imul esi, 32
add esi, list
.loop2:
mov eax, edx
add eax, 32
stdcall string.cmp, edx, eax, 32
cmpne eax, 1, .next2
;; swap names
mov eax, edx
add eax, 32
stdcall string.copy, edx, buffer7
stdcall string.copy, eax, edx
stdcall string.copy, buffer7, eax
;; swap icons
mov eax, edx
sub eax, list
shr eax, 3
add eax, list.icon
push ebx ecx
mov ebx, [eax]
mov ecx, [eax + 4]
mov [eax], ecx
mov [eax + 4], ebx
pop ecx ebx
.next2:
add edx, 32
cmpne edx, esi, .loop2
.next1:
inc edi
add ebx, 32
cmpne ebx, ecx, .loop1
 
ret
endp
 
;----------------------
 
dataend:
 
;===============================
933,11 → 982,12
param_a rd 1
undefined rb 1
buffer rb 2048
buffer2 rb 2048
buffer3 rb 2048
buffer4 rb 4096
buffer5 rb 4096
buffer6 rb 2048
buffer2 rb 2048 ;OD
buffer3 rb 2048 ;OD
buffer4 rb 2048 ;OD
buffer5 rb 2048 ;OD
buffer6 rb 2048 ;check existance
buffer7 rb 32 ;for sorting
params rb 2048
_stack rb 2048
memory: