mirror of https://github.com/nmlgc/ReC98.git
[Reduction] #508: fclose
This commit is contained in:
parent
8ae2349005
commit
5aad47cb08
|
@ -0,0 +1,89 @@
|
||||||
|
; int __cdecl fclose(FILE *fp)
|
||||||
|
_fclose proc DIST
|
||||||
|
@@res = word ptr -2
|
||||||
|
@@fp = dword ptr 6
|
||||||
|
|
||||||
|
push bp
|
||||||
|
mov bp, sp
|
||||||
|
sub sp, 2
|
||||||
|
push si
|
||||||
|
push di
|
||||||
|
mov [bp+@@res], 0FFFFh
|
||||||
|
mov ax, word ptr [bp+@@fp]
|
||||||
|
or ax, word ptr [bp+@@fp+2]
|
||||||
|
jnz short @@verifyToken
|
||||||
|
jmp @@ret
|
||||||
|
|
||||||
|
@@verifyToken:
|
||||||
|
les bx, [bp+@@fp]
|
||||||
|
mov ax, es:[bx+FILE.token]
|
||||||
|
cmp ax, word ptr [bp+@@fp]
|
||||||
|
jz short @@buffered?
|
||||||
|
jmp @@ret
|
||||||
|
|
||||||
|
@@buffered?:
|
||||||
|
les bx, [bp+@@fp]
|
||||||
|
cmp es:[bx+FILE._bsize], 0
|
||||||
|
jz short @@close?
|
||||||
|
cmp es:[bx+FILE.level], 0
|
||||||
|
jge short @@free?
|
||||||
|
push word ptr [bp+@@fp+2]
|
||||||
|
push bx
|
||||||
|
nopcall _fflush
|
||||||
|
pop cx
|
||||||
|
pop cx
|
||||||
|
or ax, ax
|
||||||
|
jnz short @@ret
|
||||||
|
|
||||||
|
@@free?:
|
||||||
|
les bx, [bp+@@fp]
|
||||||
|
test byte ptr es:[bx+FILE.flags], 4
|
||||||
|
jz short @@close?
|
||||||
|
push word ptr es:[bx+FILE._buffer+2]
|
||||||
|
push word ptr es:[bx+FILE._buffer]
|
||||||
|
nopcall _farfree
|
||||||
|
pop cx
|
||||||
|
pop cx
|
||||||
|
|
||||||
|
@@close?:
|
||||||
|
les bx, [bp+@@fp]
|
||||||
|
cmp es:[bx+FILE.fd], 0
|
||||||
|
jl short @@reset
|
||||||
|
mov al, es:[bx+FILE.fd]
|
||||||
|
cbw
|
||||||
|
push ax
|
||||||
|
nopcall _close
|
||||||
|
pop cx
|
||||||
|
mov [bp+@@res], ax
|
||||||
|
|
||||||
|
@@reset:
|
||||||
|
les bx, [bp+@@fp]
|
||||||
|
mov es:[bx+FILE.flags], 0
|
||||||
|
mov es:[bx+FILE._bsize], 0
|
||||||
|
mov es:[bx+FILE.level], 0
|
||||||
|
mov es:[bx+FILE.fd], -1
|
||||||
|
cmp es:[bx+FILE.istemp], 0
|
||||||
|
jz short @@ret
|
||||||
|
xor ax, ax
|
||||||
|
push ax
|
||||||
|
push ax
|
||||||
|
push ax
|
||||||
|
push ax
|
||||||
|
push es:[bx+FILE.istemp]
|
||||||
|
call __MKNAME
|
||||||
|
push dx
|
||||||
|
push ax
|
||||||
|
nopcall _unlink
|
||||||
|
pop cx
|
||||||
|
pop cx
|
||||||
|
les bx, [bp+@@fp]
|
||||||
|
mov es:[bx+FILE.istemp], 0
|
||||||
|
|
||||||
|
@@ret:
|
||||||
|
mov ax, [bp+@@res]
|
||||||
|
pop di
|
||||||
|
pop si
|
||||||
|
mov sp, bp
|
||||||
|
pop bp
|
||||||
|
ret
|
||||||
|
_fclose endp
|
112
th01_fuuin.asm
112
th01_fuuin.asm
|
@ -4824,109 +4824,7 @@ loc_3C4C:
|
||||||
retf
|
retf
|
||||||
_eof endp
|
_eof endp
|
||||||
|
|
||||||
|
include libs/BorlandC/fclose.asm
|
||||||
; =============== S U B R O U T I N E =======================================
|
|
||||||
|
|
||||||
; Attributes: library function bp-based frame
|
|
||||||
|
|
||||||
; int __cdecl fclose(FILE *stream)
|
|
||||||
_fclose proc far
|
|
||||||
|
|
||||||
var_2 = word ptr -2
|
|
||||||
stream = dword ptr 6
|
|
||||||
|
|
||||||
push bp
|
|
||||||
mov bp, sp
|
|
||||||
sub sp, 2
|
|
||||||
push si
|
|
||||||
push di
|
|
||||||
mov [bp+var_2], 0FFFFh
|
|
||||||
mov ax, word ptr [bp+stream]
|
|
||||||
or ax, word ptr [bp+stream+2]
|
|
||||||
jnz short loc_3C6A
|
|
||||||
jmp loc_3D09
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
loc_3C6A:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
mov ax, es:[bx+12h]
|
|
||||||
cmp ax, word ptr [bp+stream]
|
|
||||||
jz short loc_3C79
|
|
||||||
jmp loc_3D09
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
loc_3C79:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
cmp word ptr es:[bx+6], 0
|
|
||||||
jz short loc_3CB1
|
|
||||||
cmp word ptr es:[bx], 0
|
|
||||||
jge short loc_3C98
|
|
||||||
push word ptr [bp+stream+2]
|
|
||||||
push bx ; stream
|
|
||||||
nop
|
|
||||||
call _fflush
|
|
||||||
pop cx
|
|
||||||
pop cx
|
|
||||||
or ax, ax
|
|
||||||
jnz short loc_3D09
|
|
||||||
|
|
||||||
loc_3C98:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
test byte ptr es:[bx+2], 4
|
|
||||||
jz short loc_3CB1
|
|
||||||
push word ptr es:[bx+0Ah]
|
|
||||||
push word ptr es:[bx+8]
|
|
||||||
nop
|
|
||||||
push cs
|
|
||||||
call near ptr _farfree
|
|
||||||
pop cx
|
|
||||||
pop cx
|
|
||||||
|
|
||||||
loc_3CB1:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
cmp byte ptr es:[bx+4], 0
|
|
||||||
jl short loc_3CCA
|
|
||||||
mov al, es:[bx+4]
|
|
||||||
cbw
|
|
||||||
push ax ; handle
|
|
||||||
nop
|
|
||||||
push cs
|
|
||||||
call near ptr _close
|
|
||||||
pop cx
|
|
||||||
mov [bp+var_2], ax
|
|
||||||
|
|
||||||
loc_3CCA:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
mov word ptr es:[bx+2], 0
|
|
||||||
mov word ptr es:[bx+6], 0
|
|
||||||
mov word ptr es:[bx], 0
|
|
||||||
mov byte ptr es:[bx+4], 0FFh
|
|
||||||
cmp word ptr es:[bx+10h], 0
|
|
||||||
jz short loc_3D09
|
|
||||||
xor ax, ax
|
|
||||||
push ax
|
|
||||||
push ax ; dest
|
|
||||||
push ax ; int
|
|
||||||
push ax ; int
|
|
||||||
push word ptr es:[bx+10h] ; int
|
|
||||||
call __MKNAME
|
|
||||||
push dx
|
|
||||||
push ax ; path
|
|
||||||
nopcall _unlink
|
|
||||||
pop cx
|
|
||||||
pop cx
|
|
||||||
les bx, [bp+stream]
|
|
||||||
mov word ptr es:[bx+10h], 0
|
|
||||||
|
|
||||||
loc_3D09:
|
|
||||||
mov ax, [bp+var_2]
|
|
||||||
pop di
|
|
||||||
pop si
|
|
||||||
mov sp, bp
|
|
||||||
pop bp
|
|
||||||
retf
|
|
||||||
_fclose endp
|
|
||||||
|
|
||||||
include libs/BorlandC/fflush.asm
|
include libs/BorlandC/fflush.asm
|
||||||
include libs/BorlandC/flength.asm
|
include libs/BorlandC/flength.asm
|
||||||
include libs/BorlandC/flushall.asm
|
include libs/BorlandC/flushall.asm
|
||||||
|
@ -5150,9 +5048,7 @@ loc_3FD9:
|
||||||
jz short loc_4003
|
jz short loc_4003
|
||||||
push word ptr [bp+stream+2]
|
push word ptr [bp+stream+2]
|
||||||
push word ptr [bp+stream] ; stream
|
push word ptr [bp+stream] ; stream
|
||||||
nop
|
nopcall _fclose
|
||||||
push cs
|
|
||||||
call near ptr _fclose
|
|
||||||
pop cx
|
pop cx
|
||||||
pop cx
|
pop cx
|
||||||
|
|
||||||
|
@ -6286,9 +6182,7 @@ loc_579E:
|
||||||
jz short loc_57B3
|
jz short loc_57B3
|
||||||
push word ptr [bp+stream+2]
|
push word ptr [bp+stream+2]
|
||||||
push bx ; stream
|
push bx ; stream
|
||||||
nop
|
nopcall _fclose
|
||||||
push cs
|
|
||||||
call near ptr _fclose
|
|
||||||
pop cx
|
pop cx
|
||||||
pop cx
|
pop cx
|
||||||
|
|
||||||
|
|
112
th01_op.asm
112
th01_op.asm
|
@ -4604,109 +4604,7 @@ loc_3D24:
|
||||||
retf
|
retf
|
||||||
_eof endp
|
_eof endp
|
||||||
|
|
||||||
|
include libs/BorlandC/fclose.asm
|
||||||
; =============== S U B R O U T I N E =======================================
|
|
||||||
|
|
||||||
; Attributes: library function bp-based frame
|
|
||||||
|
|
||||||
; int __cdecl fclose(FILE *stream)
|
|
||||||
_fclose proc far
|
|
||||||
|
|
||||||
var_2 = word ptr -2
|
|
||||||
stream = dword ptr 6
|
|
||||||
|
|
||||||
push bp
|
|
||||||
mov bp, sp
|
|
||||||
sub sp, 2
|
|
||||||
push si
|
|
||||||
push di
|
|
||||||
mov [bp+var_2], 0FFFFh
|
|
||||||
mov ax, word ptr [bp+stream]
|
|
||||||
or ax, word ptr [bp+stream+2]
|
|
||||||
jnz short loc_3D42
|
|
||||||
jmp loc_3DE1
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
loc_3D42:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
mov ax, es:[bx+12h]
|
|
||||||
cmp ax, word ptr [bp+stream]
|
|
||||||
jz short loc_3D51
|
|
||||||
jmp loc_3DE1
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
loc_3D51:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
cmp word ptr es:[bx+6], 0
|
|
||||||
jz short loc_3D89
|
|
||||||
cmp word ptr es:[bx], 0
|
|
||||||
jge short loc_3D70
|
|
||||||
push word ptr [bp+stream+2]
|
|
||||||
push bx ; stream
|
|
||||||
nop
|
|
||||||
call _fflush
|
|
||||||
pop cx
|
|
||||||
pop cx
|
|
||||||
or ax, ax
|
|
||||||
jnz short loc_3DE1
|
|
||||||
|
|
||||||
loc_3D70:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
test byte ptr es:[bx+2], 4
|
|
||||||
jz short loc_3D89
|
|
||||||
push word ptr es:[bx+0Ah]
|
|
||||||
push word ptr es:[bx+8]
|
|
||||||
nop
|
|
||||||
push cs
|
|
||||||
call near ptr _farfree
|
|
||||||
pop cx
|
|
||||||
pop cx
|
|
||||||
|
|
||||||
loc_3D89:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
cmp byte ptr es:[bx+4], 0
|
|
||||||
jl short loc_3DA2
|
|
||||||
mov al, es:[bx+4]
|
|
||||||
cbw
|
|
||||||
push ax ; handle
|
|
||||||
nop
|
|
||||||
push cs
|
|
||||||
call near ptr _close
|
|
||||||
pop cx
|
|
||||||
mov [bp+var_2], ax
|
|
||||||
|
|
||||||
loc_3DA2:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
mov word ptr es:[bx+2], 0
|
|
||||||
mov word ptr es:[bx+6], 0
|
|
||||||
mov word ptr es:[bx], 0
|
|
||||||
mov byte ptr es:[bx+4], 0FFh
|
|
||||||
cmp word ptr es:[bx+10h], 0
|
|
||||||
jz short loc_3DE1
|
|
||||||
xor ax, ax
|
|
||||||
push ax
|
|
||||||
push ax ; dest
|
|
||||||
push ax ; int
|
|
||||||
push ax ; int
|
|
||||||
push word ptr es:[bx+10h] ; int
|
|
||||||
call __MKNAME
|
|
||||||
push dx
|
|
||||||
push ax ; path
|
|
||||||
nopcall _unlink
|
|
||||||
pop cx
|
|
||||||
pop cx
|
|
||||||
les bx, [bp+stream]
|
|
||||||
mov word ptr es:[bx+10h], 0
|
|
||||||
|
|
||||||
loc_3DE1:
|
|
||||||
mov ax, [bp+var_2]
|
|
||||||
pop di
|
|
||||||
pop si
|
|
||||||
mov sp, bp
|
|
||||||
pop bp
|
|
||||||
retf
|
|
||||||
_fclose endp
|
|
||||||
|
|
||||||
include libs/BorlandC/fflush.asm
|
include libs/BorlandC/fflush.asm
|
||||||
include libs/BorlandC/flength.asm
|
include libs/BorlandC/flength.asm
|
||||||
include libs/BorlandC/flushall.asm
|
include libs/BorlandC/flushall.asm
|
||||||
|
@ -4930,9 +4828,7 @@ loc_40B1:
|
||||||
jz short loc_40DB
|
jz short loc_40DB
|
||||||
push word ptr [bp+buf+2]
|
push word ptr [bp+buf+2]
|
||||||
push word ptr [bp+buf] ; stream
|
push word ptr [bp+buf] ; stream
|
||||||
nop
|
nopcall _fclose
|
||||||
push cs
|
|
||||||
call near ptr _fclose
|
|
||||||
pop cx
|
pop cx
|
||||||
pop cx
|
pop cx
|
||||||
|
|
||||||
|
@ -5947,9 +5843,7 @@ loc_5A19:
|
||||||
jz short loc_5A2E
|
jz short loc_5A2E
|
||||||
push word ptr [bp+stream+2]
|
push word ptr [bp+stream+2]
|
||||||
push bx ; stream
|
push bx ; stream
|
||||||
nop
|
nopcall _fclose
|
||||||
push cs
|
|
||||||
call near ptr _fclose
|
|
||||||
pop cx
|
pop cx
|
||||||
pop cx
|
pop cx
|
||||||
|
|
||||||
|
|
114
th01_reiiden.asm
114
th01_reiiden.asm
|
@ -7852,111 +7852,7 @@ loc_52A4:
|
||||||
retf
|
retf
|
||||||
_eof endp
|
_eof endp
|
||||||
|
|
||||||
|
include libs/BorlandC/fclose.asm
|
||||||
; =============== S U B R O U T I N E =======================================
|
|
||||||
|
|
||||||
; Attributes: library function bp-based frame
|
|
||||||
|
|
||||||
; int __cdecl fclose(FILE *stream)
|
|
||||||
_fclose proc far
|
|
||||||
|
|
||||||
var_2 = word ptr -2
|
|
||||||
stream = dword ptr 6
|
|
||||||
|
|
||||||
push bp
|
|
||||||
mov bp, sp
|
|
||||||
sub sp, 2
|
|
||||||
push si
|
|
||||||
push di
|
|
||||||
mov [bp+var_2], 0FFFFh
|
|
||||||
mov ax, word ptr [bp+stream]
|
|
||||||
or ax, word ptr [bp+stream+2]
|
|
||||||
jnz short loc_52C2
|
|
||||||
jmp loc_5361
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
loc_52C2:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
mov ax, es:[bx+12h]
|
|
||||||
cmp ax, word ptr [bp+stream]
|
|
||||||
jz short loc_52D1
|
|
||||||
jmp loc_5361
|
|
||||||
; ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
loc_52D1:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
cmp word ptr es:[bx+6], 0
|
|
||||||
jz short loc_5309
|
|
||||||
cmp word ptr es:[bx], 0
|
|
||||||
jge short loc_52F0
|
|
||||||
push word ptr [bp+stream+2]
|
|
||||||
push bx ; stream
|
|
||||||
nop
|
|
||||||
call _fflush
|
|
||||||
pop cx
|
|
||||||
pop cx
|
|
||||||
or ax, ax
|
|
||||||
jnz short loc_5361
|
|
||||||
|
|
||||||
loc_52F0:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
test byte ptr es:[bx+2], 4
|
|
||||||
jz short loc_5309
|
|
||||||
push word ptr es:[bx+0Ah]
|
|
||||||
push word ptr es:[bx+8]
|
|
||||||
nop
|
|
||||||
push cs
|
|
||||||
call near ptr _farfree
|
|
||||||
pop cx
|
|
||||||
pop cx
|
|
||||||
|
|
||||||
loc_5309:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
cmp byte ptr es:[bx+4], 0
|
|
||||||
jl short loc_5322
|
|
||||||
mov al, es:[bx+4]
|
|
||||||
cbw
|
|
||||||
push ax ; handle
|
|
||||||
nop
|
|
||||||
push cs
|
|
||||||
call near ptr _close
|
|
||||||
pop cx
|
|
||||||
mov [bp+var_2], ax
|
|
||||||
|
|
||||||
loc_5322:
|
|
||||||
les bx, [bp+stream]
|
|
||||||
mov word ptr es:[bx+2], 0
|
|
||||||
mov word ptr es:[bx+6], 0
|
|
||||||
mov word ptr es:[bx], 0
|
|
||||||
mov byte ptr es:[bx+4], 0FFh
|
|
||||||
cmp word ptr es:[bx+10h], 0
|
|
||||||
jz short loc_5361
|
|
||||||
xor ax, ax
|
|
||||||
push ax
|
|
||||||
push ax ; dest
|
|
||||||
push ax ; int
|
|
||||||
push ax ; int
|
|
||||||
push word ptr es:[bx+10h] ; int
|
|
||||||
call __MKNAME
|
|
||||||
push dx
|
|
||||||
push ax ; path
|
|
||||||
nopcall _unlink
|
|
||||||
pop cx
|
|
||||||
|
|
||||||
loc_5357:
|
|
||||||
pop cx
|
|
||||||
les bx, [bp+stream]
|
|
||||||
mov word ptr es:[bx+10h], 0
|
|
||||||
|
|
||||||
loc_5361:
|
|
||||||
mov ax, [bp+var_2]
|
|
||||||
pop di
|
|
||||||
pop si
|
|
||||||
mov sp, bp
|
|
||||||
pop bp
|
|
||||||
retf
|
|
||||||
_fclose endp
|
|
||||||
|
|
||||||
include libs/BorlandC/fflush.asm
|
include libs/BorlandC/fflush.asm
|
||||||
include libs/BorlandC/flength.asm
|
include libs/BorlandC/flength.asm
|
||||||
include libs/BorlandC/flushall.asm
|
include libs/BorlandC/flushall.asm
|
||||||
|
@ -8186,9 +8082,7 @@ loc_5631:
|
||||||
jz short loc_565B
|
jz short loc_565B
|
||||||
push word ptr [bp+stream+2]
|
push word ptr [bp+stream+2]
|
||||||
push word ptr [bp+stream] ; stream
|
push word ptr [bp+stream] ; stream
|
||||||
nop
|
nopcall _fclose
|
||||||
push cs
|
|
||||||
call near ptr _fclose
|
|
||||||
pop cx
|
pop cx
|
||||||
pop cx
|
pop cx
|
||||||
|
|
||||||
|
@ -9407,9 +9301,7 @@ loc_6E8C:
|
||||||
jz short loc_6EA1
|
jz short loc_6EA1
|
||||||
push word ptr [bp+stream+2]
|
push word ptr [bp+stream+2]
|
||||||
push bx ; stream
|
push bx ; stream
|
||||||
nop
|
nopcall _fclose
|
||||||
push cs
|
|
||||||
call near ptr _fclose
|
|
||||||
pop cx
|
pop cx
|
||||||
pop cx
|
pop cx
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue