]> git.sur5r.net Git - cc65/commitdiff
Fixes to the code just written
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 12 Aug 2003 13:58:17 +0000 (13:58 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 12 Aug 2003 13:58:17 +0000 (13:58 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2276 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/common/_cwd.s
libsrc/common/getcwd.s

index c393aa863b4bcb625fcd8ef13f36db9bbdf98f73..b0c48e7566ebe955224fab80b97f31201350c853 100644 (file)
@@ -2,7 +2,9 @@
 ; Ullrich von Bassewitz, 2003-08-12
 ;
 ; Place to store the current working directory.
-;
+; NOTE: Some of the code working with directories is not able to handle 
+; strings longer than 255 chars, so don't make __cwd_buf_size larger than 256
+; without checking the other sources.
 
                .export         __cwd
         .export         __cwd_buf_size
index 824f4d5c08d23466de5e310fbae92e6a7394dbde..dc1662e6da15c66029ec361bdb0d491296791397 100644 (file)
@@ -37,17 +37,18 @@ 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:
@@ -55,8 +56,13 @@ overflow:
         sta     __errno
         lda     #>ERANGE
         sta     __errno+1
-        lda     #$FF
-        tax                     ; Return -1
+        tax                     ; High byte of ERANGE is zero, return zero
+        rts
+; Success, return buf
+
+done:   lda     ptr1
+        ldx     ptr1+1
         rts
 
 .endproc