git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5440 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			326 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			326 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/Library/EfiShellLib.h Newv1.5/Application/Shell/Library/EfiShellLib.h
 | 
						|
--- Oldv1.5/Application/Shell/Library/EfiShellLib.h	2008-06-10 13:46:56.000000000 +0800
 | 
						|
+++ Newv1.5/Application/Shell/Library/EfiShellLib.h	2008-07-09 11:45:28.026417300 +0800
 | 
						|
@@ -174,22 +174,23 @@
 | 
						|
 //
 | 
						|
 //  Environment variable name constants
 | 
						|
 //
 | 
						|
-#define VarLanguageCodes    L"LangCodes"
 | 
						|
-#define VarLanguage         L"Lang"
 | 
						|
-#define VarTimeout          L"Timeout"
 | 
						|
-#define VarConsoleIn        L"ConIn"
 | 
						|
-#define VarConsoleOut       L"ConOut"
 | 
						|
-#define VarErrorOut         L"ErrOut"
 | 
						|
-#define VarBootOption       L"Boot%04x"
 | 
						|
-#define VarBootOrder        L"BootOrder"
 | 
						|
-#define VarBootNext         L"BootNext"
 | 
						|
-#define VarBootCurrent      L"BootCurrent"
 | 
						|
-#define VarDriverOption     L"Driver%04x"
 | 
						|
-#define VarDriverOrder      L"DriverOrder"
 | 
						|
-#define VarConsoleInpDev    L"ConInDev"
 | 
						|
-#define VarConsoleOutDev    L"ConOutDev"
 | 
						|
-#define VarErrorOutDev      L"ErrOutDev"
 | 
						|
-#define LanguageCodeEnglish "eng"
 | 
						|
+#define VarLanguageCodes            L"LangCodes"
 | 
						|
+#define VarLanguage                 L"Lang"
 | 
						|
+#define VarTimeout                  L"Timeout"
 | 
						|
+#define VarConsoleIn                L"ConIn"
 | 
						|
+#define VarConsoleOut               L"ConOut"
 | 
						|
+#define VarErrorOut                 L"ErrOut"
 | 
						|
+#define VarBootOption               L"Boot%04x"
 | 
						|
+#define VarBootOrder                L"BootOrder"
 | 
						|
+#define VarBootNext                 L"BootNext"
 | 
						|
+#define VarBootCurrent              L"BootCurrent"
 | 
						|
+#define VarDriverOption             L"Driver%04x"
 | 
						|
+#define VarDriverOrder              L"DriverOrder"
 | 
						|
+#define VarConsoleInpDev            L"ConInDev"
 | 
						|
+#define VarConsoleOutDev            L"ConOutDev"
 | 
						|
+#define VarErrorOutDev              L"ErrOutDev"
 | 
						|
+#define LanguageCodeEnglish         "eng"
 | 
						|
+#define PlatformLanguageCodeEnglish "en-US"
 | 
						|
 
 | 
						|
 #define ISO_639_2_ENTRY_SIZE  3
 | 
						|
 #define RFC_3066_ENTRY_SIZE   12
 | 
						|
@@ -333,4 +334,10 @@
 | 
						|
   IN CHAR8                           *LangCode
 | 
						|
   );
 | 
						|
 
 | 
						|
+CHAR8 *
 | 
						|
+ExtractSupportedLanguage (
 | 
						|
+  IN CONST CHAR8   *SupportedLanguages,
 | 
						|
+  IN CONST CHAR8   *Language
 | 
						|
+  );
 | 
						|
+
 | 
						|
 #endif
 | 
						|
diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/Library/Misc.c Newv1.5/Application/Shell/Library/Misc.c
 | 
						|
--- Oldv1.5/Application/Shell/Library/Misc.c	2008-06-10 13:46:56.000000000 +0800
 | 
						|
+++ Newv1.5/Application/Shell/Library/Misc.c	2008-07-09 11:45:28.088917700 +0800
 | 
						|
@@ -2271,3 +2271,76 @@
 | 
						|
   }
 | 
						|
   return Lang;
 | 
						|
 }
 | 
						|
+
 | 
						|
+CHAR8 *
 | 
						|
+ExtractSupportedLanguage (
 | 
						|
+  IN CONST CHAR8   *SupportedLanguages,
 | 
						|
+  IN CONST CHAR8   *Language
 | 
						|
+  )
 | 
						|
