1
0
mirror of https://github.com/cc65/cc65.git synced 2024-07-07 04:29:01 +00:00

Do not add the file type to the name when using append mode. It causes more

problems than it helps.


git-svn-id: svn://svn.cc65.org/cc65/trunk@5784 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2012-07-15 12:30:43 +00:00
parent eef430e45a
commit f7f4d01e52

View File

@ -74,7 +74,7 @@ parmok: jsr popax ; Get flags
jsr popax ; Get name
jsr fnparse ; Parse it
cmp #0
tax
bne oserror ; Bail out if problem with name
; Get a free file handle and remember it in tmp2
@ -92,7 +92,7 @@ parmok: jsr popax ; Get flags
cmp #O_RDONLY ; Open for reading?
beq doread ; Yes: Branch
cmp #(O_WRONLY | O_CREAT) ; Open for writing?
beq flagsok
beq dowrite
; Invalid open mode
@ -119,9 +119,16 @@ closeandexit:
oserror:jmp __mappederrno
; Read bit is set. Add an 'r' to the name
doread: lda #'r'
jsr fnaddmode ; Add the mode to the name
lda #LFN_READ
bne common ; Branch always
; If O_TRUNC is set, scratch the file, but ignore any errors
flagsok:
dowrite:
lda tmp3
and #O_TRUNC
beq notrunc
@ -131,23 +138,21 @@ flagsok:
notrunc:
lda tmp3 ; Get the mode again
ldx #'a'
and #O_APPEND ; Append mode?
bne append ; Branch if yes
ldx #'w'
append: txa
; Setup the name for create mode
lda #'w'
jsr fncomplete ; Add type and mode to the name
jmp appendcreate
; Setup the real open flags
; Append bit is set. Add an 'a' to the name
append: lda #'a'
jsr fnaddmode ; Add open mode to file name
appendcreate:
lda #LFN_WRITE
bne common
; Read bit is set. Add an 'r' to the name
doread: lda #'r'
jsr fnaddmode ; Add the mode to the name
lda #LFN_READ
; Common read/write code. Flags in A, handle in tmp2
@ -194,3 +199,4 @@ nofile: ; ... else use SA=0 (read)
.endproc