git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4080
6f19259b-4bc3-4df7-8a09-
765794883524
\r
#define MAX_LINE_LEN 256\r
\r
\r
#define MAX_LINE_LEN 256\r
\r
+#define STATUS_IGNORE 0xA\r
+\r
//\r
// Structure definition for a microcode header\r
//\r
//\r
// Structure definition for a microcode header\r
//\r
{\r
char Line[MAX_LINE_LEN];\r
char *cptr;\r
{\r
char Line[MAX_LINE_LEN];\r
char *cptr;\r
\r
Line[MAX_LINE_LEN - 1] = 0;\r
*Data = 0;\r
\r
Line[MAX_LINE_LEN - 1] = 0;\r
*Data = 0;\r
if (Line[MAX_LINE_LEN - 1] != 0) {\r
return STATUS_ERROR;\r
}\r
if (Line[MAX_LINE_LEN - 1] != 0) {\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
+ 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
// Look for\r
// dd 000000001h ; comment\r
//\r
// Look for\r
// dd 000000001h ; comment\r
}\r
return STATUS_SUCCESS;\r
}\r
}\r
return STATUS_SUCCESS;\r
}\r
+ if (strlen(Line) == 1) {\r
+ return STATUS_IGNORE;\r
+ }\r
+ if (tolower(cptr[0]) == ';') {\r
+ return STATUS_IGNORE;\r
+ }\r
return STATUS_ERROR;\r
}\r
\r
return STATUS_ERROR;\r
}\r
\r
unsigned int Checksum;\r
char *Buffer;\r
char *Ptr;\r
unsigned int Checksum;\r
char *Buffer;\r
char *Ptr;\r
unsigned int TotalSize;\r
\r
Status = STATUS_ERROR;\r
unsigned int TotalSize;\r
\r
Status = STATUS_ERROR;\r
if (Status == STATUS_SUCCESS) {\r
Size += sizeof (Data);\r
}\r
if (Status == STATUS_SUCCESS) {\r
Size += 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
} while (Status == STATUS_SUCCESS);\r
//\r
// Error if no data.\r
//\r
fseek (InFptr, 0, SEEK_SET);\r
Ptr = Buffer;\r
//\r
fseek (InFptr, 0, SEEK_SET);\r
Ptr = Buffer;\r
Status = MicrocodeReadData (InFptr, &Data);\r
if (Status == STATUS_SUCCESS) {\r
*(unsigned int *) Ptr = Data;\r
Ptr += sizeof (Data);\r
}\r
Status = MicrocodeReadData (InFptr, &Data);\r
if (Status == STATUS_SUCCESS) {\r
*(unsigned int *) Ptr = Data;\r
Ptr += sizeof (Data);\r
}\r
+ if (Status == STATUS_IGNORE) {\r
+ Ptr = OrigPtr;\r
+ Status = STATUS_SUCCESS;\r
+ }\r
} while (Status == STATUS_SUCCESS);\r
//\r
// Can't do much checking on the header because, per the spec, the\r
} while (Status == STATUS_SUCCESS);\r
//\r
// Can't do much checking on the header because, per the spec, the\r