+/*++
 | 
						|
+
 | 
						|
+  Routine Description:
 | 
						|
+
 | 
						|
+    This function matches the major language code (first two characters) in the
 | 
						|
+    SupportedLanguages. The first language code in the SupportedLanguages that
 | 
						|
+    matches first two characters of the input Language is returned. If there is no
 | 
						|
+    such match, then NULL is returned.
 | 
						|
+
 | 
						|
+  Arguments:
 | 
						|
+
 | 
						|
+    SupportedLanguages    -   A Null-terminated ASCII string that contains one
 | 
						|
+                              or more supported language codes. 
 | 
						|
+
 | 
						|
+    LangCode              -   A pointer to a Null-terminated ASCII string
 | 
						|
+                              array indicating the RFC 3066 language.
 | 
						|
+
 | 
						|
+  Returns:
 | 
						|
+
 | 
						|
+    The RFC3066 language code that matches the major language. 
 | 
						|
+
 | 
						|
+--*/
 | 
						|
+{
 | 
						|
+  CONST CHAR8      *CurrentLanguage;
 | 
						|
+  CHAR8            *SupportedLanguage;
 | 
						|
+  UINTN            LanguageLen;
 | 
						|
+
 | 
						|
+  CurrentLanguage = SupportedLanguages;
 | 
						|
+
 | 
						|
+  while (CurrentLanguage != '\0') {
 | 
						|
+    //
 | 
						|
+    // Search till the end of current language.
 | 
						|
+    // 
 | 
						|
+    LanguageLen = 0;
 | 
						|
+    while (CurrentLanguage[LanguageLen] != ';' && CurrentLanguage[LanguageLen] != '\0') {
 | 
						|
+      LanguageLen++;
 | 
						|
+    }
 | 
						|
+
 | 
						|
+    //
 | 
						|
+    // should use AsciiStrnCmp(CurrentLanguage, Language, 2) == 0
 | 
						|
+    // 
 | 
						|
+    if ((CurrentLanguage[0] == Language[0]) && (CurrentLanguage[1] == Language[1])) {
 | 
						|
+      //
 | 
						|
+      // Match the major language code, then return a new copy of
 | 
						|
+      // NULL-terminated SupportedLanguage.
 | 
						|
+      //
 | 
						|
+      SupportedLanguage = AllocatePool (LanguageLen + 1);
 | 
						|
+      CopyMem (SupportedLanguage, (VOID *) CurrentLanguage, LanguageLen);
 | 
						|
+
 | 
						|
+      SupportedLanguage[LanguageLen] = '\0';
 | 
						|
+
 | 
						|
+      return SupportedLanguage;
 | 
						|
+    }
 | 
						|
+    //
 | 
						|
+    // Make CurrentLangue point to the next candiate language code.
 | 
						|
+    // 
 | 
						|
+    CurrentLanguage += LanguageLen;
 | 
						|
+    if (*CurrentLanguage == ';') {
 | 
						|
+      CurrentLanguage++;
 | 
						|
+    }
 | 
						|
+  }
 | 
						|
+
 | 
						|
+  return NULL;
 | 
						|
+}
 | 
						|
+
 | 
						|
+
 | 
						|
+
 | 
						|
diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/SmbiosView/PrintInfo.c Newv1.5/Application/Shell/SmbiosView/PrintInfo.c
 | 
						|
--- Oldv1.5/Application/Shell/SmbiosView/PrintInfo.c	2007-11-26 14:01:00.000000000 +0800
 | 
						|
+++ Newv1.5/Application/Shell/SmbiosView/PrintInfo.c	2008-07-09 12:36:07.646190700 +0800
 | 
						|
@@ -1779,7 +1779,7 @@
 | 
						|
   //
 | 
						|
   // MaxSize is determined by follow formula
 | 
						|
   //
 | 
						|
-  MaxSize = 1 << Size;
 | 
						|
