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