diff options
Diffstat (limited to 'deps/npm/lib/utils/exec.js')
-rw-r--r-- | deps/npm/lib/utils/exec.js | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/deps/npm/lib/utils/exec.js b/deps/npm/lib/utils/exec.js deleted file mode 100644 index 360367cbf..000000000 --- a/deps/npm/lib/utils/exec.js +++ /dev/null @@ -1,85 +0,0 @@ -module.exports = exec -exec.spawn = spawn - -var log = require("npmlog") - , child_process = require("child_process") - , util = require("util") - , npm = require("../npm.js") - , myUID = process.getuid ? process.getuid() : null - , myGID = process.getgid ? process.getgid() : null - , isRoot = process.getuid && myUID === 0 - , constants = require("constants") - , uidNumber = require("uid-number") - , once = require("once") - -function exec (cmd, args, env, takeOver, cwd, uid, gid, cb) { - if (typeof cb !== "function") cb = gid, gid = null - if (typeof cb !== "function") cb = uid, uid = null - if (typeof cb !== "function") cb = cwd, cwd = null - if (typeof cb !== "function") cb = takeOver, takeOver = true - if (typeof cb !== "function") cb = env, env = process.env - gid = gid == null ? myGID : gid - uid = uid == null ? myUID : uid - if (!isRoot) { - if (npm.config.get("unsafe-perm")) { - uid = myUID - gid = myGID - } else if (uid !== myUID || gid !== myGID) { - var e = new Error("EPERM: setuid() operation not permitted") - e.errno = constants.EPERM - return cb(e) - } - } - if (uid !== myUID) { - log.verbose("set uid", "from=%s to=%s", myUID, uid) - } - - if (uid && gid && (isNaN(uid) || isNaN(gid))) { - // get the numeric values - return uidNumber(uid, gid, function (er, uid, gid) { - if (er) return cb(er) - exec(cmd, args, env, takeOver, cwd, uid, gid, cb) - }) - } - - log.silly("exec", cmd+" "+args.map(JSON.stringify).join(" ")) - var stdout = "" - , stderr = "" - , cp = spawn(cmd, args, env, takeOver, cwd, uid, gid) - cb = once(cb) - cp.on("error", cb) - cp.stdout && cp.stdout.on("data", function (chunk) { - if (chunk) stdout += chunk - }) - cp.stderr && cp.stderr.on("data", function (chunk) { - if (chunk) stderr += chunk - }) - cp.on("close", function (code) { - var er = null - if (code) er = new Error("`"+cmd - +(args.length ? " " - + args.map(JSON.stringify).join(" ") - : "") - +"` failed with "+code) - cb(er, code, stdout, stderr) - }) - return cp -} - - -function spawn (c, a, env, takeOver, cwd, uid, gid) { - var fds = [ 0, 1, 2 ] - , opts = { customFds : takeOver ? fds : [-1,-1,-1] - , env : env || process.env - , cwd : cwd || null } - , cp - - if (uid && !isNaN(uid)) opts.uid = +uid - if (gid && !isNaN(gid)) opts.gid = +gid - - var name = c +" "+ a.map(JSON.stringify).join(" ") - log.silly([c, a, opts.cwd], "spawning") - cp = child_process.spawn(c, a, opts) - cp.name = name - return cp -} |