]> git.sesse.net Git - vlc/blob - src/os2/dirs.c
android: convert Android logger to module
[vlc] / src / os2 / dirs.c
1 /*****************************************************************************
2  * dirs.c: OS/2 directories configuration
3  *****************************************************************************
4  * Copyright (C) 2010 VLC authors and VideoLAN
5  *
6  * Authors: KO Myung-Hun <komh@chollian.net>
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation; either version 2.1 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21  *****************************************************************************/
22
23 #ifdef HAVE_CONFIG_H
24 # include "config.h"
25 #endif
26
27 #include <vlc_common.h>
28
29 #include "../libvlc.h"
30 #include <vlc_charset.h>
31 #include "config/configuration.h"
32
33 char *config_GetLibDir (void)
34 {
35     HMODULE hmod;
36     CHAR    psz_path[CCHMAXPATH + 4];
37
38     DosQueryModFromEIP( &hmod, NULL, 0, NULL, NULL, ( ULONG )system_Init );
39     DosQueryModuleName( hmod, sizeof( psz_path ), psz_path );
40
41     /* remove the DLL name */
42     char *slash = strrchr( psz_path, '\\');
43     if( slash == NULL )
44         abort();
45     strcpy(slash + 1, PACKAGE);
46     return FromLocaleDup(psz_path);
47 }
48
49 /**
50  * Determines the shared data directory
51  *
52  * @return a nul-terminated string or NULL. Use free() to release it.
53  */
54 char *config_GetDataDir (void)
55 {
56     const char *path = getenv ("VLC_DATA_PATH");
57     if (path)
58         return strdup (path);
59
60     char *datadir = config_GetLibDir();
61     if (datadir)
62         /* replace last lib\vlc with share */
63         strcpy ( datadir + strlen (datadir) - 7, "share");
64     return datadir;
65 }
66
67 static char *config_GetHomeDir (void)
68 {
69     const char *home = getenv ("HOME");
70     if (home != NULL)
71         return FromLocaleDup (home);
72
73     return config_GetLibDir();
74 }
75
76 char *config_GetUserDir (vlc_userdir_t type)
77 {
78     switch (type)
79     {
80         case VLC_HOME_DIR:
81         case VLC_CONFIG_DIR:
82         case VLC_DATA_DIR:
83         case VLC_CACHE_DIR:
84         case VLC_DESKTOP_DIR:
85         case VLC_DOWNLOAD_DIR:
86         case VLC_TEMPLATES_DIR:
87         case VLC_PUBLICSHARE_DIR:
88         case VLC_DOCUMENTS_DIR:
89         case VLC_MUSIC_DIR:
90         case VLC_PICTURES_DIR:
91         case VLC_VIDEOS_DIR:
92             break;
93     }
94     return config_GetHomeDir ();
95 }