]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c
ShellPkg: Update Ifconfig command to accept 32bit subnet mask.
[mirror_edk2.git] / ShellPkg / Library / UefiShellDriver1CommandsLib / Drivers.c
index f3c1476872c0132905e4048e17bc5ece9ae00669..45ed6d0e7db1186a77141677f988349a8c0a9100 100644 (file)
@@ -2,7 +2,7 @@
   Main file for Drivers shell Driver1 function.\r
 \r
   (C) Copyright 2012-2015 Hewlett-Packard Development Company, L.P.<BR>\r
-  Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2018, 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
@@ -29,7 +29,7 @@ STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
   @param[in] TheHandle      The handle to get the device path for.\r
 \r
   @retval NULL    An error occured.\r
-  @return         A pointer to the driver path as a string.  The callee must \r
+  @return         A pointer to the driver path as a string.  The callee must\r
                   free this memory.\r
 **/\r
 CHAR16*\r
@@ -216,7 +216,7 @@ GetImageNameFromHandle (
         Status = gBS->HandleProtocol (\r
                         LoadedImage->DeviceHandle,\r
                         &gEfiFirmwareVolume2ProtocolGuid,\r
-                        &Fv2\r
+                        (VOID **)&Fv2\r
                         );\r
         if (!EFI_ERROR (Status)) {\r
           Status = Fv2->ReadSection (\r
@@ -269,6 +269,8 @@ ShellCommandRunDrivers (
   EFI_HANDLE          *HandleWalker;\r
   UINTN               ChildCount;\r
   UINTN               DeviceCount;\r
+  CHAR16              ChildCountStr[3];\r
+  CHAR16              DeviceCountStr[3];\r
   CHAR16              *Temp2;\r
   CONST CHAR16        *FullDriverName;\r
   CHAR16              *TruncatedDriverName;\r
@@ -300,7 +302,7 @@ ShellCommandRunDrivers (
   Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
   if (EFI_ERROR(Status)) {\r
     if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, L"drivers", ProblemParam);  \r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDriver1HiiHandle, L"drivers", ProblemParam);\r
       FreePool(ProblemParam);\r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
@@ -308,7 +310,7 @@ ShellCommandRunDrivers (
     }\r
   } else {\r
     if (ShellCommandLineGetCount(Package) > 1) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle, L"drivers");  \r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDriver1HiiHandle, L"drivers");\r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
       if (ShellCommandLineGetFlag(Package, L"-l")){\r
@@ -318,7 +320,7 @@ ShellCommandRunDrivers (
           AsciiSPrint(Language, StrSize(Lang), "%S", Lang);\r
         } else {\r
           ASSERT(Language == NULL);\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"drivers", L"-l");  \r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"drivers", L"-l");\r
           ShellCommandLineFreeVarList (Package);\r
           return (SHELL_INVALID_PARAMETER);\r
         }\r
@@ -363,26 +365,45 @@ ShellCommandRunDrivers (
         FullDriverName = GetStringNameFromHandle(*HandleWalker, Language);\r
         ImageName      = GetImageNameFromHandle (*HandleWalker);\r
 \r
+        UnicodeValueToStringS (ChildCountStr,  sizeof (ChildCountStr),  0, ChildCount,  0);\r
+        UnicodeValueToStringS (DeviceCountStr, sizeof (DeviceCountStr), 0, DeviceCount, 0);\r
         TruncatedDriverName = NULL;\r
         if (!SfoFlag && (FullDriverName != NULL)) {\r
           TruncatedDriverName = AllocateZeroPool ((MAX_LEN_DRIVER_NAME + 1) * sizeof (CHAR16));\r
           StrnCpyS (TruncatedDriverName, MAX_LEN_DRIVER_NAME + 1, FullDriverName, MAX_LEN_DRIVER_NAME);\r
         }\r
 \r
-        ShellPrintEx(\r
-          -1,\r
-          -1,\r
-          FormatString,\r
-          ConvertHandleToHandleIndex(*HandleWalker),\r
-          DriverVersion,\r
-          ChildCount > 0?L'B':(DeviceCount > 0?L'D':L'?'),\r
-          DriverConfig?L'Y':L'N',\r
-          DriverDiag?L'Y':L'N',\r
-          DeviceCount,\r
-          ChildCount,\r
-          SfoFlag?FullDriverName:TruncatedDriverName,\r
-          SfoFlag ? (Temp2 == NULL ? L"" : Temp2) : (ImageName == NULL ? L"" : ImageName)\r
-          );\r
+        if (!SfoFlag) {\r
+          ShellPrintEx (\r
+            -1,\r
+            -1,\r
+            FormatString,\r
+            ConvertHandleToHandleIndex (*HandleWalker),\r
+            DriverVersion,\r
+            ChildCount > 0 ? L'B' : (DeviceCount > 0 ? L'D' : L'?'),\r
+            DriverConfig ? L'X' : L'-',\r
+            DriverDiag ? L'X' : L'-',\r
+            DeviceCount > 0 ? DeviceCountStr : L"-",\r
+            ChildCount  > 0 ? ChildCountStr : L"-",\r
+            TruncatedDriverName,\r
+            ImageName == NULL ? L"" : ImageName\r
+            );\r
+        } else {\r
+          ShellPrintEx (\r
+            -1,\r
+            -1,\r
+            FormatString,\r
+            ConvertHandleToHandleIndex (*HandleWalker),\r
+            DriverVersion,\r
+            ChildCount > 0 ? L'B' : (DeviceCount > 0 ? L'D' : L'?'),\r
+            DriverConfig ? L'Y' : L'N',\r
+            DriverDiag ? L'Y' : L'N',\r
+            DeviceCount,\r
+            ChildCount,\r
+            FullDriverName,\r
+            Temp2 == NULL ? L"" : Temp2\r
+            );\r
+        }\r
         if (TruncatedDriverName != NULL) {\r
           FreePool (TruncatedDriverName);\r
         }\r