summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2019-03-26 06:48:17 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2019-03-29 13:11:21 +0100
commit8df9fdcc3990c8211014a9217935d7f4fb400195 (patch)
tree18411610b96402f9244980cd79a2fa1322c14e5e /lib
parent520b3e63ea2518bd2b356fe2f38be99b2ab75fdb (diff)
downloadandroid-node-v8-8df9fdcc3990c8211014a9217935d7f4fb400195.tar.gz
android-node-v8-8df9fdcc3990c8211014a9217935d7f4fb400195.tar.bz2
android-node-v8-8df9fdcc3990c8211014a9217935d7f4fb400195.zip
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.js51
1 files changed, 14 insertions, 37 deletions
diff --git a/lib/path.js b/lib/path.js
index 9ac877eabc..a41787dd66 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) {