view get_path.c @ 10621:9f4af7d95d87

this small patch allows to compile the file libmpdemux/tvi_v4l.c properly, when the Linux is patched with the V4L2 patch, which automatically includes <linux/videodev2.h> when you include <linux/videodev.h>. It is necessary then to prevent <linux/time.h> from including (by defining the _LINUX_TIME_H macro) in order to resolve some collisions and it is also necessary to prevent the defining of "struct v4l2_capability" and "VIDIOC_QUERYCAP" in libmpdemux/tvi_v4l.c, when they are allready defined in the <linux/videodev2.h>. Patch by Martin Drab <drab@kepler.fjfi.cvut.cz>, checked by Arpi.
author diego
date Fri, 15 Aug 2003 15:25:55 +0000
parents b8780122e043
children 133e0ebde74d
line wrap: on
line source


char *get_path(char *filename){
	char *homedir;
	char *buff;
#if defined(__MINGW32__)
    static char *config_dir = "/mplayer";
#else
	static char *config_dir = "/.mplayer";
#endif
	int len;

	if ((homedir = getenv("HOME")) == NULL)
#if defined(__MINGW32__)||defined(__CYGWIN__) /*hack to get fonts etc. loaded outside of cygwin environment*/
	{
    	int __stdcall GetModuleFileNameA(void* hModule,char* lpFilename,int nSize);
        int i,imax=0;       
        char exedir[260];       
        GetModuleFileNameA(NULL, exedir, 260);
        for(i=0; i< strlen(exedir);i++)if(exedir[i] =='\\'){exedir[i]='/';imax=i;}
        exedir[imax]='\0';
	    homedir = exedir;
	}
#else
		return NULL;
#endif       
	len = strlen(homedir) + strlen(config_dir) + 1;
	if (filename == NULL) {
		if ((buff = (char *) malloc(len)) == NULL)
			return NULL;
		sprintf(buff, "%s%s", homedir, config_dir);
	} else {
		len += strlen(filename) + 1;
		if ((buff = (char *) malloc(len)) == NULL)
			return NULL;
		sprintf(buff, "%s%s/%s", homedir, config_dir, filename);
	}
	mp_msg(MSGT_GLOBAL,MSGL_V,"get_path('%s') -> '%s'\n",filename,buff);
	return buff;
}