[vlc-commits] Win32: take LANG value from --language and the HKCU value

Jean-Baptiste Kempf git at videolan.org
Sat Sep 7 19:33:08 CEST 2013


vlc/vlc-2.1 | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Fri Sep  6 19:49:36 2013 +0200| [ba17589c3f12f2dff3ddf2ea3c6085e9a68f40ef] | committer: Jean-Baptiste Kempf

Win32: take LANG value from --language and the HKCU value

(cherry picked from commit 7439ce1970cbba613dddce797b75a383b448da2d)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.1.git/?a=commit;h=ba17589c3f12f2dff3ddf2ea3c6085e9a68f40ef
---

 bin/winvlc.c |   31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/bin/winvlc.c b/bin/winvlc.c
index 26c6386..22258b0 100644
--- a/bin/winvlc.c
+++ b/bin/winvlc.c
@@ -108,6 +108,7 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
     char *argv[argc + 3];
     BOOL crash_handling = TRUE;
     int j = 0;
+    char *lang = NULL;
 
     argv[j++] = FromWide( L"--media-library" );
     argv[j++] = FromWide( L"--no-ignore-config" );
@@ -118,6 +119,12 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
             crash_handling = FALSE;
             continue; /* don't give argument to libvlc */
         }
+        if (!wcsncmp(wargv[i], L"--language", 10) )
+        {
+            if (i < argc - 1 && wcsncmp( wargv[i + 1], L"--", 2 ))
+                lang = FromWide (wargv[++i]);
+            continue;
+        }
 
         argv[j++] = FromWide (wargv[i]);
     }
@@ -141,6 +148,30 @@ int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
 
     _setmode( STDIN_FILENO, _O_BINARY ); /* Needed for pipes */
 
+    /* */
+    if (!lang)
+    {
+        HKEY h_key;
+        if( RegOpenKeyEx( HKEY_CURRENT_USER, TEXT("Software\\VideoLAN\\VLC\\"), 0, KEY_READ, &h_key )
+                == ERROR_SUCCESS )
+        {
+            TCHAR szData[256];
+            DWORD len = 256;
+            if( RegQueryValueEx( h_key, TEXT("Lang"), NULL, NULL, (LPBYTE) &szData, &len ) == ERROR_SUCCESS )
+                lang = FromWide( szData );
+        }
+    }
+
+    if (lang && strncmp( lang, "auto", 4 ) )
+    {
+        char *tmp;
+        if (asprintf(&tmp, "LANG=%s", lang) != -1 ) {
+            putenv(tmp);
+            free(tmp);
+        }
+    }
+    free(lang);
+
     /* Initialize libvlc */
     libvlc_instance_t *vlc;
     vlc = libvlc_new (argc, (const char **)argv);



More information about the vlc-commits mailing list