home *** CD-ROM | disk | FTP | other *** search
-
- * Maxon C++
- * Library-Modul "seek.o"
- * Jens Gelhar 21.04.92, 20.02.94, 15,04,94
-
- xdef _fseek,fseek__P06streamji
- xdef _ftell,ftell__P06stream
- xdef _rewind,rewind__P06stream
- xdef _fgetpos,fgetpos__P06streamPi
- xdef _fsetpos,fsetpos__P06streamPCi
-
- xref _DosBase,fflush__P06stream,_errno
-
- Seek = -66
- IoErr = -132
-
- str_ungetch = 4
- str_error = 7
- str_bufptr = 8
-
- _fsetpos:
- fsetpos__P06streamPCi:
- move.l 4+4(a7),a0
- move.l #-1,-(a7)
- move.l (a0),-(a7) ; Offset
- move.l 4+4(a7),-(a7)
- bsr.b _fseek
- lea 12(a7),a7
- rts
-
- _rewind:
- rewind__P06stream:
- move.l #-1,-(a7)
- clr.l -(a7)
- move.l 1*4+4(a7),-(a7)
- bsr.b _fseek
- lea 12(a7),a7
- rts
-
- _fseek:
- fseek__P06streamji:
- movem.l d2-d3/a2/a6,-(a7)
- par1 = 4*4+4
- ; ab par1(a7): FILE*, offset, modus
- move.l par1(a7),a0
- tst.l (a0)
- beq.b skerr1 ; keine Filehandle
- clr.b str_ungetch(a0)
- clr.b str_error(a0)
- tst.l str_bufptr(a0)
- beq.b sk1
- move.l a0,-(a7)
- jsr fflush__P06stream ; Puffer leeren!
- move.l (a7)+,a0
- sk1: move.l (a0),d1
- movem.l par1+4(a7),d2/d3
- tst.l d3
- bpl.b sk2
- tst.l d2
- bmi.b skOK
- sk2: move.l _DosBase,a6
- jsr Seek(a6)
- tst.l d0
- bpl.b skOK
- move.l _DosBase,a6
- jsr IoErr(a6)
- move.l d0,_errno
- bra.b skerr2
- skOK: moveq #0,d0
- skret: movem.l (a7)+,d2-d3/a2/a6
- rts
- skerr1: moveq #-1,d0
- skerr2: move.l par1(a7),a0
- move.b d0,str_error(a0)
- bra.b skret
-
- _ftell:
- ftell__P06stream:
- movem.l d2-d3/a2/a6,-(a7)
- par2 = 4*4+4
- move.l par2(a7),a0
- move.l (a0),d1
- beq.b .err1
- tst.l str_bufptr(a0)
- beq.b .nobuf
- move.l a0,-(a7)
- jsr fflush__P06stream ; Puffer leeren!
- move.l (a7)+,a0
- bra.b .get ; "EOF" nicht testen
- .nobuf cmp.b #-1,7(a0)
- beq.b .err1 ; EoF?
- .get moveq #0,d2
- moveq #0,d3
- move.l _DosBase,a6
- jsr Seek(a6)
- .ret movem.l (a7)+,d2-d3/a2/a6
- rts
- .err1 moveq #-1,d0
- bra.b .ret
-
- _fgetpos:
- fgetpos__P06streamPi:
- move.l 4(a7),-(a7)
- bsr.b _ftell
- addq.l #4,a7
- move.l 4+4(a7),a0
- move.l d0,(a0)
- rts
-
- end
-
-