\r
#include <Common/UefiBaseTypes.h>\r
\r
-#define PROGRAM_NAME "CreateMtFile"\r
+#define UTILITY_NAME "CreateMtFile"\r
+#define UTILITY_MAJOR_VERSION 1\r
+#define UTILITY_MINOR_VERSION 1\r
\r
typedef struct {\r
INT8 *OutFileName;\r
\r
static\r
void\r
-Usage (\r
+CMFUsage (\r
+ VOID\r
+ );\r
+\r
+static\r
+void\r
+CMFVersion (\r
VOID\r
);\r
\r
// Open the output file\r
//\r
if ((OutFptr = fopen (Options.OutFileName, "wb")) == NULL) {\r
- fprintf (\r
- stdout,\r
- PROGRAM_NAME " ERROR: Could not open output file '%s' for writing\n",\r
- Options.OutFileName\r
- );\r
+ printf (" ERROR: Could not open output file '%s' for writing\n", Options.OutFileName);\r
return EFI_DEVICE_ERROR;\r
}\r
//\r
while (Options.FileSize > 0) {\r
if (fwrite (&Options.ByteValue, 1, 1, OutFptr) != 1) {\r
fclose (OutFptr);\r
- fprintf (stdout, PROGRAM_NAME " ERROR: Failed to write to output file\n");\r
+ printf (" ERROR: Failed to write to output file\n");\r
return EFI_DEVICE_ERROR;\r
}\r
\r
//\r
Argv++;\r
Argc--;\r
+ \r
+ if (Argc < 1) {\r
+ CMFUsage();\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ \r
+ if ((strcmp(Argv[0], "-h") == 0) || (strcmp(Argv[0], "--help") == 0) ||\r
+ (strcmp(Argv[0], "-?") == 0) || (strcmp(Argv[0], "/?") == 0)) {\r
+ CMFUsage();\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ \r
+ if ((strcmp(Argv[0], "-V") == 0) || (strcmp(Argv[0], "--version") == 0)) {\r
+ CMFVersion();\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ \r
if (Argc < 2) {\r
- Usage ();\r
+ CMFUsage ();\r
return EFI_INVALID_PARAMETER;\r
}\r
//\r
// If first arg is dash-option, then print usage.\r
//\r
if (Argv[0][0] == '-') {\r
- Usage ();\r
+ CMFUsage ();\r
return EFI_INVALID_PARAMETER;\r
}\r
//\r
if ((Argv[0][strlen (Argv[0]) - 1] == 'k') || (Argv[0][strlen (Argv[0]) - 1] == 'K')) {\r
Multiplier = 1024;\r
}\r
+ \r
+ //\r
+ // Check for negtive size\r
+ //\r
+ if (Argv[0][0] == '-') {\r
+ printf("ERROR: File size should be non-negtive.\n");\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ \r
//\r
// Look for 0x prefix on file size\r
//\r
if ((Argv[0][0] == '0') && ((Argv[0][1] == 'x') || (Argv[0][1] == 'X'))) {\r
if (sscanf (Argv[0], "%x", &Options->FileSize) != 1) {\r
- fprintf (stdout, PROGRAM_NAME " ERROR: Invalid file size '%s'\n", Argv[0]);\r
- Usage ();\r
+ printf ("ERROR: Invalid file size '%s'\n", Argv[0]);\r
+ CMFUsage ();\r
return EFI_INVALID_PARAMETER;\r
}\r
//\r
//\r
} else {\r
if (sscanf (Argv[0], "%d", &Options->FileSize) != 1) {\r
- fprintf (stdout, PROGRAM_NAME " ERROR: Invalid file size '%s'\n", Argv[0]);\r
- Usage ();\r
+ printf ("ERROR: Invalid file size '%s'\n", Argv[0]);\r
+ CMFUsage ();\r
return EFI_INVALID_PARAMETER;\r
}\r
}\r
-\r
+ \r
Options->FileSize *= Multiplier;\r
//\r
// Assume byte value of 0xff\r
Options->ByteValue = (INT8) (UINT8) 0xFF;\r
return EFI_SUCCESS;\r
}\r
+\r
+\r
+static\r
+void \r
+CMFVersion(\r
+ void\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ Print out version information for Strip.\r
+\r
+Arguments:\r
+\r
+ None\r
+ \r
+Returns:\r
+\r
+ None\r
+ \r
+--*/ \r
+{\r
+ printf ("%s v%d.%d -EDK utility to create a pad file containing fixed data\n", UTILITY_NAME, UTILITY_MAJOR_VERSION, UTILITY_MINOR_VERSION);\r
+ printf ("Copyright (c) 1999-2006 Intel Corporation. All rights reserved.\n");\r
+}\r
+\r
//\r
// Print utility usage info\r
//\r
static\r
void\r
-Usage (\r
+CMFUsage (\r
VOID\r
)\r
/*++\r
GC_TODO: add return values\r
\r
--*/\r
-{\r
- UINT32 Index;\r
- static const INT8 *Text[] = {\r
- " ",\r
- "Usage: "PROGRAM_NAME " OutFileName FileSize",\r
- " where:",\r
- " OutFileName is the name of the output file to generate",\r
- " FileSize is the size of the file to create",\r
- " Examples:",\r
- " "PROGRAM_NAME " OutFile.bin 32K",\r
- " "PROGRAM_NAME " OutFile.bin 0x1000",\r
- " ",\r
- NULL\r
- };\r
-\r
- for (Index = 0; Text[Index] != NULL; Index++) {\r
- fprintf (stdout, "%s\n", Text[Index]);\r
- }\r
-}\r
+{ \r
+ CMFVersion();\r
+ \r
+ printf ("\n Usage: %s OutFileName FileSize \n\\r
+ where: \n\\r
+ OutFileName is the name of the output file to generate \n\\r
+ FileSize is the size of the file to create \n\\r
+ Examples: \n\\r
+ %s OutFile.bin 32K \n\\r
+ %s OutFile.bin 0x1000 \n",UTILITY_NAME, UTILITY_NAME, UTILITY_NAME);\r
+} \r
+\r