X-Git-Url: https://git.danieliu.xyz/?p=sped.git;a=blobdiff_plain;f=fileutils.asm;h=32dcef6fd579a9610fd45dc1a3f89cf9cabf2f60;hp=1d78439ca5a072ae29cac9d6fedb9abd905d6c84;hb=HEAD;hpb=89732d399de9007aaf2894b0c637e8cfb9ed47ac diff --git a/fileutils.asm b/fileutils.asm index 1d78439..32dcef6 100644 --- a/fileutils.asm +++ b/fileutils.asm @@ -1,5 +1,8 @@ +; sped - the stupidly pointless editor +; written by pinosaur +; fileutils.asm: file i/o -%include "utils.S" +%include "macros.S" extern printf extern malloc @@ -14,6 +17,7 @@ global writeFile section .data wrongfile_str db `unable to open file, error code: %i\n`, 0x00 + returnvalue_str db `system call return was %i\n`, 0x00 section .text @@ -60,18 +64,14 @@ readFile: _readFile_loop: - ; check if eof was reached - cmp DWORD [ebp-IS_EOF], 1 - je _readFile_exit - push DWORD [ebp-FILE_HANDLE] call readLine - mov esi, eax mov [ebp-IS_EOF], ebx - - ; push esi - ; call printf + + ; check if eof was reached + cmp DWORD [ebp-IS_EOF], 1 + je _readFile_exit ; make string buffer bigger mov eax, DWORD [ebp-LINES_READ] @@ -159,13 +159,6 @@ readLine: add ecx, [ebp-CHAR_COUNT] mov edx, 1 int 0x80 - - ; mov eax, 4 - ; mov ebx, 1 - ; mov ecx, [ebp-STR_PTR] - ; add ecx, [ebp-CHAR_COUNT] - ; mov edx, 1 - ; int 0x80 ; check for eof cmp eax, 0 ; eax has zero on eof @@ -233,11 +226,13 @@ writeFile: ; check if file was open successfully cmp eax, 0 - jge _writeFile_loop - push eax - push wrongfile_str - call printf - jmp _writeFile_exit + jl _writeFile_error + + ; truncate file + mov eax, 93 + mov ebx, [ebp-FILE_HANDLE] + mov ecx, 1 + int 0x80 _writeFile_loop: @@ -262,6 +257,12 @@ writeFile: jmp _writeFile_loop + _writeFile_error: + push eax + push wrongfile_str + call printf + jmp _writeFile_exit + _writeFile_exit: ; close file