[U-Boot] [PATCH 1/2] FAT: remove ifdefs to make the code more readable

Tom Rini trini at ti.com
Thu Dec 13 14:09:41 CET 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12/13/12 05:47, Richard Genoud wrote:
> ifdefs in the code are making it harder to read. The use of simple
> if(VFAT_ENABLED) makes no more code and is cleaner. (the code is
> discarded by the compiler and linker instead of the preprocessor.)
> 
> and bonus, now the code compiles even if CONFIG_SUPPORT_VFAT is
> not defined.
> 
> Signed-off-by: Richard Genoud <richard.genoud at gmail.com> --- 
> fs/fat/fat.c       |   55
> +++++++++++++++++++++++++++------------------------ 
> fs/fat/fat_write.c |   11 ++------- 2 files changed, 32
> insertions(+), 34 deletions(-)
> 
> diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 393c378..c79e3e3
> 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -34,6 +34,12 @@ 
> #include <malloc.h> #include <linux/compiler.h>
> 
> +#ifdef CONFIG_SUPPORT_VFAT +#define VFAT_ENABLED 1 +#else +#define
> VFAT_ENABLED 0 +#endif + /* * Convert a string to lowercase. */ @@
> -441,7 +447,6 @@ getit: } while (1); }
> 
> -#ifdef CONFIG_SUPPORT_VFAT /* * Extract the file name information
> from 'slotptr' into 'l_name', * starting at l_name[*idx]. @@ -576,7
> +581,6 @@ static __u8 mkcksum(const char name[8], const char
> ext[3])
> 
> return ret; } -#endif	/* CONFIG_SUPPORT_VFAT */
> 
> /* * Get the directory entry associated with 'filename' from the
> directory @@ -617,8 +621,8 @@ static dir_entry
> *get_dentfromdir(fsdata *mydata, int startsect, continue; } if
> ((dentptr->attr & ATTR_VOLUME)) { -#ifdef CONFIG_SUPPORT_VFAT -
> if ((dentptr->attr & ATTR_VFAT) == ATTR_VFAT && +				if
> (VFAT_ENABLED && +				    (dentptr->attr & ATTR_VFAT) == ATTR_VFAT
> && (dentptr->name[0] & LAST_LONG_ENTRY_MASK)) { prevcksum =
> ((dir_slot *)dentptr)->alias_checksum; get_vfatname(mydata,
> curclust, @@ -658,9 +662,7 @@ static dir_entry
> *get_dentfromdir(fsdata *mydata, int startsect, continue; } 
> debug("vfatname: |%s|\n", l_name); -				} else -#endif -				{ +
> } else { /* Volume label or VFAT entry */ dentptr++; continue; @@
> -674,14 +676,15 @@ static dir_entry *get_dentfromdir(fsdata
> *mydata, int startsect, debug("Dentname == NULL - %d\n", i); return
> NULL; } -#ifdef CONFIG_SUPPORT_VFAT -			__u8 csum =
> mkcksum(dentptr->name, dentptr->ext); -			if (dols && csum ==
> prevcksum) { -				prevcksum = 0xffff; -				dentptr++; -
> continue; +			if (VFAT_ENABLED) { +				__u8 csum =
> mkcksum(dentptr->name, dentptr->ext); +				if (dols && csum ==
> prevcksum) { +					prevcksum = 0xffff; +					dentptr++; +
> continue; +				} } -#endif + get_name(dentptr, s_name); if (dols)
> { int isdir = (dentptr->attr & ATTR_DIR); @@ -884,9 +887,9 @@
> do_fat_read_at(const char *filename, unsigned long pos, void
> *buffer, return -1; }
> 
> -#ifdef CONFIG_SUPPORT_VFAT -	debug("VFAT Support enabled\n"); 
> -#endif +	if (VFAT_ENABLED) +		debug("VFAT Support enabled\n"); + 
> debug("FAT%d, fat_sect: %d, fatlength: %d\n", mydata->fatsize,
> mydata->fat_sect, mydata->fatlength); debug("Rootdir begins at
> cluster: %d, sector: %d, offset: %x\n" @@ -952,10 +955,12 @@
> do_fat_read_at(const char *filename, unsigned long pos, void
> *buffer, continue; }
> 
> -			csum = mkcksum(dentptr->name, dentptr->ext); +			if
> (VFAT_ENABLED) +				csum = mkcksum(dentptr->name, dentptr->ext); + 
> if (dentptr->attr & ATTR_VOLUME) { -#ifdef CONFIG_SUPPORT_VFAT -
> if ((dentptr->attr & ATTR_VFAT) == ATTR_VFAT && +				if
> (VFAT_ENABLED && +				    (dentptr->attr & ATTR_VFAT) == ATTR_VFAT
> && (dentptr->name[0] & LAST_LONG_ENTRY_MASK)) { prevcksum = 
> ((dir_slot *)dentptr)->alias_checksum; @@ -999,9 +1004,7 @@
> do_fat_read_at(const char *filename, unsigned long pos, void
> *buffer, } debug("Rootvfatname: |%s|\n", l_name); -				} else 
> -#endif -				{ +				} else { /* Volume label or VFAT entry */ 
> dentptr++; continue; @@ -1015,13 +1018,13 @@ do_fat_read_at(const
> char *filename, unsigned long pos, void *buffer, } goto exit; } 
> -#ifdef CONFIG_SUPPORT_VFAT -			else if (dols == LS_ROOT && csum ==
> prevcksum) { +			else if (VFAT_ENABLED && +				 dols == LS_ROOT &&
> csum == prevcksum) { prevcksum = 0xffff; dentptr++; continue; } 
> -#endif + get_name(dentptr, s_name);
> 
> if (dols == LS_ROOT) { diff --git a/fs/fat/fat_write.c
> b/fs/fat/fat_write.c index 4a1bda0..ed3eaa0 100644 ---
> a/fs/fat/fat_write.c +++ b/fs/fat/fat_write.c @@ -248,7 +248,6 @@
> static __u32 get_fatent_value(fsdata *mydata, __u32 entry) return
> ret; }
> 
> -#ifdef CONFIG_SUPPORT_VFAT /* * Set the file name information from
> 'name' into 'slotptr', */ @@ -468,8 +467,6 @@
> get_long_file_name(fsdata *mydata, int curclust, __u8 *cluster, 
> return 0; }
> 
> -#endif

Note that we don't use --gc-sections on all archs so I'm not sure we
discard the unused VFAT functions on say ARM.

- -- 
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://www.enigmail.net/

iQIcBAEBAgAGBQJQydOVAAoJENk4IS6UOR1WDYQP/2P6ywBeeE/qnx9C13qJnCcr
wXG1IJWEpjgAEOViQZ77kE5Knn9ltiuXKj6EYc7e3oY4S2mBREkG/sHNmG+e+9/0
WHuZJoaiLPaia9ztL/d8BCyVPkSbJ88iyA20TgefR94j7SqITiVT+3yDA4XEB3bW
C8rXZdmYzGjLzMBPI458uxNmIKSeHVfUZnDdWdA0rIOK8t6QN+OKLJRMezOYwx8e
jM8Td4hDmJ20EGfFTpcO2spdUMCqi6FfO6bXJHeFHeUqGXqz482xyIxiZGpETut9
tFOVegHIpbKf0eBoMvs+3ajHprAsMGFlAqv0YSxh4w04ZIXUBT+DibjGiQtf/Xjl
HDvAkBGEbQjljZaQDYlaAfNWFctU7lkapujiMuOKjv04DvClp0AgKEvOjAUW/P2N
ERIQzc67dUdomhmdl0sl+yFYJDB4zjT1VnlYXGx/yz4KLIiD5t+gaQAyq3pGwYjH
jZ3q5gAprYNR0VKl6QM8gQFdAjUKT0owJqUb0iZ2YqblIr+IHLIFHddhwOHB76cg
ViLKtbJ7Y43aShdQUE2t8Ibth+ywba3EDBaieqkz4Q928k//kScGSal6nxqE4mhR
AZ4ca5euEpADicacHZmKNSbtgeBYvhsC/c4ly27hdLPQjpAGOT/axPoaIfUxIe9H
PKIJx4VC14A2u4tS1A6Q
=1PBB
-----END PGP SIGNATURE-----


More information about the U-Boot mailing list