Mercurial > projects > ddmd
diff dmd/Util.d @ 16:5c9b78899f5d
Implemented methods for Tuples, fixed some linking issues.
author | Robert Clipsham <robert@octarineparrot.com> |
---|---|
date | Sun, 04 Apr 2010 22:41:11 +0100 |
parents | 2cc604139636 |
children | fd4acc376c45 |
line wrap: on
line diff
--- a/dmd/Util.d Sun Apr 04 02:15:33 2010 +0100 +++ b/dmd/Util.d Sun Apr 04 22:41:11 2010 +0100 @@ -20,16 +20,36 @@ import core.stdc.stdlib; import core.stdc.ctype; import core.stdc.stdarg; -import core.stdc.stdio; +public import core.stdc.stdio; version (Bug4054) import core.memory; extern(C) int putenv(char*); +/+version (LOG) +{ + static if( !is(typeof(printf)) ) + extern (C) int printf(const char*,...); +}+/ +//version = LOG; -//version = LOG; +version (TARGET_OSX) +{ + version = TARGET_FOS; // FreeBSD, OS X, Solaris +} +version (TARGET_FREEBSD) +{ + version = TARGET_FOS; // FreeBSD, OS X, Solaris +} +version (TARGET_SOLARIS) +{ + version = TARGET_FOS; // FreeBSD, OS X, Solaris +} version (POSIX) { + import dmd.Array; import dmd.Gnuc; + import core.sys.posix.stdlib; + version (TARGET_FOS) import core.stdc.limits; } enum MAX_PATH = 256; /// @@ -140,20 +160,20 @@ } filename = FileName.replaceName(argv0, inifile); if (!FileName.exists(filename)) { -version (XXX) { /// linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 - version (XXX) { /// __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 // This fix by Thomas Kuehne +version (POSIX) { /// linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 + version (POSIX) { /// __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 // This fix by Thomas Kuehne /* argv0 might be a symbolic link, * so try again looking past it to the real path */ - version (XXX) {/// #if __APPLE__ || __FreeBSD__ || __sun&&__SVR4 + version (TARGET_FOS) {/// #if __APPLE__ || __FreeBSD__ || __sun&&__SVR4 char resolved_name[PATH_MAX + 1]; - char* real_argv0 = realpath(argv0, resolved_name); + char* real_argv0 = realpath(toStringz(argv0), resolved_name); } else { - char* real_argv0 = realpath(argv0, null); + char* real_argv0 = realpath(toStringz(argv0), null); } //printf("argv0 = %s, real_argv0 = %p\n", argv0, real_argv0); if (real_argv0) { - filename = FileName.replaceName(real_argv0, inifile); + filename = FileName.replaceName(fromStringz(real_argv0), inifile); version (linux) { ///free(real_argv0); } @@ -166,11 +186,11 @@ } if (true) { // Search PATH for argv0 - const(char)* p = getenv("PATH"); + const(char)* p = toStringz(getenv("PATH")); version (LOG) { writef("\tPATH='%s'\n", p); } - Array paths = FileName.splitPath(p); + auto paths = FileName.splitPath(fromStringz(p)); filename = FileName.searchPath(paths, argv0, 0); if (!filename) { goto Letc; // argv0 not found on path