]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellCEntryLib/UefiShellCEntryLib.c
fixed license header / copyright date on all files.
[mirror_edk2.git] / ShellPkg / Library / UefiShellCEntryLib / UefiShellCEntryLib.c
index 0ce5271f2245f23ead7b15a7cfdb3cec8bca5985..6160df576a10aada5104db504ed235d3e3ccebb2 100644 (file)
@@ -1,39 +1,50 @@
 /** @file\r
-  Provides application point extension for "C" style main funciton \r
+  Provides application point extension for "C" style main funciton\r
 \r
-Copyright (c) 2009, Intel Corporation\r
-All rights reserved. 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
+  Copyright (c) 2009-2010, 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
+  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
 \r
 **/\r
 \r
 #include <Base.h>\r
 \r
 #include <Protocol/SimpleFileSystem.h>\r
+#include <Protocol/LoadedImage.h>\r
 #include <Protocol/EfiShellInterface.h>\r
 #include <Protocol/EfiShellParameters.h>\r
 \r
+#include <Library/ShellCEntryLib.h>\r
 #include <Library/DebugLib.h>\r
 \r
-INT32 \r
-EFIAPI \r
-main(\r
-  UINTN Argc, \r
-  CHAR16 **Argv\r
-);\r
+/**\r
+  UEFI entry point for an application that will in turn call the\r
+  ShellAppMain function which has parameters similar to a standard C\r
+  main function.\r
 \r
+  An application that uses UefiShellCEntryLib must have a ShellAppMain\r
+  function as prototyped in Include/Library/ShellCEntryLib.h.\r
+\r
+  @param  ImageHandle  The image handle of the UEFI Application.\r
+  @param  SystemTable  A pointer to the EFI System Table.\r
+\r
+  @retval  EFI_SUCCESS               The application exited normally.\r
+  @retval  Other                     An error occurred.\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
-ShellCEntryLib(\r
+ShellCEntryLib (\r
   IN EFI_HANDLE        ImageHandle,\r
   IN EFI_SYSTEM_TABLE  *SystemTable\r
-  ){\r
-  INT32                         ReturnFromMain;\r
+  )\r
+{\r
+  INTN                           ReturnFromMain;\r
   EFI_SHELL_PARAMETERS_PROTOCOL *EfiShellParametersProtocol;\r
   EFI_SHELL_INTERFACE           *EfiShellInterface;\r
   EFI_STATUS                    Status;\r
@@ -42,7 +53,7 @@ ShellCEntryLib(
   EfiShellParametersProtocol = NULL;\r
   EfiShellInterface = NULL;\r
 \r
-  Status = SystemTable->BootServices->OpenProtocol(ImageHandle, \r
+  Status = SystemTable->BootServices->OpenProtocol(ImageHandle,\r
                              &gEfiShellParametersProtocolGuid,\r
                              (VOID **)&EfiShellParametersProtocol,\r
                              ImageHandle,\r
@@ -53,12 +64,15 @@ ShellCEntryLib(
     //\r
     // use shell 2.0 interface\r
     //\r
-    ReturnFromMain = main(EfiShellInterface->Argc, EfiShellInterface->Argv);\r
+    ReturnFromMain = ShellAppMain (\r
+                       EfiShellParametersProtocol->Argc,\r
+                       EfiShellParametersProtocol->Argv\r
+                       );\r
   } else {\r
     //\r
     // try to get shell 1.0 interface instead.\r
     //\r
-    Status = SystemTable->BootServices->OpenProtocol(ImageHandle, \r
+    Status = SystemTable->BootServices->OpenProtocol(ImageHandle,\r
                                &gEfiShellInterfaceGuid,\r
                                (VOID **)&EfiShellInterface,\r
                                ImageHandle,\r
@@ -68,8 +82,11 @@ ShellCEntryLib(
     if (!EFI_ERROR(Status)) {\r
       //\r
       // use shell 1.0 interface\r
-      // \r
-      ReturnFromMain = main(EfiShellParametersProtocol->Argc, EfiShellParametersProtocol->Argv);\r
+      //\r
+      ReturnFromMain = ShellAppMain (\r
+                         EfiShellInterface->Argc,\r
+                         EfiShellInterface->Argv\r
+                         );\r
     } else {\r
       ASSERT(FALSE);\r
     }\r