10l fix by Jindrich Makovicka
[mplayer/greg.git] / get_path.c
blob73b80f2e6e6749417faa4c51a3feb846bf3b8e73
2 char *get_path(char *filename){
3 char *homedir;
4 char *buff;
5 #if defined(__MINGW32__)
6 static char *config_dir = "/mplayer";
7 #else
8 static char *config_dir = "/.mplayer";
9 #endif
10 int len;
12 if ((homedir = getenv("HOME")) == NULL)
13 #if defined(__MINGW32__)||defined(__CYGWIN__) /*hack to get fonts etc. loaded outside of cygwin environment*/
15 int __stdcall GetModuleFileNameA(void* hModule,char* lpFilename,int nSize);
16 int i,imax=0;
17 char exedir[260];
18 GetModuleFileNameA(NULL, exedir, 260);
19 for(i=0; i< strlen(exedir);i++)if(exedir[i] =='\\'){exedir[i]='/';imax=i;}
20 exedir[imax]='\0';
21 homedir = exedir;
23 #else
24 return NULL;
25 #endif
26 len = strlen(homedir) + strlen(config_dir) + 1;
27 if (filename == NULL) {
28 if ((buff = (char *) malloc(len)) == NULL)
29 return NULL;
30 sprintf(buff, "%s%s", homedir, config_dir);
31 } else {
32 len += strlen(filename) + 1;
33 if ((buff = (char *) malloc(len)) == NULL)
34 return NULL;
35 sprintf(buff, "%s%s/%s", homedir, config_dir, filename);
37 mp_msg(MSGT_GLOBAL,MSGL_V,"get_path('%s') -> '%s'\n",filename,buff);
38 return buff;