- _readFile_exit:
- ; close file
- mov eax, 6
- mov ebx, [ebp-FILE_HANDLE]
- int 0x80
-
- %undef _FILE_NAME
- %undef FILE_HANDLE
-
- mov esp, ebp
- pop ebp
- ret
-
-
-; reads a line until newline character is reached
-; args: file_handle
-; return:
-; location to buffer
-; contains eof
-readLine:
- %define _FILE_HANDLE 8
- %define CHAR_PTR 4
-
- push ebp
- mov ebp, esp
-
- sub esp, 4
- mov DWORD [ebp-CHAR_PTR], 0x00
-
- _readLine_loop:
- ; if buffer is full
- cmp BYTE [ebp-CHAR_PTR], 64
- jne _readLine_notfull
- jmp _readLine_exit
-
- _readLine_notfull:
- ; read a single character
- mov eax, 3
- mov ebx, [ebp+_FILE_HANDLE]
- mov ecx, read_buf
- add ecx, [ebp-CHAR_PTR]
- mov edx, 1
- int 0x80
-
- mov eax, 4
- mov ebx, 1
- mov ecx, read_buf
- add ecx, [ebp-CHAR_PTR]
- mov edx, 1
- int 0x80
-
- ; check for newline
- mov eax, read_buf
- add eax, [ebp-CHAR_PTR]
- cmp DWORD [eax], 0x0a
- je _readLine_exit
-
- ; check for eof
- mov eax, read_buf
- add eax, [ebp-CHAR_PTR]
- cmp DWORD [eax], 0x05
- je _readLine_exit
-
- add DWORD [ebp-CHAR_PTR], 1