
* Maxon C++ Projekt:
* Library-Modul "tmpfile"
* Jens Gelhar 25.10.91

	xdef	_tmpfile,tmpfile_
	xdef	_EXIT_1_Tmp_File_Hooka_hey_

	xref	fopen__PCcPCc,fclose__P06stream,remove__PCc
	xref	tmpnam__Pc

ExecBase	= 4

AllocMem	= -198
FreeMem	= -210

tf_File	= 4
tf_Name	= 8
tf_SizeOf	= 48


_tmpfile:
tmpfile_:
	movem.l d1-d7/a0-a6,-(a7)
	move.l ExecBase.w,a6
	moveq #tf_SizeOf,d0
	move.l #$10000,d1
	jsr AllocMem(a6)
	tst.l d0
	beq.b tferr
	move.l d0,a4
	move.l tfilelist(pc),(a4)
	move.l d0,tfilelist
	pea tf_Name(a4)
	jsr tmpnam__Pc
	addq.l #4,a7
	pea accmode(pc)
	move.l d0,-(a7)
	jsr fopen__PCcPCc
	addq.l #8,a7
	tst.l d0
	beq.b tferr
	move.l d0,tf_File(a4)
	bra.b tfend
tferr	moveq #0,d0
tfend	movem.l (a7)+,d1-d7/a0-a6
	rts

closeTF:	; Tmp-File a0 schließen,löschen und deallozieren, nicht aushängen
	move.l tf_File(a0),-(a7)
	jsr fclose__P06stream
	addq.l #4,a7
	pea tf_Name(a0)
	jsr remove__PCc
	addq.l #4,a7
	move.l a0,a1
	moveq #tf_SizeOf,d0
	move.l ExecBase.w,a6
	jmp FreeMem(a6)

_EXIT_1_Tmp_File_Hooka_hey_:
	move.l tfilelist(pc),d0
	beq.b ex1
	move.l d0,a0
	move.l (a0),tfilelist
	bsr.b closeTF
	bra.b _EXIT_1_Tmp_File_Hooka_hey_
ex1	rts

accmode:	dc.b 'wb+',0
tfilelist:	dc.l 0

	end
