diff --git a/posix.mak b/posix.mak index c0107ed2c0f..93398d77258 100644 --- a/posix.mak +++ b/posix.mak @@ -224,7 +224,7 @@ EXTRA_MODULES_INTERNAL := $(addprefix std/, \ cstring digest/sha_SSSE3 \ $(addprefix math/, biguintcore biguintnoasm biguintx86 \ errorfunction gammafunction ) \ - processinit scopebuffer test/dummyrange \ + scopebuffer test/dummyrange \ $(addprefix unicode_, comp decomp grapheme norm tables) \ ) \ ) diff --git a/std/internal/processinit.d b/std/internal/processinit.d deleted file mode 100644 index df241089aa0..00000000000 --- a/std/internal/processinit.d +++ /dev/null @@ -1,22 +0,0 @@ -// Written in the D programming language. - -/++ - The only purpose of this module is to do the static construction for - std.process in order to eliminate cyclic construction errors. - - Copyright: Copyright 2011 - - License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). - Authors: Jonathan M Davis and Kato Shoichi - Source: $(PHOBOSSRC std/internal/_processinit.d) - +/ -module std.internal.processinit; - -version(OSX) -{ - extern(C) void std_process_shared_static_this(); - - shared static this() - { - std_process_shared_static_this(); - } -} diff --git a/std/process.d b/std/process.d index 0569e9dca51..93627da1e13 100644 --- a/std/process.d +++ b/std/process.d @@ -99,7 +99,6 @@ version (Windows) } import std.internal.cstring; -import std.internal.processinit; import std.range.primitives; import std.stdio; @@ -112,45 +111,47 @@ version (Win32) version (CRuntime_DigitalMars) version = DMC_RUNTIME; // Some of the following should be moved to druntime. private { - -// Microsoft Visual C Runtime (MSVCRT) declarations. -version (Windows) -{ - version (DMC_RUNTIME) { } else + // Microsoft Visual C Runtime (MSVCRT) declarations. + version (Windows) { - import core.stdc.stdint; - enum + version (DMC_RUNTIME) { } else { - STDIN_FILENO = 0, - STDOUT_FILENO = 1, - STDERR_FILENO = 2, + import core.stdc.stdint; + enum + { + STDIN_FILENO = 0, + STDOUT_FILENO = 1, + STDERR_FILENO = 2, + } } } -} -// POSIX API declarations. -version (Posix) -{ - version (OSX) - { - extern(C) char*** _NSGetEnviron() nothrow; - private __gshared const(char**)* environPtr; - extern(C) void std_process_shared_static_this() { environPtr = _NSGetEnviron(); } - const(char**) environ() @property @trusted nothrow { return *environPtr; } - } - else + // POSIX API declarations. + version (Posix) { - // Made available by the C runtime: - extern(C) extern __gshared const char** environ; - } + version (OSX) + { + extern(C) char*** _NSGetEnviron() nothrow; + const(char**) getEnvironPtr() @trusted + { + return *_NSGetEnviron; + } + } + else + { + // Made available by the C runtime: + extern(C) extern __gshared const char** environ; + const(char**) getEnvironPtr() @trusted + { + return environ; + } + } - @system unittest - { - new Thread({assert(environ !is null);}).start(); + @system unittest + { + new Thread({assert(getEnvironPtr !is null);}).start(); + } } -} - - } // private @@ -703,6 +704,7 @@ private const(char*)* createEnv(const string[string] childEnv, { // Determine the number of strings in the parent's environment. int parentEnvLength = 0; + auto environ = getEnvironPtr; if (mergeWithParentEnv) { if (childEnv.length == 0) return environ; @@ -737,6 +739,7 @@ version (Posix) @system unittest auto e2 = createEnv(null, true); assert(e2 != null); int i = 0; + auto environ = getEnvironPtr; for (; environ[i] != null; ++i) { assert(e2[i] != null); @@ -3333,6 +3336,7 @@ static: string[string] aa; version (Posix) { + auto environ = getEnvironPtr; for (int i=0; environ[i] != null; ++i) { import std.string : indexOf; @@ -3902,4 +3906,3 @@ else version (Posix) } else static assert(0, "os not supported"); - diff --git a/win32.mak b/win32.mak index 854ed9a6a6d..db2108b3f3b 100644 --- a/win32.mak +++ b/win32.mak @@ -270,7 +270,6 @@ SRC_STD_C_FREEBSD= \ SRC_STD_INTERNAL= \ std\internal\cstring.d \ - std\internal\processinit.d \ std\internal\unicode_tables.d \ std\internal\unicode_comp.d \ std\internal\unicode_decomp.d \ diff --git a/win64.mak b/win64.mak index 9e59883561d..dc5ec92a9c2 100644 --- a/win64.mak +++ b/win64.mak @@ -295,7 +295,6 @@ SRC_STD_C_FREEBSD= \ SRC_STD_INTERNAL= \ std\internal\cstring.d \ - std\internal\processinit.d \ std\internal\unicode_tables.d \ std\internal\unicode_comp.d \ std\internal\unicode_decomp.d \