+  MaxSize = (UINTN) 1 << Size;
 | 
						|
   PrintToken (STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), HiiHandle, MaxSize);
 | 
						|
 
 | 
						|
   if (Option >= SHOW_DETAIL) {
 | 
						|
diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/SmbiosView/Smbios.h Newv1.5/Application/Shell/SmbiosView/Smbios.h
 | 
						|
--- Oldv1.5/Application/Shell/SmbiosView/Smbios.h	2006-03-07 16:20:46.000000000 +0800
 | 
						|
+++ Newv1.5/Application/Shell/SmbiosView/Smbios.h	2008-07-09 10:29:41.548254500 +0800
 | 
						|
@@ -34,11 +34,6 @@
 | 
						|
 
 | 
						|
 extern EFI_HII_HANDLE HiiHandle;
 | 
						|
 
 | 
						|
-#define EFI_SMBIOS_TABLE_GUID \
 | 
						|
-  { \
 | 
						|
-    0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d \
 | 
						|
-  }
 | 
						|
 
 | 
						|
-extern EFI_GUID       gEfiSmbiosTableGuid;
 | 
						|
 
 | 
						|
 #endif
 | 
						|
diff -urN --binary -a -x CVS Oldv1.5/Application/Shell/drivers/drivers.c Newv1.5/Application/Shell/drivers/drivers.c
 | 
						|
--- Oldv1.5/Application/Shell/drivers/drivers.c	2008-05-26 13:22:52.000000000 +0800
 | 
						|
+++ Newv1.5/Application/Shell/drivers/drivers.c	2008-07-09 12:36:16.552668700 +0800
 | 
						|
@@ -130,6 +130,7 @@
 | 
						|
   UINTN                        StringIndex;
 | 
						|
   UINTN                        Index;
 | 
						|
   CHAR8                        *Language;
 | 
						|
+  CHAR8                        *PlatformLanguage;
 | 
						|
   UINTN                        DriverImageHandleCount;
 | 
						|
   EFI_HANDLE                   *DriverImageHandleBuffer;
 | 
						|
   UINTN                        HandleIndex;
 | 
						|
@@ -152,6 +153,7 @@
 | 
						|
   SHELL_VAR_CHECK_PACKAGE      ChkPck;
 | 
						|
 
 | 
						|
   Language                = NULL;
 | 
						|
+  PlatformLanguage        = NULL;
 | 
						|
   DriverImageHandleCount  = 0;
 | 
						|
   DriverImageHandleBuffer = NULL;
 | 
						|
   IsHelp                  = FALSE;
 | 
						|
@@ -241,7 +243,7 @@
 | 
						|
       goto Done;
 | 
						|
     }
 | 
						|
 
 | 
						|
-    Language = LibGetVariableLang ();
 | 
						|
