]> git.sesse.net Git - vlc/blobdiff - src/misc/darwin_specific.m
* prepare 0.8.2-test3
[vlc] / src / misc / darwin_specific.m
index c0e76d1ee5d807c72047e703f981367f99d619fe..154f74ecdead1a72bc9c2846591c7ac608d81c22 100644 (file)
@@ -1,17 +1,17 @@
 /*****************************************************************************
- * darwin_specific.m: Darwin specific features 
+ * darwin_specific.m: Darwin specific features
  *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- * $Id: darwin_specific.m,v 1.1 2002/12/30 08:56:19 massiot Exp $
+ * Copyright (C) 2001-2004 VideoLAN
+ * $Id$
  *
- * Authors: Samuel Hocevar <sam@zoy.org>
+ * Authors: Sam Hocevar <sam@zoy.org>
  *          Christophe Massiot <massiot@via.ecp.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
 #include <Cocoa/Cocoa.h>
 
-/*****************************************************************************
- * Static vars
- *****************************************************************************/
-static char * psz_program_path;
+#ifdef HAVE_LOCALE_H
+#   include <locale.h>
+#endif
 
 /*****************************************************************************
  * system_Init: fill in program path & retrieve language
  *****************************************************************************/
 static int FindLanguage( const char * psz_lang )
 {
-    const char * psz_short = NULL;
-
-    if ( !strcmp(psz_lang, "German") )
-    {
-        psz_short = "de";
-    }
-    else if ( !strcmp(psz_lang, "British") )
-    {
-        psz_short = "en_GB";
-    }
-    else if ( !strcmp(psz_lang, "French") )
-    {
-        psz_short = "fr";
-    }
-    else if ( !strcmp(psz_lang, "Italian") )
-    {
-        psz_short = "it";
-    }
-    else if ( !strcmp(psz_lang, "Japanese") )
-    {
-        psz_short = "ja";
-    }
-    else if ( !strcmp(psz_lang, "Dutch") )
-    {
-        psz_short = "nl";
-    }
-    else if ( !strcmp(psz_lang, "no") )
-    {
-        psz_short = "no";
-    }
-    else if ( !strcmp(psz_lang, "pl") )
+    const char ** ppsz_parser;
+    const char * ppsz_all[] =
     {
-        psz_short = "pl";
-    }
-    else if ( !strcmp(psz_lang, "ru") )
-    {
-        psz_short = "ru";
-    }
-    else if ( !strcmp(psz_lang, "se") )
-    {
-        psz_short = "se";
-    }
-    else if ( !strcmp(psz_lang, "English") )
+        "Catalan", "ca",
+        "Danish", "da",
+        "German", "de",
+        "British", "en_GB",
+        "English", "en",
+        "Spanish", "es",
+        "French", "fr",
+        "Italian", "it",
+        "Japanese", "ja",
+        "Dutch", "nl",
+        "Brazillian Portuguese", "pt_BR",
+        "Chinese Traditional", "zh_TW",
+        NULL
+    };
+
+    for( ppsz_parser = ppsz_all ; ppsz_parser[0] ; ppsz_parser += 2 )
     {
-        psz_short = "C";
-    }
-
-    if ( psz_short != NULL )
-    {
-        setenv("LANG", psz_short, 1);
-        return 1;
+        if( !strcmp( psz_lang, ppsz_parser[0] )
+             || !strcmp( psz_lang, ppsz_parser[1] ) )
+        {
+            setenv( "LANG", ppsz_parser[1], 1 );
+            return 1;
+        }
     }
 
     return 0;
@@ -100,7 +74,7 @@ void system_Init( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
     char *p_char, *p_oldchar = &i_dummy;
 
     /* Get the full program path and name */
-    p_char = psz_program_path = strdup( ppsz_argv[ 0 ] );
+    p_char = p_this->p_libvlc->psz_vlcpath = strdup( ppsz_argv[ 0 ] );
 
     /* Remove trailing program name */
     for( ; *p_char ; )
@@ -118,30 +92,31 @@ void system_Init( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
     /* Check if $LANG is set. */
     if ( (p_char = getenv("LANG")) == NULL )
     {
+        NSAutoreleasePool * o_pool = [[NSAutoreleasePool alloc] init];
+
         /* Retrieve user's preferences. */
-        NSUserDefaults * p_defs =
-            [[NSUserDefaults standardUserDefaults] autorelease];
-        NSArray * p_languages =
-            [[p_defs objectForKey:@"AppleLanguages"] autorelease];
-        NSEnumerator * p_enumerator =
-            [[p_languages objectEnumerator] autorelease];
-        NSString * p_lang;
-
-        while ( (p_lang = [[p_enumerator nextObject] autorelease]) )
+        NSUserDefaults * o_defs = [NSUserDefaults standardUserDefaults];
+        NSArray * o_languages = [o_defs objectForKey:@"AppleLanguages"];
+        NSEnumerator * o_enumerator = [o_languages objectEnumerator];
+        NSString * o_lang;
+
+        while ( (o_lang = [o_enumerator nextObject]) )
         {
-            const char * psz_string = [p_lang lossyCString];
+            const char * psz_string = [o_lang lossyCString];
             if ( FindLanguage( psz_string ) )
             {
                 break;
             }
         }
+
+        [o_pool release];
     }
 }
 
 /*****************************************************************************
  * system_Configure: check for system specific configuration options.
  *****************************************************************************/
-void system_Configure( vlc_t *p_this )
+void system_Configure( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
 {
 
 }
@@ -151,14 +126,6 @@ void system_Configure( vlc_t *p_this )
  *****************************************************************************/
 void system_End( vlc_t *p_this )
 {
-    free( psz_program_path );
-}
-
-/*****************************************************************************
- * system_GetProgramPath: get the full path to the program.
- *****************************************************************************/
-char * system_GetProgramPath( void )
-{
-    return( psz_program_path );
+    free( p_this->p_libvlc->psz_vlcpath );
 }