Files
kolibrios/programs/develop/libraries/framework/libconfig/find_str.asm
T
ace-dent e05b57a95e develop/libraries: Post-SVN tidy (#436)
- Move source code from `trunk` into root directory for each library.
- Update build files and ASM include paths. Add SPDX license header where appropriate.
- Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden.

(Work towards #75, point 3)

Reviewed-on: KolibriOS/kolibrios#436
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: Andrew <dent.ace@gmail.com>
Co-committed-by: Andrew <dent.ace@gmail.com>
2026-04-25 09:20:05 +00:00

50 lines
2.1 KiB
FASM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Copyright (C) Vasiliy Kosenko (vkos), 2009 ;;
;; This program is free software: you can redistribute it and/or modify it under the terms of ;;
;; the GNU General Public License as published by the Free Software Foundation, either version 3 ;;
;; of the License, or (at your option) any later version. ;;
;; ;;
;; This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; ;;
;; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ;;
;; See the GNU General Public License for more details. ;;
;; ;;
;; You should have received a copy of the GNU General Public License along with this program. ;;
;; If not, see <http://www.gnu.org/licenses/>. ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Now there is only one function now: find string in array of strings ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; int str_find_in_array(char **options, char *str)
;; NOTE: options should be zero-ended array
str_find_in_array:
push ebx
mov ebx, [esp+8]
cld
.convert_nxt:
add ebx, 4
mov esi, dword [ebx-4]
test esi, esi
je .set_default ;; String is incorrect, so set default
mov edi, [esp+0xc]
.conv_loop:
cmpsb
jne .convert_nxt ;; Not equal, so try next
dec esi
lodsb
test al, al
jne .conv_loop
.found:
sub ebx, [esp+8]
shr ebx, 2
mov eax, ebx
.exit:
dec eax
pop ebx
ret
.set_default:
xor eax, eax
jmp .exit