[OpenBIOS] r738 - ofw/fs/fatfs

svn at openbios.org svn at openbios.org
Tue Nov 20 08:40:33 CET 2007


Author: wmb
Date: 2007-11-20 08:40:33 +0100 (Tue, 20 Nov 2007)
New Revision: 738

Modified:
   ofw/fs/fatfs/write.fth
Log:
OLPC trac 5029 - Fixed a problem that caused files written from OFW to be 0x400 bytes too short in certain cases.


Modified: ofw/fs/fatfs/write.fth
===================================================================
--- ofw/fs/fatfs/write.fth	2007-11-19 23:48:42 UTC (rev 737)
+++ ofw/fs/fatfs/write.fth	2007-11-20 07:40:33 UTC (rev 738)
@@ -80,7 +80,7 @@
       \ If we need more cluster(s) and
       \ we're at or beyond the end of the file, add new cluster(s)
       dup 0>
-      current-position fh_length l@ >  last-cluster? or and if
+      current-position fh_length l@ >  last-cluster? or   and  if
          extend-file ?dup if  ?flush-fat-cache  nip  exit  then
          extended? on
       else \ same cluster?
@@ -94,17 +94,19 @@
          ?flush-fat-cache  true exit
       then
 
-      \ If this is a partial cluster without extension,
-      \ then adjust the length field
-      remaining @ /cluster <  extended? @ invert and if
+      \ Adjust the length field unless extend-file already did it
+      extended? @ 0=  if
          current-position remaining @ + fh_length l!
       then
 
       \ Continue with the rest of the transfer
       #cont-cls @ /cluster * dup bufadr +!  negate remaining +!
 
-      next-cl# @ ?dup if  1st-cl# !  1 #cont-cls !  next-cl# off
-      else  1st-cl# off  #cont-cls off  then
+      next-cl# @ ?dup if
+         1st-cl# !  1 #cont-cls !  next-cl# off
+      else
+         1st-cl# off  #cont-cls off
+      then
 
       last-cluster? 0= if  to-next-cluster  then 
    repeat  drop ( )




More information about the OpenBIOS mailing list