Permalink
Browse files

src: remove internalBinding('config').warningFile

Instead use `require('internal/options')` lazily. Also refactor the
call site a bit so that the option is queried only once since it's
synchronous anyway.

PR-URL: #24959
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
  • Loading branch information...
joyeecheung authored and MylesBorins committed Dec 11, 2018
1 parent 0cde1a4 commit 7f34c768da37f697222e98688b43e235a7e20842
Showing with 13 additions and 10 deletions.
  1. +13 −5 lib/internal/process/warning.js
  2. +0 −5 src/node_config.cc
@@ -1,11 +1,18 @@
'use strict';

const config = internalBinding('config');
const prefix = `(${process.release.name}:${process.pid}) `;
const { ERR_INVALID_ARG_TYPE } = require('internal/errors').codes;

exports.setup = setupProcessWarnings;

let options;
function lazyOption(name) {
if (!options) {
options = require('internal/options');
}
return options.getOptionValue(name);
}

var cachedFd;
var acquiringFd = false;
function nop() {}
@@ -51,11 +58,11 @@ function onAcquired(message) {
};
}

function acquireFd(cb) {
function acquireFd(warningFile, cb) {
if (cachedFd === undefined && !acquiringFd) {
acquiringFd = true;
if (fs === null) fs = require('fs');
fs.open(config.warningFile, 'a', onOpen(cb));
fs.open(warningFile, 'a', onOpen(cb));
} else if (cachedFd !== undefined && !acquiringFd) {
cb(null, cachedFd);
} else {
@@ -64,8 +71,9 @@ function acquireFd(cb) {
}

function output(message) {
if (typeof config.warningFile === 'string') {
acquireFd(onAcquired(message));
const warningFile = lazyOption('--redirect-warnings');
if (warningFile) {
acquireFd(warningFile, onAcquired(message));
return;
}
writeOut(message);
@@ -90,11 +90,6 @@ static void Initialize(Local<Object> target,
"bits",
Number::New(env->isolate(), 8 * sizeof(intptr_t)));

const std::string& warning_file = env->options()->redirect_warnings;
if (!warning_file.empty()) {
READONLY_STRING_PROPERTY(target, "warningFile", warning_file);
}

Local<Object> debug_options_obj = Object::New(isolate);
READONLY_PROPERTY(target, "debugOptions", debug_options_obj);

0 comments on commit 7f34c76

Please sign in to comment.