From 3bc066cd6975dd5cc917c63631045b607a9acc3e Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Mon, 25 Mar 2013 21:09:55 +0000
Subject: [PATCH] Clean up the Mass Storage bootloader virtual FAT directory
 entry definitions.

---
 Bootloaders/MassStorage/Lib/VirtualFAT.c | 11 +++++------
 Bootloaders/MassStorage/Lib/VirtualFAT.h | 22 ++++++++++++++++++----
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/Bootloaders/MassStorage/Lib/VirtualFAT.c b/Bootloaders/MassStorage/Lib/VirtualFAT.c
index c0d9786ee..5b94ed32a 100644
--- a/Bootloaders/MassStorage/Lib/VirtualFAT.c
+++ b/Bootloaders/MassStorage/Lib/VirtualFAT.c
@@ -79,16 +79,15 @@ static FATDirectoryEntry_t FirmwareFileEntries[] =
 		 * fields are ignored. Should be the same as the label in the boot block.
 		 */
 		{
-			.MSDOS =
+			.MSDOS_Directory =
 				{
-					.Filename        = "LUFA BOO",
-					.Extension       = "T  ",
+					.Name            = "LUFA BOOT  ",
 					.Attributes      = FAT_FLAG_VOLUME_NAME,
 					.Reserved        = {0},
 					.CreationTime    = 0,
 					.CreationDate    = 0,
 					.StartingCluster = 0,
-					.FileSizeBytes   = 0,
+					.Reserved2       = 0,
 				}
 		},
 
@@ -96,7 +95,7 @@ static FATDirectoryEntry_t FirmwareFileEntries[] =
 		 * prevent corruption of systems that are unable to detect the device
 		 * as being a legacy MSDOS style FAT12 volume to prevent corruption. */
 		{
-			.VFAT =
+			.VFAT_LongFileName =
 				{
 					.Ordinal         = FAT_ORDINAL_LAST_ENTRY | 1,
 					.Attribute       = FAT_FLAG_LONG_FILE_NAME,
@@ -123,7 +122,7 @@ static FATDirectoryEntry_t FirmwareFileEntries[] =
 
 		/* MSDOS file entry for the virtual Firmware image. */
 		{
-			.MSDOS =
+			.MSDOS_File =
 				{
 					.Filename        = "FIRMWARE",
 					.Extension       = "BIN",
diff --git a/Bootloaders/MassStorage/Lib/VirtualFAT.h b/Bootloaders/MassStorage/Lib/VirtualFAT.h
index 440b65d1a..37095eae5 100644
--- a/Bootloaders/MassStorage/Lib/VirtualFAT.h
+++ b/Bootloaders/MassStorage/Lib/VirtualFAT.h
@@ -154,11 +154,12 @@
 			/* uint16_t MagicSignature; */
 		} FATBootBlock_t;
 
-		/** FAT legacy 8.3 style directory entry structure definition, used to
-		 *  identify the files and folders of FAT filesystem stored on a disk.
+		/** FAT directory entry structure, for the various kinds of File and
+		 *  directory descriptors on a FAT disk.
 		 */
 		typedef union
 		{
+			/** FAT Long File Name directory entry. */
 			struct
 			{
 				uint8_t  Ordinal;
@@ -179,8 +180,9 @@
 				uint16_t Reserved2;
 				uint16_t Unicode12;
 				uint16_t Unicode13;
-			} VFAT;
+			} VFAT_LongFileName;
 
+			/** FAT MSDOS 8.3 legacy file entry. */
 			struct
 			{
 				uint8_t  Filename[8];
@@ -191,7 +193,19 @@
 				uint16_t CreationDate;
 				uint16_t StartingCluster;
 				uint32_t FileSizeBytes;
-			} MSDOS;
+			} MSDOS_File;
+
+			/** FAT MSDOS (sub-)directory entry. */
+			struct
+			{
+				uint8_t  Name[11];
+				uint8_t  Attributes;
+				uint8_t  Reserved[10];
+				uint16_t CreationTime;
+				uint16_t CreationDate;
+				uint16_t StartingCluster;
+				uint32_t Reserved2;
+			} MSDOS_Directory;
 		} FATDirectoryEntry_t;
 
 	/* Function Prototypes: */
-- 
GitLab