1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-23 19:29:37 +00:00

Choose another way to fix the issue from r5804: When parsing the directory

name, add a file mask, so the result is "$0:*" or similar. When specified like
this, the drive accepts the r/o specifier ",R" so we don't have to complicate
the code in open().


git-svn-id: svn://svn.cc65.org/cc65/trunk@5805 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2012-08-06 18:45:26 +00:00
parent 55b56b2475
commit 942c0b6b2f
2 changed files with 13 additions and 7 deletions

View File

@ -125,6 +125,15 @@ drivedone:
stx fnbuf+1
sta fnbuf+0
; Add the file mask
lda #':'
sta fnbuf+2
lda #'*'
sta fnbuf+3
lda #4
sta fnlen
; No need to check the name. Length is already 2
lda #0 ; ok flag

View File

@ -96,7 +96,7 @@ parmok: jsr popax ; Get flags
; Invalid open mode
einval: lda #EINVAL
lda #EINVAL
; Error entry. Sets _errno, clears _oserror, returns -1
@ -119,14 +119,11 @@ closeandexit:
oserror:jmp __mappederrno
; Read bit is set. Add an 'r' to the name
doread: ldy fnisfile ; File or directory?
beq isdir ; Don't add ,R for directory
lda #'r'
doread: lda #'r'
jsr fnaddmode ; Add the mode to the name
isdir: lda #LFN_READ
lda #LFN_READ
bne common ; Branch always
; If O_TRUNC is set, scratch the file, but ignore any errors
@ -202,4 +199,4 @@ nofile: ; ... else use SA=0 (read)
.endproc