]> git.sur5r.net Git - cc65/blobdiff - libsrc/common/getcwd.s
The spans do now contain the size of a span, no longer the end offset.
[cc65] / libsrc / common / getcwd.s
index 824f4d5c08d23466de5e310fbae92e6a7394dbde..b3cfbefcff37d362a9e7d30aa36d92590567cf51 100644 (file)
@@ -37,26 +37,30 @@ loop:   inc     ptr2
         inc     ptr2+1
         beq     overflow
 
-; Copy one character, end the loop if the zero terminator is reached
+; Copy one character, end the loop if the zero terminator is reached. We
+; don't support directories longer than 255 characters for now.
 
 @L1:    lda     __cwd,y
         sta     (ptr1),y
+        beq     done
+        iny
         bne     loop
 
-; Current working dir copied ok, A contains zero
-
-        tax                     ; Return zero in a/x
-        rts
-
+; For some reason the cwd is longer than 255 characters. This should not
+; happen, we handle it as if the passed buffer was too short.
+;
 ; String overflow, return ERANGE
 
 overflow:
         lda     #<ERANGE
-        sta     __errno
-        lda     #>ERANGE
-        sta     __errno+1
-        lda     #$FF
-        tax                     ; Return -1
+        jsr     __seterrno      ; Returns 0 in A
+        tax                     ; Return zero
+        rts                        
+
+; Success, return buf
+
+done:   lda     ptr1
+        ldx     ptr1+1
         rts
 
 .endproc