diff options
author | Ruben Bridgewater <ruben@bridgewater.de> | 2019-03-26 08:48:17 +0300 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2019-03-29 15:11:21 +0300 |
commit | 8df9fdcc3990c8211014a9217935d7f4fb400195 (patch) | |
tree | 18411610b96402f9244980cd79a2fa1322c14e5e /lib | |
parent | 520b3e63ea2518bd2b356fe2f38be99b2ab75fdb (diff) |
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>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/path.js | 51 |
1 files changed, 14 insertions, 37 deletions
diff --git a/lib/path.js b/lib/path.js index 9ac877eabca..a41787dd66f 100644 --- a/lib/path.js +++ b/lib/path.js @@ -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) { |