From b9136c0c036a1058b6c9ed860f93aec2f871af2e Mon Sep 17 00:00:00 2001 From: James M Snell Date: Mon, 18 Apr 2016 21:02:18 -0700 Subject: [PATCH] src: add process.binding('config') It turns out that userland likes to override process.config with their own stuff. If we want to be able to depend on it in any way, we need our own internal mechanism. This adds a new private process.binding('config') that is intended to serve as a container for internal flags and compile time configs that need to be passed on to the JS layer. PR-URL: https://github.com/nodejs/node/pull/6266 Reviewed-By: Ben Noordhuis --- node.gyp | 1 + src/node_config.cc | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/node_config.cc diff --git a/node.gyp b/node.gyp index 240922d619337f..5058682bff8f8e 100644 --- a/node.gyp +++ b/node.gyp @@ -124,6 +124,7 @@ 'src/js_stream.cc', 'src/node.cc', 'src/node_buffer.cc', + 'src/node_config.cc', 'src/node_constants.cc', 'src/node_contextify.cc', 'src/node_file.cc', diff --git a/src/node_config.cc b/src/node_config.cc new file mode 100644 index 00000000000000..e50002bc64c202 --- /dev/null +++ b/src/node_config.cc @@ -0,0 +1,36 @@ +#include "node.h" +#include "env.h" +#include "env-inl.h" +#include "util.h" +#include "util-inl.h" + + +namespace node { + +using v8::Context; +using v8::Local; +using v8::Object; +using v8::Value; +using v8::ReadOnly; + +// The config binding is used to provide an internal view of compile or runtime +// config options that are required internally by lib/*.js code. This is an +// alternative to dropping additional properties onto the process object as +// has been the practice previously in node.cc. + +#define READONLY_BOOLEAN_PROPERTY(str) \ + do { \ + target->DefineOwnProperty(env->context(), \ + OneByteString(env->isolate(), str), \ + True(env->isolate()), ReadOnly).FromJust(); \ + } while (0) + +void InitConfig(Local target, + Local unused, + Local context) { + // Environment* env = Environment::GetCurrent(context); +} + +} // namespace node + +NODE_MODULE_CONTEXT_AWARE_BUILTIN(config, node::InitConfig)