--- hatari-1.4.0.orig/src/paths.c +++ hatari-1.4.0/src/paths.c @@ -109,71 +109,6 @@ free(pTmpName); } - -/** - * Locate the directory where the hatari executable resides - */ -static char *Paths_InitExecDir(const char *argv0) -{ - char *psExecDir; /* Path string where the hatari executable can be found */ - - /* Allocate memory for storing the path string of the executable */ - psExecDir = malloc(FILENAME_MAX); - if (!psExecDir) - { - fprintf(stderr, "Out of memory (Paths_Init)\n"); - exit(-1); - } - - /* Determine the bindir... - * Start with empty string, then try to use OS specific functions, - * and finally analyze the PATH variable if it has not been found yet. */ - psExecDir[0] = '\0'; - -#if defined(__linux__) - { - int i; - /* On Linux, we can analyze the symlink /proc/self/exe */ - i = readlink("/proc/self/exe", psExecDir, FILENAME_MAX); - if (i > 0) - { - char *p; - psExecDir[i] = '\0'; - p = strrchr(psExecDir, '/'); /* Search last slash */ - if (p) - *p = 0; /* Strip file name from path */ - } - } -//#elif defined(WIN32) || defined(__CEGCC__) -// /* On Windows we can use GetModuleFileName for getting the exe path */ -// GetModuleFileName(NULL, psExecDir, FILENAME_MAX); -#endif - - /* If we do not have the execdir yet, analyze argv[0] and the PATH: */ - if (psExecDir[0] == 0) - { - if (strchr(argv0, PATHSEP) == 0) - { - /* No separator in argv[0], we have to explore PATH... */ - Paths_GetExecDirFromPATH(argv0, psExecDir, FILENAME_MAX); - } - else - { - /* There was a path separator in argv[0], so let's assume a - * relative or absolute path to the current directory in argv[0] */ - char *p; - strncpy(psExecDir, argv0, FILENAME_MAX); - psExecDir[FILENAME_MAX-1] = 0; - p = strrchr(psExecDir, PATHSEP); /* Search last slash */ - if (p) - *p = 0; /* Strip file name from path */ - } - } - - return psExecDir; -} - - /** * Initialize the users home directory string * and Hatari's home directory (~/.hatari) @@ -226,8 +161,6 @@ */ void Paths_Init(const char *argv0) { - char *psExecDir; /* Path string where the hatari executable can be found */ - /* Init working directory string */ if (getcwd(sWorkingDir, FILENAME_MAX) == NULL) { @@ -238,27 +171,11 @@ /* Init the user's home directory string */ Paths_InitHomeDirs(); - /* Get the directory where the executable resides */ - psExecDir = Paths_InitExecDir(argv0); - - /* Now create the datadir path name from the bindir path name: */ - if (psExecDir && strlen(psExecDir) > 0) - { - snprintf(sDataDir, sizeof(sDataDir), "%s%c%s", - psExecDir, PATHSEP, BIN2DATADIR); - } - else - { - /* bindir could not be determined, let's assume datadir is relative - * to current working directory... */ - strcpy(sDataDir, BIN2DATADIR); - } + strcpy(sDataDir, BIN2DATADIR); /* And finally make a proper absolute path out of datadir: */ File_MakeAbsoluteName(sDataDir); - free(psExecDir); - /* fprintf(stderr, " WorkingDir = %s\n DataDir = %s\n UserHomeDir = %s\n HatariHomeDir = %s\n", sWorkingDir, sDataDir, sUserHomeDir, sHatariHomeDir); */ }