+    Language = LibGetVariable (L"Lang", &gEfiGlobalVariableGuid);
 | 
						|
     if (Language == NULL) {
 | 
						|
       Language = (CHAR8 *)AllocateZeroPool(strlena(LanguageCodeEnglish) + 1);
 | 
						|
       if (Language == NULL) {
 | 
						|
@@ -250,6 +252,15 @@
 | 
						|
       strcpya(Language, LanguageCodeEnglish);
 | 
						|
     }
 | 
						|
 
 | 
						|
+    PlatformLanguage = LibGetVariable (L"PlatformLang", &gEfiGlobalVariableGuid);
 | 
						|
+    if (PlatformLanguage == NULL) {
 | 
						|
+      PlatformLanguage = (CHAR8 *)AllocateZeroPool(strlena(PlatformLanguageCodeEnglish) + 1);
 | 
						|
+      if (PlatformLanguage == NULL) {
 | 
						|
+        return EFI_OUT_OF_RESOURCES;
 | 
						|
+      }
 | 
						|
+      strcpya(PlatformLanguage, PlatformLanguageCodeEnglish);
 | 
						|
+    }
 | 
						|
+
 | 
						|
     Item = LibCheckVarGetFlag (&ChkPck, L"-l");
 | 
						|
     if (Item) {
 | 
						|
       if (Language != NULL) {
 | 
						|
@@ -314,14 +325,6 @@
 | 
						|
                   EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
						|
                   );
 | 
						|
 
 | 
						|
-    ComponentName  = NULL;
 | 
						|
-    ComponentName2 = NULL;
 | 
						|
-    Status = LibGetComponentNameProtocol (
 | 
						|
-               DriverImageHandleBuffer[Index],
 | 
						|
-               &ComponentName,
 | 
						|
-               &ComponentName2
 | 
						|
-               );
 | 
						|
-
 | 
						|
     DiagnosticsStatus = BS->OpenProtocol (
 | 
						|
                               DriverImageHandleBuffer[Index],
 | 
						|
                               &gEfiDriverDiagnostics2ProtocolGuid,
 | 
						|
@@ -418,37 +421,73 @@
 | 
						|
     } else {
 | 
						|
       PrintToken (STRING_TOKEN (STR_SHELLENV_PROTID_ONE_VAR_D), HiiHandle, NumberOfChildren);
 | 
						|
     }
 | 
						|
-
 | 
						|
-    Status     = EFI_SUCCESS;
 | 
						|
+    
 | 
						|
     DriverName = L"<UNKNOWN>";
 | 
						|
-    SupportedLanguage = NULL;
 | 
						|
-    if (ComponentName != NULL) {
 | 
						|
-      if (ComponentName->GetDriverName != NULL) {
 | 
						|
-        SupportedLanguage = LibConvertSupportedLanguage (ComponentName->SupportedLanguages, Language);
 | 
						|
+    Status = BS->OpenProtocol (
 | 
						|
+                   DriverImageHandleBuffer[Index],
 | 
						|
+                   &gEfiComponentName2ProtocolGuid,
 | 
						|
+                   (VOID **) &ComponentName2,
 | 
						|
+                   NULL,
 | 
						|
+                   NULL,
 | 
						|
+                   EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
						|
+                   );
 | 
						|
+    if (!EFI_ERROR (Status)) {
 | 
						|
+      //
 | 
						|
+      // Driver has Component Name 2 Protocol is available, we get the
 | 
						|
+      // driver name var RFC 3066 language code
 | 
						|
+      // 
 | 
						|
+      Status = ComponentName2->GetDriverName (
 | 
						|
+                                 ComponentName2,
 | 
						|
+                                 PlatformLanguage,
 | 
						|
+                                 &DriverName
 | 
						|
+                                 );
 | 
						|
+      if (EFI_ERROR (Status)) {
 | 
						|
+        //
 | 
						|
+        // Current RFC3066 language code fails, we then extract the supported
 | 
						|
+        // language from Component Name 2 protocol interface.
 | 
						|
+        // 
 | 
						|
+        SupportedLanguage =  ExtractSupportedLanguage(ComponentName2->SupportedLanguages, Language);
 | 
						|
+        if (SupportedLanguage != NULL) {
 | 
						|
+          Status = ComponentName2->GetDriverName (
 | 
						|
+                                     ComponentName2,
 | 
						|
+                                     SupportedLanguage,
 | 
						|
+                                     &DriverName
 | 
						|
+                                     );
 | 
						|
+          FreePool(SupportedLanguage);
 | 
						|
+        }
 | 
						|
+      }
 | 
						|
+    }
 | 
						|
+    if (EFI_ERROR (Status)) {
 | 
						|
+      //
 | 
						|
+      // In case Component Name 2 protocol is not available or some error occurs
 | 
						|
+      // when getting driver name from Component Name 2 protocol, we get driver
 | 
						|
+      // name from Component Name protocol.
 | 
						|
+      // 
 | 
						|
+      Status = BS->OpenProtocol (
 | 
						|
+                     DriverImageHandleBuffer[Index],
 | 
						|
+                     &gEfiComponentNameProtocolGuid,
 | 
						|
+                     (VOID **) &ComponentName,
 | 
						|
+                     NULL,
 | 
						|
+                     NULL,
 | 
						|
+                     EFI_OPEN_PROTOCOL_GET_PROTOCOL
 | 
						|
+                     );
 | 
						|
+      if (!EFI_ERROR (Status)) {
 | 
						|
         Status = ComponentName->GetDriverName (
 | 
						|
                                   ComponentName,
 | 
						|
-                                  SupportedLanguage,
 | 
						|
+                                  Language,
 | 
						|
                                   &DriverName
 | 
						|
                                   );
 | 
						|
       }
 | 
						|
-    } else if (ComponentName2 != NULL) {
 | 
						|
-      if (ComponentName2->GetDriverName != NULL) {
 | 
						|
-        SupportedLanguage = LibConvertSupportedLanguage (ComponentName2->SupportedLanguages, Language);
 | 
						|
-        Status = ComponentName2->GetDriverName (
 | 
						|
-                                   ComponentName2,
 | 
						|
-                                   SupportedLanguage,
 | 
						|
-                                   &DriverName
 | 
						|
-                                   );
 | 
						|
-      }
 | 
						|
     }
 | 
						|
-    if (SupportedLanguage != NULL) {
 | 
						|
-      FreePool (SupportedLanguage);
 | 
						|
-    }
 | 
						|
-
 | 
						|
     if (EFI_ERROR (Status)) {
 | 
						|
+      //
 | 
						|
+      // Fails to get driver name from either Component Name 2 & Component Name
 | 
						|
+      // Protocol, we show "<UNKNOWN>" string as driver name.
 | 
						|
+      // 
 | 
						|
       DriverName = L"<UNKNOWN>";
 | 
						|
     }
 | 
						|
 
 | 
						|
+ 
 | 
						|
     for (StringIndex = 0; StringIndex < StrLen (DriverName) && StringIndex < 35; StringIndex++) {
 | 
						|
       FormattedDriverName[StringIndex] = DriverName[StringIndex];
 | 
						|
     }
 | 
						|
@@ -491,6 +530,10 @@
 | 
						|
     FreePool (Language);
 | 
						|
   }
 | 
						|
 
 | 
						|
+  if (PlatformLanguage != NULL) {
 | 
						|
+    FreePool (PlatformLanguage);
 | 
						|
+  }
 | 
						|
+
 | 
						|
   ShellCloseHandleEnumerator ();
 | 
						|
   LibCheckVarFreeVarList (&ChkPck);
 | 
						|
   LibUnInitializeStrings ();
 |