Skip to content

Commit

Permalink
Merge pull request #3941 from MartinNowak/fix13413
Browse files Browse the repository at this point in the history
fix Issue 13413 - dmd does not follow symlink when searching for dmd.conf
  • Loading branch information
WalterBright committed Sep 2, 2014
2 parents 10edd8d + 9cca69a commit 70ec834
Showing 1 changed file with 10 additions and 14 deletions.
24 changes: 10 additions & 14 deletions src/inifile.c
Expand Up @@ -73,25 +73,22 @@ const char *findinifile(const char *argv0, const char *inifile)
return filename;

#if __linux__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun
/* argv0 might be a symbolic link,
* so try again looking past it to the real path
*/
const char *real_argv0 = FileName::canonicalName(argv0);
//printf("argv0 = %s, real_argv0 = %p\n", argv0, real_argv0);
if (real_argv0)
{
filename = FileName::replaceName(real_argv0, inifile);
if (FileName::exists(filename))
return filename;
}

// Search PATH for argv0
const char *p = getenv("PATH");
#if LOG
printf("\tPATH='%s'\n", p);
#endif
Strings *paths = FileName::splitPath(p);
filename = FileName::searchPath(paths, argv0, 0);
const char *abspath = FileName::searchPath(paths, argv0, 0);
if (abspath)
{
const char *absname = FileName::replaceName(abspath, inifile);
if (FileName::exists(absname))
return absname;
}

// Resolve symbolic links
filename = FileName::canonicalName(abspath ? abspath : argv0);
if (filename)
{
filename = FileName::replaceName(filename, inifile);
Expand Down Expand Up @@ -312,4 +309,3 @@ char *skipspace(char *p)
p++;
return p;
}

0 comments on commit 70ec834

Please sign in to comment.