X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;ds=sidebyside;f=fileutils.asm;h=32dcef6fd579a9610fd45dc1a3f89cf9cabf2f60;hb=HEAD;hp=6c30ca61658fa6f2e9ff68b2160ae4f31c3dd8d5;hpb=6cf67300c03d92a9cc0c5888b33cdb21a852eb69;p=sped.git diff --git a/fileutils.asm b/fileutils.asm index 6c30ca6..32dcef6 100644 --- a/fileutils.asm +++ b/fileutils.asm @@ -1,3 +1,6 @@ +; sped - the stupidly pointless editor +; written by pinosaur +; fileutils.asm: file i/o %include "macros.S" @@ -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 @@ -62,16 +66,12 @@ readFile: push DWORD [ebp-FILE_HANDLE] call readLine - mov esi, eax mov [ebp-IS_EOF], ebx ; check if eof was reached cmp DWORD [ebp-IS_EOF], 1 je _readFile_exit - - ; push esi - ; call printf ; 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