path: remove dead code

A couple of code parts could not be reached due to resolving the path
in the beginning. That "normalizes" the path in a way that some code
branches became obsolete.

PR-URL: https://github.com/nodejs/node/pull/26916
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
This commit is contained in:
Ruben Bridgewater 2019-03-26 06:48:17 +01:00
parent 520b3e63ea
commit 8df9fdcc39
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762

View File

@ -1054,29 +1054,18 @@ const posix = {
if (from === to)
return '';
// Trim leading forward slashes.
from = posix.resolve(from);
to = posix.resolve(to);
if (from === to)
return '';
// Trim any leading backslashes
let fromStart = 1;
while (fromStart < from.length &&
from.charCodeAt(fromStart) === CHAR_FORWARD_SLASH) {
fromStart++;
}
const fromStart = 1;
const fromEnd = from.length;
const fromLen = (fromEnd - fromStart);
// Trim any leading backslashes
let toStart = 1;
while (toStart < to.length &&
to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) {
toStart++;
}
const toEnd = to.length;
const toLen = (toEnd - toStart);
const fromLen = fromEnd - fromStart;
const toStart = 1;
const toLen = to.length - toStart;
// Compare paths to find the longest common path from root
const length = (fromLen < toLen ? fromLen : toLen);
@ -1101,38 +1090,26 @@ const posix = {
// For example: from='/'; to='/foo'
return to.slice(toStart + i);
}
} else if (fromLen > length) {
if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {
// We get here if `to` is the exact base path for `from`.
// For example: from='/foo/bar/baz'; to='/foo/bar'
lastCommonSep = i;
} else if (i === 0) {
// We get here if `to` is the root.
// For example: from='/foo'; to='/'
lastCommonSep = 0;
}
} else if (fromLen > length &&
from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {
// We get here if `to` is the exact base path for `from`.
// For example: from='/foo/bar/baz'; to='/foo/bar'
lastCommonSep = i;
}
}
var out = '';
let out = '';
// Generate the relative path based on the path difference between `to`
// and `from`
// and `from`.
for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {
if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {
out += out.length === 0 ? '..' : '/..';
}
}
toStart += lastCommonSep;
// Lastly, append the rest of the destination (`to`) path that comes after
// the common path parts
if (out.length > 0)
return `${out}${to.slice(toStart)}`;
if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH)
++toStart;
return to.slice(toStart);
// the common path parts.
return `${out}${to.slice(toStart + lastCommonSep)}`;
},
toNamespacedPath(path) {