/** @file\r
- \r
+\r
VfrCompiler main class and main function.\r
\r
-Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
PACKAGE_DATA gRBuffer;\r
CVfrStringDB gCVfrStringDB;\r
\r
-VOID \r
+VOID\r
CVfrCompiler::DebugError (\r
IN CHAR8 *FileName,\r
IN UINT32 LineNumber,\r
IN CONST CHAR8 *Text,\r
IN CONST CHAR8 *MsgFmt,\r
...\r
- ) \r
+ )\r
{\r
va_list List;\r
va_start (List, MsgFmt);\r
\r
VOID\r
CVfrCompiler::OptionInitialization (\r
- IN INT32 Argc, \r
+ IN INT32 Argc,\r
IN CHAR8 **Argv\r
)\r
{\r
Status = EFI_SUCCESS;\r
SetUtilityName ((CHAR8*) PROGRAM_NAME);\r
\r
- mOptions.VfrFileName[0] = '\0';\r
- mOptions.RecordListFile[0] = '\0';\r
+ mOptions.VfrFileName = NULL;\r
+ mOptions.RecordListFile = NULL;\r
mOptions.CreateRecordListFile = FALSE;\r
mOptions.CreateIfrPkgFile = FALSE;\r
- mOptions.PkgOutputFileName[0] = '\0';\r
- mOptions.COutputFileName[0] = '\0';\r
- mOptions.OutputDirectory[0] = '\0';\r
- mOptions.PreprocessorOutputFileName[0] = '\0';\r
- mOptions.VfrBaseFileName[0] = '\0';\r
+ mOptions.PkgOutputFileName = NULL;\r
+ mOptions.COutputFileName = NULL;\r
+ mOptions.OutputDirectory = NULL;\r
+ mOptions.PreprocessorOutputFileName = NULL;\r
+ mOptions.VfrBaseFileName = NULL;\r
mOptions.IncludePaths = NULL;\r
mOptions.SkipCPreprocessor = TRUE;\r
mOptions.CPreprocessorOptions = NULL;\r
mOptions.CompatibleMode = FALSE;\r
mOptions.HasOverrideClassGuid = FALSE;\r
mOptions.WarningAsError = FALSE;\r
+ mOptions.AutoDefault = FALSE;\r
+ mOptions.CheckDefault = FALSE;\r
memset (&mOptions.OverrideClassGuid, 0, sizeof (EFI_GUID));\r
- \r
+\r
if (Argc == 1) {\r
Usage ();\r
SET_RUN_STATUS (STATUS_DEAD);\r
} else if (stricmp(Argv[Index], "-i") == 0) {\r
Index++;\r
if ((Index >= Argc) || (Argv[Index][0] == '-')) {\r
- DebugError (NULL, 0, 1001, "Missing option", "-i missing path argument"); \r
+ DebugError (NULL, 0, 1001, "Missing option", "-i missing path argument");\r
goto Fail;\r
}\r
\r
DebugError (NULL, 0, 1001, "Missing option", "-o missing output directory name");\r
goto Fail;\r
}\r
+\r
+ mOptions.OutputDirectory = (CHAR8 *) malloc (strlen (Argv[Index]) + strlen ("\\") + 1);\r
+ if (mOptions.OutputDirectory == NULL) {\r
+ DebugError (NULL, 0, 4001, "Resource: memory can't be allocated", NULL);\r
+ goto Fail;\r
+ }\r
strcpy (mOptions.OutputDirectory, Argv[Index]);\r
- \r
+\r
CHAR8 lastChar = mOptions.OutputDirectory[strlen(mOptions.OutputDirectory) - 1];\r
if ((lastChar != '/') && (lastChar != '\\')) {\r
if (strchr(mOptions.OutputDirectory, '/') != NULL) {\r
strcat (mOptions.OutputDirectory, "\\");\r
}\r
}\r
- DebugMsg (NULL, 0, 9, (CHAR8 *) "Output Directory", mOptions.OutputDirectory);\r
+ DebugMsg (NULL, 0, 9, (CHAR8 *) "Output Directory", (CHAR8 *) "%s", mOptions.OutputDirectory);\r
} else if (stricmp(Argv[Index], "-b") == 0 || stricmp(Argv[Index], "--create-ifr-package") == 0 || stricmp(Argv[Index], "-ibin") == 0) {\r
mOptions.CreateIfrPkgFile = TRUE;\r
} else if (stricmp(Argv[Index], "-n") == 0 || stricmp(Argv[Index], "--no-pre-processing") == 0 || stricmp(Argv[Index], "-nopp") == 0) {\r
goto Fail;\r
}\r
gCVfrStringDB.SetStringFileName(Argv[Index]);\r
- DebugMsg (NULL, 0, 9, (CHAR8 *) "Input string file path", Argv[Index]);\r
+ DebugMsg (NULL, 0, 9, (CHAR8 *) "Input string file path", (CHAR8 *) "%s", Argv[Index]);\r
} else if ((stricmp (Argv[Index], "-g") == 0) || (stricmp (Argv[Index], "--guid") == 0)) {\r
Index++;\r
Status = StringToGuid (Argv[Index], &mOptions.OverrideClassGuid);\r
mOptions.HasOverrideClassGuid = TRUE;\r
} else if (stricmp(Argv[Index], "-w") == 0 || stricmp(Argv[Index], "--warning-as-error") == 0) {\r
mOptions.WarningAsError = TRUE;\r
+ } else if (stricmp(Argv[Index], "-a") == 0 ||stricmp(Argv[Index], "--autodefault") == 0) {\r
+ mOptions.AutoDefault = TRUE;\r
+ } else if (stricmp(Argv[Index], "-d") == 0 ||stricmp(Argv[Index], "--checkdefault") == 0) {\r
+ mOptions.CheckDefault = TRUE;\r
} else {\r
DebugError (NULL, 0, 1000, "Unknown option", "unrecognized option %s", Argv[Index]);\r
goto Fail;\r
DebugError (NULL, 0, 1001, "Missing option", "VFR file name is not specified.");\r
goto Fail;\r
} else {\r
+ mOptions.VfrFileName = (CHAR8 *) malloc (strlen (Argv[Index]) + 1);\r
+ if (mOptions.VfrFileName == NULL) {\r
+ DebugError (NULL, 0, 4001, "Resource: memory can't be allocated", NULL);\r
+ goto Fail;\r
+ }\r
strcpy (mOptions.VfrFileName, Argv[Index]);\r
+\r
+ if (mOptions.OutputDirectory == NULL) {\r
+ mOptions.OutputDirectory = (CHAR8 *) malloc (1);\r
+ if (mOptions.OutputDirectory == NULL) {\r
+ DebugError (NULL, 0, 4001, "Resource: memory can't be allocated", NULL);\r
+ goto Fail;\r
+ }\r
+ mOptions.OutputDirectory[0] = '\0';\r
+ }\r
}\r
\r
if (SetBaseFileName() != 0) {\r
Fail:\r
SET_RUN_STATUS (STATUS_DEAD);\r
\r
- mOptions.VfrFileName[0] = '\0';\r
- mOptions.RecordListFile[0] = '\0';\r
mOptions.CreateRecordListFile = FALSE;\r
mOptions.CreateIfrPkgFile = FALSE;\r
- mOptions.PkgOutputFileName[0] = '\0';\r
- mOptions.COutputFileName[0] = '\0';\r
- mOptions.OutputDirectory[0] = '\0';\r
- mOptions.PreprocessorOutputFileName[0] = '\0';\r
- mOptions.VfrBaseFileName[0] = '\0';\r
+\r
+ if (mOptions.VfrFileName != NULL) {\r
+ free (mOptions.VfrFileName);\r
+ mOptions.VfrFileName = NULL;\r
+ }\r
+ if (mOptions.VfrBaseFileName != NULL) {\r
+ free (mOptions.VfrBaseFileName);\r
+ mOptions.VfrBaseFileName = NULL;\r
+ }\r
+ if (mOptions.OutputDirectory != NULL) {\r
+ free (mOptions.OutputDirectory);\r
+ mOptions.OutputDirectory = NULL;\r
+ }\r
+ if (mOptions.PkgOutputFileName != NULL) {\r
+ free (mOptions.PkgOutputFileName);\r
+ mOptions.PkgOutputFileName = NULL;\r
+ }\r
+ if (mOptions.COutputFileName != NULL) {\r
+ free (mOptions.COutputFileName);\r
+ mOptions.COutputFileName = NULL;\r
+ }\r
+ if (mOptions.PreprocessorOutputFileName != NULL) {\r
+ free (mOptions.PreprocessorOutputFileName);\r
+ mOptions.PreprocessorOutputFileName = NULL;\r
+ }\r
+ if (mOptions.RecordListFile != NULL) {\r
+ free (mOptions.RecordListFile);\r
+ mOptions.RecordListFile = NULL;\r
+ }\r
if (mOptions.IncludePaths != NULL) {\r
delete mOptions.IncludePaths;\r
mOptions.IncludePaths = NULL;\r
- } \r
+ }\r
if (mOptions.CPreprocessorOptions != NULL) {\r
delete mOptions.CPreprocessorOptions;\r
mOptions.CPreprocessorOptions = NULL;\r
strcat (IncludePaths, " -I ");\r
strcat (IncludePaths, PathStr);\r
if (mOptions.IncludePaths != NULL) {\r
- delete mOptions.IncludePaths;\r
+ delete[] mOptions.IncludePaths;\r
}\r
mOptions.IncludePaths = IncludePaths;\r
}\r
strcat (Opt, " ");\r
strcat (Opt, Options);\r
if (mOptions.CPreprocessorOptions != NULL) {\r
- delete mOptions.CPreprocessorOptions;\r
+ delete[] mOptions.CPreprocessorOptions;\r
}\r
mOptions.CPreprocessorOptions = Opt;\r
}\r
{\r
CHAR8 *pFileName, *pPath, *pExt;\r
\r
- if (mOptions.VfrFileName[0] == '\0') {\r
+ if (mOptions.VfrFileName == NULL) {\r
return -1;\r
}\r
\r
return -1;\r
}\r
\r
- strncpy (mOptions.VfrBaseFileName, pFileName, pExt - pFileName);\r
- mOptions.VfrBaseFileName[pExt - pFileName] = '\0';\r
+ *pExt = '\0';\r
+\r
+ mOptions.VfrBaseFileName = (CHAR8 *) malloc (strlen (pFileName) + 1);\r
+ if (mOptions.VfrBaseFileName == NULL) {\r
+ *pExt = '.';\r
+ return -1;\r
+ }\r
+\r
+ strcpy (mOptions.VfrBaseFileName, pFileName);\r
+ *pExt = '.';\r
\r
return 0;\r
}\r
VOID\r
)\r
{\r
- if (mOptions.VfrBaseFileName[0] == '\0') {\r
+ INTN Length;\r
+\r
+ if (mOptions.VfrBaseFileName == NULL) {\r
+ return -1;\r
+ }\r
+\r
+ Length = strlen (mOptions.OutputDirectory) +\r
+ strlen (mOptions.VfrBaseFileName) +\r
+ strlen (VFR_PACKAGE_FILENAME_EXTENSION) +\r
+ 1;\r
+\r
+ mOptions.PkgOutputFileName = (CHAR8 *) malloc (Length);\r
+ if (mOptions.PkgOutputFileName == NULL) {\r
return -1;\r
}\r
\r
VOID\r
)\r
{\r
- if (mOptions.VfrBaseFileName[0] == '\0') {\r
+ INTN Length;\r
+\r
+ if (mOptions.VfrBaseFileName == NULL) {\r
+ return -1;\r
+ }\r
+\r
+ Length = strlen (mOptions.OutputDirectory) +\r
+ strlen (mOptions.VfrBaseFileName) +\r
+ strlen (".c") +\r
+ 1;\r
+\r
+ mOptions.COutputFileName = (CHAR8 *) malloc (Length);\r
+ if (mOptions.COutputFileName == NULL) {\r
return -1;\r
}\r
\r
VOID\r
)\r
{\r
- if (mOptions.VfrBaseFileName[0] == '\0') {\r
+ INTN Length;\r
+\r
+ if (mOptions.VfrBaseFileName == NULL) {\r
+ return -1;\r
+ }\r
+\r
+ Length = strlen (mOptions.OutputDirectory) +\r
+ strlen (mOptions.VfrBaseFileName) +\r
+ strlen (VFR_PREPROCESS_FILENAME_EXTENSION) +\r
+ 1;\r
+\r
+ mOptions.PreprocessorOutputFileName = (CHAR8 *) malloc (Length);\r
+ if (mOptions.PreprocessorOutputFileName == NULL) {\r
return -1;\r
}\r
\r
VOID\r
)\r
{\r
- if (mOptions.VfrBaseFileName[0] == '\0') {\r
+ INTN Length;\r
+\r
+ if (mOptions.VfrBaseFileName == NULL) {\r
+ return -1;\r
+ }\r
+\r
+ Length = strlen (mOptions.OutputDirectory) +\r
+ strlen (mOptions.VfrBaseFileName) +\r
+ strlen (VFR_RECORDLIST_FILENAME_EXTENSION) +\r
+ 1;\r
+\r
+ mOptions.RecordListFile = (CHAR8 *) malloc (Length);\r
+ if (mOptions.RecordListFile == NULL) {\r
return -1;\r
}\r
\r
}\r
\r
CVfrCompiler::CVfrCompiler (\r
- IN INT32 Argc, \r
+ IN INT32 Argc,\r
IN CHAR8 **Argv\r
)\r
{\r
VOID\r
)\r
{\r
+ if (mOptions.VfrFileName != NULL) {\r
+ free (mOptions.VfrFileName);\r
+ mOptions.VfrFileName = NULL;\r
+ }\r
+\r
+ if (mOptions.VfrBaseFileName != NULL) {\r
+ free (mOptions.VfrBaseFileName);\r
+ mOptions.VfrBaseFileName = NULL;\r
+ }\r
+\r
+ if (mOptions.OutputDirectory != NULL) {\r
+ free (mOptions.OutputDirectory);\r
+ mOptions.OutputDirectory = NULL;\r
+ }\r
+\r
+ if (mOptions.PkgOutputFileName != NULL) {\r
+ free (mOptions.PkgOutputFileName);\r
+ mOptions.PkgOutputFileName = NULL;\r
+ }\r
+\r
+ if (mOptions.COutputFileName != NULL) {\r
+ free (mOptions.COutputFileName);\r
+ mOptions.COutputFileName = NULL;\r
+ }\r
+\r
+ if (mOptions.PreprocessorOutputFileName != NULL) {\r
+ free (mOptions.PreprocessorOutputFileName);\r
+ mOptions.PreprocessorOutputFileName = NULL;\r
+ }\r
+\r
+ if (mOptions.RecordListFile != NULL) {\r
+ free (mOptions.RecordListFile);\r
+ mOptions.RecordListFile = NULL;\r
+ }\r
+\r
if (mOptions.IncludePaths != NULL) {\r
- delete mOptions.IncludePaths;\r
+ delete[] mOptions.IncludePaths;\r
mOptions.IncludePaths = NULL;\r
}\r
\r
if (mOptions.CPreprocessorOptions != NULL) {\r
- delete mOptions.CPreprocessorOptions;\r
+ delete[] mOptions.CPreprocessorOptions;\r
mOptions.CPreprocessorOptions = NULL;\r
}\r
\r
SET_RUN_STATUS(STATUS_DEAD);\r
}\r
\r
-VOID \r
+VOID\r
CVfrCompiler::Usage (\r
VOID\r
)\r
{\r
UINT32 Index;\r
CONST CHAR8 *Help[] = {\r
- " ", \r
- "VfrCompile version " VFR_COMPILER_VERSION __BUILD_VERSION,\r
- "Copyright (c) 2004-2013 Intel Corporation. All rights reserved.",\r
+ " ",\r
+ "VfrCompile version " VFR_COMPILER_VERSION "Build " __BUILD_VERSION,\r
+ "Copyright (c) 2004-2016 Intel Corporation. All rights reserved.",\r
" ",\r
"Usage: VfrCompile [options] VfrFile",\r
" ",\r
" format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",\r
" -w --warning-as-error",\r
" treat warning as an error",\r
+ " -a --autodefaut generate default value for question opcode if some default is missing",\r
+ " -d --checkdefault check the default information in a question opcode",\r
NULL\r
};\r
for (Index = 0; Help[Index] != NULL; Index++) {\r
}\r
}\r
\r
-VOID \r
+VOID\r
CVfrCompiler::Version (\r
VOID\r
)\r
{\r
UINT32 Index;\r
CONST CHAR8 *Help[] = {\r
- "VfrCompile version " VFR_COMPILER_VERSION __BUILD_VERSION,\r
+ "VfrCompile version " VFR_COMPILER_VERSION "Build " __BUILD_VERSION,\r
NULL\r
};\r
for (Index = 0; Help[Index] != NULL; Index++) {\r
goto Out;\r
}\r
\r
- if ((pVfrFile = fopen (mOptions.VfrFileName, "r")) == NULL) {\r
- DebugError (NULL, 0, 0001, "Error opening the input VFR file", mOptions.VfrFileName);\r
+ if ((pVfrFile = fopen (LongFilePath (mOptions.VfrFileName), "r")) == NULL) {\r
+ DebugError (NULL, 0, 0001, "Error opening the input VFR file", "%s", mOptions.VfrFileName);\r
goto Fail;\r
}\r
fclose (pVfrFile);\r
\r
- CmdLen = strlen (mPreProcessCmd) + strlen (mPreProcessOpt) + \r
- strlen (mOptions.VfrFileName) + strlen (mOptions.PreprocessorOutputFileName);\r
+ CmdLen = strlen (mPreProcessCmd) + strlen (mPreProcessOpt) +\r
+ strlen (mOptions.VfrFileName) + strlen (mOptions.PreprocessorOutputFileName);\r
if (mOptions.CPreprocessorOptions != NULL) {\r
CmdLen += strlen (mOptions.CPreprocessorOptions);\r
}\r
goto Fail;\r
}\r
\r
- delete PreProcessCmd;\r
+ delete[] PreProcessCmd;\r
\r
Out:\r
SET_RUN_STATUS (STATUS_PREPROCESSED);\r
if (!IS_RUN_STATUS(STATUS_DEAD)) {\r
SET_RUN_STATUS (STATUS_FAILED);\r
}\r
- delete PreProcessCmd;\r
+ delete[] PreProcessCmd;\r
}\r
\r
extern UINT8 VfrParserStart (IN FILE *, IN INPUT_INFO_TO_SYNTAX *);\r
gCVfrErrorHandle.SetInputFile (InFileName);\r
gCVfrErrorHandle.SetWarningAsError(mOptions.WarningAsError);\r
\r
- if ((pInFile = fopen (InFileName, "r")) == NULL) {\r
- DebugError (NULL, 0, 0001, "Error opening the input file", InFileName);\r
+ if ((pInFile = fopen (LongFilePath (InFileName), "r")) == NULL) {\r
+ DebugError (NULL, 0, 0001, "Error opening the input file", "%s", InFileName);\r
goto Fail;\r
}\r
\r
}\r
\r
fclose (pInFile);\r
+ pInFile = NULL;\r
\r
if (gCFormPkg.HavePendingUnassigned () == TRUE) {\r
gCFormPkg.PendingAssignPrintAll ();\r
}\r
\r
VOID\r
-CVfrCompiler::UpdateInfoForDynamicOpcode (\r
+CVfrCompiler::AdjustBin (\r
VOID\r
)\r
{\r
- SIfrRecord *pRecord;\r
+ EFI_VFR_RETURN_CODE Status;\r
\r
- if (!gNeedAdjustOpcode) {\r
+ if (!IS_RUN_STATUS(STATUS_COMPILEED)) {\r
return;\r
}\r
- \r
- //\r
- // Base on the original offset info to update the record list.\r
- //\r
- if (!gCIfrRecordInfoDB.IfrAdjustDynamicOpcodeInRecords()) {\r
- DebugError (NULL, 0, 1001, "Error parsing vfr file", "Can find the offset in the record.");\r
- }\r
\r
- //\r
- // Base on the opcode binary length to recalculate the offset for each opcode.\r
- //\r
- gCIfrRecordInfoDB.IfrAdjustOffsetForRecord();\r
+ if (gNeedAdjustOpcode) {\r
+ //\r
+ // When parsing the Vfr, has created some opcodes, now need to update the record info.\r
+ //\r
+ gCIfrRecordInfoDB.IfrUpdateRecordInfoForDynamicOpcode (FALSE);\r
+ }\r
\r
//\r
- // Base on the offset to find the binary address.\r
+ // Check whether need to check default info for question or auto add default for question.\r
//\r
- pRecord = gCIfrRecordInfoDB.GetRecordInfoFromOffset(gAdjustOpcodeOffset);\r
- while (pRecord != NULL) {\r
- pRecord->mIfrBinBuf = gCFormPkg.GetBufAddrBaseOnOffset(pRecord->mOffset);\r
- if (pRecord->mIfrBinBuf == NULL) {\r
- DebugError (NULL, 0, 0001, "Error parsing vfr file", " 0x%X. offset not allocated.", pRecord->mOffset);\r
- }\r
- pRecord = pRecord->mNext;\r
- }\r
-}\r
-\r
-VOID\r
-CVfrCompiler::AdjustBin (\r
- VOID\r
- )\r
-{\r
- EFI_VFR_RETURN_CODE Status;\r
-\r
- if (!IS_RUN_STATUS(STATUS_COMPILEED)) {\r
- return;\r
+ if (mOptions.AutoDefault || mOptions.CheckDefault) {\r
+ gCIfrRecordInfoDB.IfrCheckAddDefaultRecord (mOptions.AutoDefault, mOptions.CheckDefault);\r
}\r
\r
- UpdateInfoForDynamicOpcode ();\r
-\r
//\r
// Check Binary Code consistent between Form and IfrRecord\r
//\r
// Get Package Data and IfrRecord Data\r
//\r
gCFormPkg.BuildPkg (gCBuffer);\r
- gCIfrRecordInfoDB.IfrRecordOutput (gRBuffer); \r
+ gCIfrRecordInfoDB.IfrRecordOutput (gRBuffer);\r
\r
//\r
// Compare Form and Record data\r
//\r
// Re get the IfrRecord Buffer.\r
//\r
- gCIfrRecordInfoDB.IfrRecordOutput (gRBuffer); \r
+ gCIfrRecordInfoDB.IfrRecordOutput (gRBuffer);\r
}\r
\r
return;\r
}\r
\r
if (mOptions.CreateIfrPkgFile == TRUE) {\r
- if ((pFile = fopen (mOptions.PkgOutputFileName, "wb")) == NULL) {\r
- DebugError (NULL, 0, 0001, "Error opening file", mOptions.PkgOutputFileName);\r
+ if ((pFile = fopen (LongFilePath (mOptions.PkgOutputFileName), "wb")) == NULL) {\r
+ DebugError (NULL, 0, 0001, "Error opening file", "%s", mOptions.PkgOutputFileName);\r
goto Fail;\r
}\r
if (gCFormPkg.BuildPkg (pFile, &gRBuffer) != VFR_RETURN_SUCCESS) {\r
if (!IS_RUN_STATUS(STATUS_GENBINARY)) {\r
goto Fail;\r
}\r
- \r
+\r
if (!mOptions.CreateIfrPkgFile || mOptions.CompatibleMode) {\r
- if ((pFile = fopen (mOptions.COutputFileName, "w")) == NULL) {\r
- DebugError (NULL, 0, 0001, "Error opening output C file", mOptions.COutputFileName);\r
+ if ((pFile = fopen (LongFilePath (mOptions.COutputFileName), "w")) == NULL) {\r
+ DebugError (NULL, 0, 0001, "Error opening output C file", "%s", mOptions.COutputFileName);\r
goto Fail;\r
}\r
\r
fprintf (pFile, "%s\n", gSourceFileHeader[Index]);\r
}\r
\r
- if (mOptions.CompatibleMode) { \r
+ if (mOptions.CompatibleMode) {\r
gCVfrBufferConfig.OutputCFile (pFile, mOptions.VfrBaseFileName);\r
}\r
\r
\r
InFileName = (mOptions.SkipCPreprocessor == TRUE) ? mOptions.VfrFileName : mOptions.PreprocessorOutputFileName;\r
\r
- if (mOptions.CreateRecordListFile == TRUE) {\r
+ if (mOptions.CreateRecordListFile == TRUE && InFileName != NULL && mOptions.RecordListFile != NULL) {\r
if ((InFileName[0] == '\0') || (mOptions.RecordListFile[0] == '\0')) {\r
return;\r
}\r
\r
- if ((pInFile = fopen (InFileName, "r")) == NULL) {\r
- DebugError (NULL, 0, 0001, "Error opening the input VFR preprocessor output file", InFileName);\r
+ if ((pInFile = fopen (LongFilePath (InFileName), "r")) == NULL) {\r
+ DebugError (NULL, 0, 0001, "Error opening the input VFR preprocessor output file", "%s", InFileName);\r
return;\r
}\r
\r
- if ((pOutFile = fopen (mOptions.RecordListFile, "w")) == NULL) {\r
- DebugError (NULL, 0, 0001, "Error opening the record list file", mOptions.RecordListFile);\r
+ if ((pOutFile = fopen (LongFilePath (mOptions.RecordListFile), "w")) == NULL) {\r
+ DebugError (NULL, 0, 0001, "Error opening the record list file", "%s", mOptions.RecordListFile);\r
goto Err1;\r
}\r
\r
gCIfrRecordInfoDB.IfrRecordOutput (pOutFile, LineNo);\r
}\r
}\r
- \r
+\r
fprintf (pOutFile, "\n//\n// All Opcode Record List \n//\n");\r
gCIfrRecordInfoDB.IfrRecordOutput (pOutFile, 0);\r
gCVfrVarDataTypeDB.Dump(pOutFile);\r
\r
int\r
main (\r
- IN int Argc, \r
+ IN int Argc,\r
IN char **Argv\r
)\r
{\r
\r
SetPrintLevel(WARNING_LOG_LEVEL);\r
CVfrCompiler Compiler(Argc, Argv);\r
- \r
+\r
Compiler.PreProcess();\r
Compiler.Compile();\r
Compiler.AdjustBin();\r
}\r
\r
if (gCBuffer.Buffer != NULL) {\r
- delete gCBuffer.Buffer;\r
+ delete[] gCBuffer.Buffer;\r
}\r
- \r
+\r
if (gRBuffer.Buffer != NULL) {\r
- delete gRBuffer.Buffer;\r
+ delete[] gRBuffer.Buffer;\r
}\r
\r
return GetUtilityStatus ();\r