Changes to support 32-bit loff_t
authorCharles Manning <cdhmanning@gmail.com>
Fri, 8 Jun 2012 00:19:38 +0000 (12:19 +1200)
committerCharles Manning <cdhmanning@gmail.com>
Fri, 8 Jun 2012 00:19:38 +0000 (12:19 +1200)
Signed-off-by: Charles Manning <cdhmanning@gmail.com>
direct/yaffsfs.h
yaffs_guts.c
yaffs_guts.h

index f2c7666625cfbf91b2a7c3934967975a2094f52d..c20da160e8c47fe6efe7c8fd5e622e173f606d95 100644 (file)
@@ -30,7 +30,8 @@
 #define NAME_MAX       256
 #endif
 
-#define YAFFS_MAX_FILE_SIZE (0x800000000LL - 1)
+#define YAFFS_MAX_FILE_SIZE \
+       ( (sizeof(loff_t) < 8) ? YAFFS_MAX_FILE_SIZE_32 : (0x800000000LL - 1) )
 
 
 struct yaffs_dirent {
index df6cb001995f0cdc1d7364c9d5b51221dd274008..f3bc41905ab50099af47123b4b3c40867f6669ec 100644 (file)
@@ -700,7 +700,10 @@ void yaffs_set_obj_name_from_oh(struct yaffs_obj *obj,
 
 loff_t yaffs_max_file_size(struct yaffs_dev *dev)
 {
-       return ((loff_t) YAFFS_MAX_CHUNK_ID) * dev->data_bytes_per_chunk;
+       if(sizeof(loff_t) < 8)
+               return YAFFS_MAX_FILE_SIZE_32;
+       else
+               return ((loff_t) YAFFS_MAX_CHUNK_ID) * dev->data_bytes_per_chunk;
 }
 
 /*-------------------- TNODES -------------------
@@ -5008,8 +5011,8 @@ int yaffs_get_n_free_chunks(struct yaffs_dev *dev)
        return n_free;
 }
 
-/*\
- * Marshalling functions to get loff_t file sizes into aand out of
+/*
+ * Marshalling functions to get loff_t file sizes into and out of
  * object headers.
  */
 void yaffs_oh_size_load(struct yaffs_obj_hdr *oh, loff_t fsize)
@@ -5022,7 +5025,7 @@ loff_t yaffs_oh_to_size(struct yaffs_obj_hdr *oh)
 {
        loff_t retval;
 
-       if (~(oh->file_size_high))
+       if (sizeof(loff_t) >= 8 && ~(oh->file_size_high))
                retval = (((loff_t) oh->file_size_high) << 32) |
                        (((loff_t) oh->file_size_low) & 0xFFFFFFFF);
        else
index d3200706675073c56f600e1a3234bba58ed58824..1aefb8518c5116b9644ace7d341cc47b4f214714 100644 (file)
@@ -54,6 +54,8 @@
                                        YAFFS_TNODES_MAX_LEVEL)
 #define YAFFS_MAX_CHUNK_ID             ((1 << YAFFS_TNODES_MAX_BITS) - 1)
 
+#define YAFFS_MAX_FILE_SIZE_32         0x7fffffff
+
 /* Constants for YAFFS1 mode */
 #define YAFFS_BYTES_PER_SPARE          16
 #define YAFFS_BYTES_PER_CHUNK          512