Modified to strip leading white-space characters and ignore blank or comment only...
authorlhauch <lhauch@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 10 Oct 2007 16:35:50 +0000 (16:35 +0000)
committerlhauch <lhauch@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 10 Oct 2007 16:35:50 +0000 (16:35 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@812 7335b38e-4728-0410-8992-fb3ffe349368

Source/C/GenFw/GenFw.c

index 9fac540..2eee827 100644 (file)
@@ -86,6 +86,7 @@ Abstract:
 #define _MAX_PATH 500\r
 #endif\r
 \r
+#define STATUS_IGNORE        0xA\r
 //\r
 // Structure definition for a microcode header\r
 //\r
@@ -991,6 +992,7 @@ Returns:
   FILE              *fpInOut;\r
   UINTN             Data;\r
   UINTN             *DataPointer;\r
+  UINTN             *OldDataPointer;\r
   UINTN             CheckSum;\r
   UINT32            Index;\r
   UINT32            Index1;\r
@@ -1361,7 +1363,7 @@ Returns:
   }\r
 \r
   //\r
-  // Conver MicroCode.txt file to MicroCode.bin file\r
+  // Convert MicroCode.txt file to MicroCode.bin file\r
   //\r
   if (OutImageType == FW_MCI_IMAGE) {\r
     fpIn = fopen (mInImageName, "r");\r
@@ -1380,6 +1382,9 @@ Returns:
       if (Status == STATUS_SUCCESS) {\r
         FileLength += sizeof (Data);\r
       }\r
+      if (Status == STATUS_IGNORE) {\r
+        Status = STATUS_SUCCESS;\r
+      }\r
     } while (Status == STATUS_SUCCESS);\r
     //\r
     // Error if no data.\r
@@ -1406,8 +1411,14 @@ Returns:
     //\r
     fseek (fpIn, 0, SEEK_SET);\r
     DataPointer = (UINTN *) FileBuffer;\r
+    OldDataPointer = DataPointer;\r
     do {\r
+      OldDataPointer = DataPointer;\r
       Status = MicrocodeReadData (fpIn, DataPointer++);\r
+      if (Status == STATUS_IGNORE) {\r
+        DataPointer = OldDataPointer;\r
+        Status = STATUS_SUCCESS;\r
+      }\r
     } while (Status == STATUS_SUCCESS);\r
     //\r
     // close input file after read data\r
@@ -1428,7 +1439,7 @@ Returns:
     }\r
 \r
     if (Index != FileLength) {\r
-      Error (NULL, 0, 3000, "Invalid", "file contents of %s do not contain expected TotalSize 0x%04X", mInImageName, Index);\r
+      Error (NULL, 0, 3000, "Invalid", "file contents of %s (0x%x) do not equal expected TotalSize: 0x%04X", mInImageName, FileLength, Index);\r
       goto Finish;\r
     }\r
 \r
@@ -1444,7 +1455,7 @@ Returns:
       Index       += sizeof (UINTN);\r
     }\r
     if (CheckSum != 0) {\r
-      Error (NULL, 0, 3000, "Invalid", "checksum failed on file contents of %s", mInImageName);\r
+      Error (NULL, 0, 3000, "Invalid", "checksum (0x%x) failed on file contents of %s", CheckSum, mInImageName);\r
       goto Finish;\r
     }\r
     //\r
@@ -2307,11 +2318,24 @@ Returns:
 {\r
   CHAR8  Line[MAX_LINE_LEN];\r
   CHAR8  *cptr;\r
+  UINT8  ctr;\r
 \r
   Line[MAX_LINE_LEN - 1]  = 0;\r
   if (fgets (Line, MAX_LINE_LEN, InFptr) == NULL) {\r
     return STATUS_ERROR;\r
   }\r
+\r
+  // Strip leading white-space characters (except carriage returns) from Line\r
+  //\r
+  if (isspace(Line[0]) && Line[0] != '\n') {\r
+    // printf("Found a space character at Line[0] = 0x%x\n", Line[0]);\r
+    while (isspace(Line[0])) {\r
+       for (ctr = 0; ctr < strlen(Line); ctr++)\r
+         if (Line[ctr] != '\n')\r
+           Line[ctr] = Line[ctr + 1];\r
+    }\r
+  }\r
+\r
   //\r
   // If it was a binary file, then it may have overwritten our null terminator\r
   //\r
@@ -2319,7 +2343,6 @@ Returns:
     return STATUS_ERROR;\r
   }\r
 \r
-  //\r
   // Look for\r
   // dd 000000001h ; comment\r
   // dd XXXXXXXX\r
@@ -2343,6 +2366,14 @@ Returns:
     }\r
     return STATUS_SUCCESS;\r
   }\r
+  // Skip Blank Lines \r
+  if (strlen(Line) == 1) {\r
+    return STATUS_IGNORE;\r
+  }\r
+  // Skip Comment Lines\r
+  if (tolower(cptr[0]) == ';') {\r
+    return STATUS_IGNORE;\r
+  }\r
 \r
   return STATUS_ERROR;\r
 }\r