Skip to content
Permalink
Browse files

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: #6266
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
  • Loading branch information...
jasnell committed Apr 19, 2016
1 parent 7f11634 commit 2e974cdd8ce1829d50b8e8713633e4510b2d3e76
Showing with 37 additions and 0 deletions.
  1. +1 −0 node.gyp
  2. +36 −0 src/node_config.cc
@@ -130,6 +130,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',
@@ -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<Object> target,
Local<Value> unused,
Local<Context> context) {
// Environment* env = Environment::GetCurrent(context);

This comment has been minimized.

Copy link
@trevnorris

trevnorris Apr 26, 2016

Contributor

Accidentally left dead code here? Actually, why wasn't this squashed with the other?

This comment has been minimized.

Copy link
@jasnell

jasnell Apr 26, 2016

Author Member

this commit is going to get backported to v5 and v4 where the other flags aren't relevant. The comment could have been removed but landing this separate was intentional to make backporting easier

}

} // namespace node

NODE_MODULE_CONTEXT_AWARE_BUILTIN(config, node::InitConfig)

0 comments on commit 2e974cd

Please sign in to comment.
You can’t perform that action at this time.