diff mbox series

[v2,1/4] romfs/tools: Remove superfluous union around the rom header struct

Message ID 1532004387-3123-2-git-send-email-thuth@redhat.com
State Accepted
Headers show
Series Clean-ups and fixes for the build_romfs tool | expand

Commit Message

Thomas Huth July 19, 2018, 12:46 p.m. UTC
Accessing the struct with memset and memcpy can also be done without the
union wrapper. While we're at it, also remove the FLASHFS_HEADER_DATA_SIZE
macre and use sizeof(stHeader) instead.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 include/calculatecrc.h   |  1 -
 romfs/tools/create_crc.c | 29 +++++++++++++----------------
 2 files changed, 13 insertions(+), 17 deletions(-)
diff mbox series

Patch

diff --git a/include/calculatecrc.h b/include/calculatecrc.h
index a19a229..667ea81 100644
--- a/include/calculatecrc.h
+++ b/include/calculatecrc.h
@@ -17,7 +17,6 @@ 
 #define FLASHFS_HEADER_SIZE_ADDR 0x08	// uint64_t position of total flash header size value
 
 #define FLASHFS_ROMADDR 0x00		// uint64_t position of pointer to next file
-#define FLASHFS_HEADER_DATA_SIZE 0x68	// 104 bytes of total header data size
 #define CRC_METHODE Ethernet_32		// define the CRC genarator (CRC 16 bit to 64 is supported)
 
 //--- header format ---------------------------------
diff --git a/romfs/tools/create_crc.c b/romfs/tools/create_crc.c
index 5a76b9c..e354339 100644
--- a/romfs/tools/create_crc.c
+++ b/romfs/tools/create_crc.c
@@ -10,6 +10,7 @@ 
  *     IBM Corporation - initial implementation
  *****************************************************************************/
 
+#include <assert.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -71,21 +72,18 @@  createHeaderImage(int notime)
 	char dastr[16] = { 0, };
 	unsigned long long da = 0;
 
-	union {
-		unsigned char pcArray[FLASHFS_HEADER_DATA_SIZE];
-		struct stH stHeader;
-	} uHeader;
+	struct stH stHeader;
 
 	/* initialize Header */
-	memset(uHeader.pcArray, 0x00, FLASHFS_HEADER_DATA_SIZE);
+	memset(&stHeader, 0x00, sizeof(stHeader));
 
 	/* read driver info */
 	if (NULL != (pcVersion = getenv("DRIVER_NAME"))) {
-		strncpy(uHeader.stHeader.version, pcVersion, 16);
+		strncpy(stHeader.version, pcVersion, 16);
 	} else if (NULL != (pcVersion = getenv("USER"))) {
-		strncpy(uHeader.stHeader.version, pcVersion, 16);
+		strncpy(stHeader.version, pcVersion, 16);
 	} else if (pcVersion == NULL) {
-		strncpy(uHeader.stHeader.version, "No known user!", 16);
+		strncpy(stHeader.version, "No known user!", 16);
 	}
 
 	if (!notime) {
@@ -104,18 +102,18 @@  createHeaderImage(int notime)
 		}
 		da = cpu_to_be64(strtoll(dastr, NULL, 16));
 	}
-	memcpy(uHeader.stHeader.date, &da, 8);
+	memcpy(stHeader.date, &da, 8);
 
 	/* write Magic value into data stream */
-	strncpy(uHeader.stHeader.magic, FLASHFS_MAGIC, 8);
+	strncpy(stHeader.magic, FLASHFS_MAGIC, 8);
 	/* write platform name into data stream */
-	strcpy(uHeader.stHeader.platform_name, FLASHFS_PLATFORM_MAGIC);
+	strcpy(stHeader.platform_name, FLASHFS_PLATFORM_MAGIC);
 	/* write platform revision into data stream */
-	strcpy(uHeader.stHeader.platform_revision, FLASHFS_PLATFORM_REVISION);
+	strcpy(stHeader.platform_revision, FLASHFS_PLATFORM_REVISION);
 
 
 	/* fill end of file info (8 bytes of FF) into data stream */
-	uHeader.stHeader.ui64FileEnd = -1;
+	stHeader.ui64FileEnd = -1;
 
 	/* read address of next file and address of header date, both are 64 bit values */
 	ui64RomAddr = 0;
@@ -129,7 +127,7 @@  createHeaderImage(int notime)
 
 	/* calculate final flash-header-size and flash-file-size */
 	/* calculate end addr of header */
-	ui64globalHeaderSize = (uint32_t) ui64DataAddr + (uint32_t) FLASHFS_HEADER_DATA_SIZE;
+	ui64globalHeaderSize = (uint32_t) ui64DataAddr + sizeof(stHeader);
 	/* cut 64 bit to place CRC for File-End */
 	ui64globalHeaderSize -= 8;
 	/* add 64 bit to place CRC behind File-End */
@@ -143,8 +141,7 @@  createHeaderImage(int notime)
 	/* fill free space in Header with zeros */
 	memset(&pucFileStream[ui64DataAddr], 0, (ui64RomAddr - ui64DataAddr));
 	/* place data to header */
-	memcpy(&pucFileStream[ui64DataAddr], uHeader.pcArray,
-	       FLASHFS_HEADER_DATA_SIZE);
+	memcpy(&pucFileStream[ui64DataAddr], &stHeader, sizeof(stHeader));
 
 	/* insert header length into data stream */
 	*(uint64_t *) (pucFileStream + FLASHFS_HEADER_SIZE_ADDR) =