annotate get_path.c @ 13540:02c0d4371573

fixed memleak, especially for fixed-vo. Based on a patch by beastd (eclipse7 (at) gmx (dot) net).
author reimar
date Sun, 03 Oct 2004 21:42:31 +0000
parents 54ea3d6e657c
children a7f11c8091e4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2557
6a74454ea121 some cleanup
arpi
parents:
diff changeset
1
12891
54ea3d6e657c added src level documentation for the get_path() function
al
parents: 12358
diff changeset
2 /*
54ea3d6e657c added src level documentation for the get_path() function
al
parents: 12358
diff changeset
3 * Get path to config dir/file.
54ea3d6e657c added src level documentation for the get_path() function
al
parents: 12358
diff changeset
4 *
54ea3d6e657c added src level documentation for the get_path() function
al
parents: 12358
diff changeset
5 * Return Values:
54ea3d6e657c added src level documentation for the get_path() function
al
parents: 12358
diff changeset
6 * Returns the pointer to the ALLOCATED buffer containing the
54ea3d6e657c added src level documentation for the get_path() function
al
parents: 12358
diff changeset
7 * zero terminated path string. This buffer has to be FREED
54ea3d6e657c added src level documentation for the get_path() function
al
parents: 12358
diff changeset
8 * by the caller.
54ea3d6e657c added src level documentation for the get_path() function
al
parents: 12358
diff changeset
9 *
54ea3d6e657c added src level documentation for the get_path() function
al
parents: 12358
diff changeset
10 */
2557
6a74454ea121 some cleanup
arpi
parents:
diff changeset
11 char *get_path(char *filename){
6a74454ea121 some cleanup
arpi
parents:
diff changeset
12 char *homedir;
6a74454ea121 some cleanup
arpi
parents:
diff changeset
13 char *buff;
10026
b8780122e043 Cygwin should behave like a Unix environment, i.e. config files should be
diego
parents: 9929
diff changeset
14 #if defined(__MINGW32__)
9926
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
15 static char *config_dir = "/mplayer";
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
16 #else
2557
6a74454ea121 some cleanup
arpi
parents:
diff changeset
17 static char *config_dir = "/.mplayer";
9926
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
18 #endif
2557
6a74454ea121 some cleanup
arpi
parents:
diff changeset
19 int len;
6a74454ea121 some cleanup
arpi
parents:
diff changeset
20
6a74454ea121 some cleanup
arpi
parents:
diff changeset
21 if ((homedir = getenv("HOME")) == NULL)
9926
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
22 #if defined(__MINGW32__)||defined(__CYGWIN__) /*hack to get fonts etc. loaded outside of cygwin environment*/
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
23 {
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
24 int i,imax=0;
9929
faust3
parents: 9926
diff changeset
25 char exedir[260];
faust3
parents: 9926
diff changeset
26 GetModuleFileNameA(NULL, exedir, 260);
9926
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
27 for(i=0; i< strlen(exedir);i++)if(exedir[i] =='\\'){exedir[i]='/';imax=i;}
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
28 exedir[imax]='\0';
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
29 homedir = exedir;
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
30 }
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
31 #else
2557
6a74454ea121 some cleanup
arpi
parents:
diff changeset
32 return NULL;
9926
ad429d617df4 allow config file loading outside of cygwin environment
faust3
parents: 3746
diff changeset
33 #endif
2557
6a74454ea121 some cleanup
arpi
parents:
diff changeset
34 len = strlen(homedir) + strlen(config_dir) + 1;
6a74454ea121 some cleanup
arpi
parents:
diff changeset
35 if (filename == NULL) {
6a74454ea121 some cleanup
arpi
parents:
diff changeset
36 if ((buff = (char *) malloc(len)) == NULL)
6a74454ea121 some cleanup
arpi
parents:
diff changeset
37 return NULL;
6a74454ea121 some cleanup
arpi
parents:
diff changeset
38 sprintf(buff, "%s%s", homedir, config_dir);
6a74454ea121 some cleanup
arpi
parents:
diff changeset
39 } else {
6a74454ea121 some cleanup
arpi
parents:
diff changeset
40 len += strlen(filename) + 1;
6a74454ea121 some cleanup
arpi
parents:
diff changeset
41 if ((buff = (char *) malloc(len)) == NULL)
6a74454ea121 some cleanup
arpi
parents:
diff changeset
42 return NULL;
6a74454ea121 some cleanup
arpi
parents:
diff changeset
43 sprintf(buff, "%s%s/%s", homedir, config_dir, filename);
6a74454ea121 some cleanup
arpi
parents:
diff changeset
44 }
3746
d21bae2028a6 some debugging
arpi
parents: 2557
diff changeset
45 mp_msg(MSGT_GLOBAL,MSGL_V,"get_path('%s') -> '%s'\n",filename,buff);
2557
6a74454ea121 some cleanup
arpi
parents:
diff changeset
46 return buff;
6a74454ea121 some cleanup
arpi
parents:
diff changeset
47 }