vlc_timer_*: use atomic_*() functions
[vlc.git] / src / posix / darwin_specific.c
1
2 /*****************************************************************************
3  * darwin_specific.m: Darwin specific features
4  *****************************************************************************
5  * Copyright (C) 2001-2009 VLC authors and VideoLAN
6  * $Id$
7  *
8  * Authors: Sam Hocevar <sam@zoy.org>
9  *          Christophe Massiot <massiot@via.ecp.fr>
10  *          Pierre d'Herbemont <pdherbemont@free.fr>
11  *
12  * This program is free software; you can redistribute it and/or modify it
13  * under the terms of the GNU Lesser General Public License as published by
14  * the Free Software Foundation; either version 2.1 of the License, or
15  * (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU Lesser General Public License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public License
23  * along with this program; if not, write to the Free Software Foundation,
24  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
25  *****************************************************************************/
26
27 #ifdef HAVE_CONFIG_H
28 # include "config.h"
29 #endif
30
31 #include <vlc_common.h>
32 #include "../libvlc.h"
33 #include <dirent.h>                                                /* *dir() */
34 #include <CoreFoundation/CoreFoundation.h>
35
36 #ifdef HAVE_LOCALE_H
37 #   include <locale.h>
38 #endif
39
40 /*****************************************************************************
41  * system_Init: fill in program path & retrieve language
42  *****************************************************************************/
43 void system_Init(void)
44 {
45 #ifdef ENABLE_NLS
46     /* Check if $LANG is set. */
47     if( NULL == getenv("LANG") )
48     {
49         /*
50            Retrieve the preferred language as chosen in  System Preferences.app
51            (note that CFLocaleCopyCurrent() is not used because it returns the
52             preferred locale not language)
53         */
54         CFArrayRef all_locales, preferred_locales;
55         char psz_locale[50];
56
57         all_locales = CFLocaleCopyAvailableLocaleIdentifiers();
58
59         preferred_locales = CFBundleCopyLocalizationsForPreferences( all_locales, NULL );
60
61         if ( preferred_locales )
62         {
63             if ( CFArrayGetCount( preferred_locales ) )
64             {
65                 CFStringRef user_language_string_ref = CFArrayGetValueAtIndex( preferred_locales, 0 );
66                 CFStringGetCString( user_language_string_ref, psz_locale, sizeof(psz_locale), kCFStringEncodingUTF8 );
67                 setenv( "LANG", psz_locale, 1 );
68             }
69             CFRelease( preferred_locales );
70         }
71         CFRelease( all_locales );
72     }
73 #endif
74 }
75
76 /*****************************************************************************
77  * system_Configure: check for system specific configuration options.
78  *****************************************************************************/
79 void system_Configure( libvlc_int_t *p_this,
80                        int i_argc, const char *const ppsz_argv[] )
81 {
82     (void)p_this;
83     (void)i_argc;
84     (void)ppsz_argv;
85 }
86
87 /*****************************************************************************
88  * system_End: free the program path.
89  *****************************************************************************/
90 void system_End( void )
91 {
92 }
93