|
|
@ -1527,21 +1527,16 @@ fs.realpathSync = function realpathSync(p, options) { |
|
|
|
// the partial path scanned in the previous round, with slash
|
|
|
|
var previous; |
|
|
|
|
|
|
|
start(); |
|
|
|
// Skip over roots
|
|
|
|
var m = splitRootRe.exec(p); |
|
|
|
pos = m[0].length; |
|
|
|
current = m[0]; |
|
|
|
base = m[0]; |
|
|
|
|
|
|
|
function start() { |
|
|
|
// Skip over roots
|
|
|
|
var m = splitRootRe.exec(p); |
|
|
|
pos = m[0].length; |
|
|
|
current = m[0]; |
|
|
|
base = m[0]; |
|
|
|
previous = ''; |
|
|
|
|
|
|
|
// On windows, check that the root exists. On unix there is no need.
|
|
|
|
if (isWindows && !knownHard[base]) { |
|
|
|
fs.lstatSync(base); |
|
|
|
knownHard[base] = true; |
|
|
|
} |
|
|
|
// On windows, check that the root exists. On unix there is no need.
|
|
|
|
if (isWindows && !knownHard[base]) { |
|
|
|
fs.lstatSync(base); |
|
|
|
knownHard[base] = true; |
|
|
|
} |
|
|
|
|
|
|
|
// walk down the path, swapping out linked pathparts for their real
|
|
|
@ -1595,7 +1590,18 @@ fs.realpathSync = function realpathSync(p, options) { |
|
|
|
|
|
|
|
// resolve the link, then start over
|
|
|
|
p = pathModule.resolve(resolvedLink, p.slice(pos)); |
|
|
|
start(); |
|
|
|
|
|
|
|
// Skip over roots
|
|
|
|
m = splitRootRe.exec(p); |
|
|
|
pos = m[0].length; |
|
|
|
current = m[0]; |
|
|
|
base = m[0]; |
|
|
|
|
|
|
|
// On windows, check that the root exists. On unix there is no need.
|
|
|
|
if (isWindows && !knownHard[base]) { |
|
|
|
fs.lstatSync(base); |
|
|
|
knownHard[base] = true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (cache) cache.set(original, p); |
|
|
@ -1626,26 +1632,21 @@ fs.realpath = function realpath(p, options, callback) { |
|
|
|
// the partial path scanned in the previous round, with slash
|
|
|
|
var previous; |
|
|
|
|
|
|
|
start(); |
|
|
|
|
|
|
|
function start() { |
|
|
|
// Skip over roots
|
|
|
|
var m = splitRootRe.exec(p); |
|
|
|
pos = m[0].length; |
|
|
|
current = m[0]; |
|
|
|
base = m[0]; |
|
|
|
previous = ''; |
|
|
|
var m = splitRootRe.exec(p); |
|
|
|
pos = m[0].length; |
|
|
|
current = m[0]; |
|
|
|
base = m[0]; |
|
|
|
previous = ''; |
|
|
|
|
|
|
|
// On windows, check that the root exists. On unix there is no need.
|
|
|
|
if (isWindows && !knownHard[base]) { |
|
|
|
fs.lstat(base, function(err) { |
|
|
|
if (err) return callback(err); |
|
|
|
knownHard[base] = true; |
|
|
|
LOOP(); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
process.nextTick(LOOP); |
|
|
|
} |
|
|
|
// On windows, check that the root exists. On unix there is no need.
|
|
|
|
if (isWindows && !knownHard[base]) { |
|
|
|
fs.lstat(base, function(err) { |
|
|
|
if (err) return callback(err); |
|
|
|
knownHard[base] = true; |
|
|
|
LOOP(); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
process.nextTick(LOOP); |
|
|
|
} |
|
|
|
|
|
|
|
// walk down the path, swapping out linked pathparts for their real
|
|
|
@ -1711,7 +1712,22 @@ fs.realpath = function realpath(p, options, callback) { |
|
|
|
function gotResolvedLink(resolvedLink) { |
|
|
|
// resolve the link, then start over
|
|
|
|
p = pathModule.resolve(resolvedLink, p.slice(pos)); |
|
|
|
start(); |
|
|
|
var m = splitRootRe.exec(p); |
|
|
|
pos = m[0].length; |
|
|
|
current = m[0]; |
|
|
|
base = m[0]; |
|
|
|
previous = ''; |
|
|
|
|
|
|
|
// On windows, check that the root exists. On unix there is no need.
|
|
|
|
if (isWindows && !knownHard[base]) { |
|
|
|
fs.lstat(base, function(err) { |
|
|
|
if (err) return callback(err); |
|
|
|
knownHard[base] = true; |
|
|
|
LOOP(); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
process.nextTick(LOOP); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|