summaryrefslogtreecommitdiff
path: root/EmbeddedPkg/EblExternCmd/EntryPointGlue.c
diff options
context:
space:
mode:
Diffstat (limited to 'EmbeddedPkg/EblExternCmd/EntryPointGlue.c')
-rw-r--r--EmbeddedPkg/EblExternCmd/EntryPointGlue.c154
1 files changed, 0 insertions, 154 deletions
diff --git a/EmbeddedPkg/EblExternCmd/EntryPointGlue.c b/EmbeddedPkg/EblExternCmd/EntryPointGlue.c
deleted file mode 100644
index d0e549bdc1..0000000000
--- a/EmbeddedPkg/EblExternCmd/EntryPointGlue.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/** @file
- Glue code that contains the EFI entry point and converts it to an EBL
- ASCII Argc, Argv sytle entry point
-
-
- Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
- Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-
-**/
-
-#include "Ebl.h"
-
-#define CMD_SEPARATOR ';'
-#define MAX_ARGS 32
-
-EFI_STATUS
-EblMain (
- IN UINTN Argc,
- IN CHAR8 **Argv
- );
-
-
-///
-/// EdkExternCmdEntry() & ParseArguments() convert the standard EFI entry point
-/// into Argc, Argv form that calls EblMain().
-///
-
-
-/**
- Parse the CmdLine and break it up into Argc (arg count) and Argv (array of
- pointers to each argument). The Cmd buffer is altered and separators are
- converted to string terminators. This allows Argv to point into CmdLine.
- A CmdLine can support multiple commands. The next command in the command line
- is returned if it exists.
-
- @param CmdLine String to parse for a set of commands
- @param CmdLineSize Size of CmdLine in bytes
- @param Argc Returns the number of arguments in the CmdLine current command
- @param Argv Argc pointers to each string in CmdLine
-
- @return Next Command in the command line or NULL if non exists
-**/
-VOID
-ParseArguments (
- IN CHAR8 *CmdLine,
- IN UINTN CmdLineSize,
- OUT UINTN *Argc,
- OUT CHAR8 **Argv
- )
-{
- UINTN Arg;
- CHAR8 *Char;
- BOOLEAN LookingForArg;
- BOOLEAN InQuote;
- UINTN Index;
-
- *Argc = 0;
- if ((CmdLineSize == 0) || (AsciiStrLen (CmdLine) == 0)) {
- // basic error checking failed on the arguments
- return;
- }
-
- // Walk a single command line. A CMD_SEPARATOR allows multiple commands on a single line
- InQuote = FALSE;
- LookingForArg = TRUE;
- for (Char = CmdLine, Arg = 0, Index = 0; *Char != '\0' && *Char != CMD_SEPARATOR; Char++, Index++) {
- // Perform any text conversion here
- if (*Char == '\t') {
- // TAB to space
- *Char = ' ';
- }
-
- if (LookingForArg) {
- // Look for the beginning of an Argv[] entry
- if (*Char == '"') {
- Argv[Arg++] = ++Char;
- LookingForArg = FALSE;
- InQuote = TRUE;
- } else if (*Char != ' ') {
- Argv[Arg++] = Char;
- LookingForArg = FALSE;
- }
- } else {
- // Looking for the terminator of an Argv[] entry
- if ((InQuote && (*Char == '"')) || (!InQuote && (*Char == ' '))) {
- *Char = '\0';
- LookingForArg = TRUE;
- }
- }
-
- if ((Arg >= MAX_ARGS) || (Index > CmdLineSize)) {
- // Error check buffer and exit since it does not look valid
- break;
- }
- }
-
- *Argc = Arg;
-
- if (*Char == CMD_SEPARATOR) {
- // Replace the command delimiter with null
- *Char = '\0';
- }
-
- return;
-}
-
-
-
-
-/**
- Embedded Boot Loader (EBL) - A simple EFI command line application for embedded
- devices. PcdEmbeddedAutomaticBootCommand is a complied in command line that
- gets executed automatically. The ; separator allows multiple commands
- for each command line.
-
- @param ImageHandle EFI ImageHandle for this application.
- @param SystemTable EFI system table
-
- @return EFI status of the application
-
-**/
-EFI_STATUS
-EFIAPI
-EdkExternCmdEntry (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
-{
- EFI_STATUS Status;
- EFI_LOADED_IMAGE_PROTOCOL *ImageInfo;
- UINTN Argc;
- CHAR8 *Argv[MAX_ARGS];
-
- Status = gBS->HandleProtocol (ImageHandle, &gEfiLoadedImageProtocolGuid, (VOID **)&ImageInfo);
- if (EFI_ERROR (Status)) {
- Argc = 0;
- } else {
- // Looks like valid commands were passed in.
- ParseArguments (ImageInfo->LoadOptions, ImageInfo->LoadOptionsSize, &Argc, Argv);
- }
-
- return EblMain (Argc, Argv);
-}
-
-