From 1af6728346f8d3cb23aee150c0b9b63405e4017e Mon Sep 17 00:00:00 2001 From: Charles Manning Date: Fri, 8 Jun 2012 12:19:38 +1200 Subject: [PATCH] Changes to support 32-bit loff_t Signed-off-by: Charles Manning --- direct/yaffsfs.h | 3 ++- yaffs_guts.c | 11 +++++++---- yaffs_guts.h | 2 ++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/direct/yaffsfs.h b/direct/yaffsfs.h index f2c7666..c20da16 100644 --- a/direct/yaffsfs.h +++ b/direct/yaffsfs.h @@ -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 { diff --git a/yaffs_guts.c b/yaffs_guts.c index df6cb00..f3bc419 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -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 diff --git a/yaffs_guts.h b/yaffs_guts.h index d320070..1aefb85 100644 --- a/yaffs_guts.h +++ b/yaffs_guts.h @@ -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 -- 2.30.2