summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/fstream/lib/link-reader.js
diff options
context:
space:
mode:
authorRebecca Turner <me@re-becca.org>2018-04-20 18:26:37 -0700
committerRebecca Turner <me@re-becca.org>2018-05-24 23:24:45 -0700
commit468ab4519e1b92473acefb22801497a1af6aebae (patch)
treebdac1d062cd4b094bde3a21147bab5d82c792ece /deps/npm/node_modules/fstream/lib/link-reader.js
parentac8226115e2192a7a46ba07789fa5136f74223e1 (diff)
downloadandroid-node-v8-468ab4519e1b92473acefb22801497a1af6aebae.tar.gz
android-node-v8-468ab4519e1b92473acefb22801497a1af6aebae.tar.bz2
android-node-v8-468ab4519e1b92473acefb22801497a1af6aebae.zip
deps: upgrade npm to 6.1.0
PR-URL: https://github.com/nodejs/node/pull/20190 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Diffstat (limited to 'deps/npm/node_modules/fstream/lib/link-reader.js')
-rw-r--r--deps/npm/node_modules/fstream/lib/link-reader.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/deps/npm/node_modules/fstream/lib/link-reader.js b/deps/npm/node_modules/fstream/lib/link-reader.js
new file mode 100644
index 0000000000..fb4cc67a98
--- /dev/null
+++ b/deps/npm/node_modules/fstream/lib/link-reader.js
@@ -0,0 +1,53 @@
+// Basically just a wrapper around an fs.readlink
+//
+// XXX: Enhance this to support the Link type, by keeping
+// a lookup table of {<dev+inode>:<path>}, so that hardlinks
+// can be preserved in tarballs.
+
+module.exports = LinkReader
+
+var fs = require('graceful-fs')
+var inherits = require('inherits')
+var Reader = require('./reader.js')
+
+inherits(LinkReader, Reader)
+
+function LinkReader (props) {
+ var self = this
+ if (!(self instanceof LinkReader)) {
+ throw new Error('LinkReader must be called as constructor.')
+ }
+
+ if (!((props.type === 'Link' && props.Link) ||
+ (props.type === 'SymbolicLink' && props.SymbolicLink))) {
+ throw new Error('Non-link type ' + props.type)
+ }
+
+ Reader.call(self, props)
+}
+
+// When piping a LinkReader into a LinkWriter, we have to
+// already have the linkpath property set, so that has to
+// happen *before* the "ready" event, which means we need to
+// override the _stat method.
+LinkReader.prototype._stat = function (currentStat) {
+ var self = this
+ fs.readlink(self._path, function (er, linkpath) {
+ if (er) return self.error(er)
+ self.linkpath = self.props.linkpath = linkpath
+ self.emit('linkpath', linkpath)
+ Reader.prototype._stat.call(self, currentStat)
+ })
+}
+
+LinkReader.prototype._read = function () {
+ var self = this
+ if (self._paused) return
+ // basically just a no-op, since we got all the info we need
+ // from the _stat method
+ if (!self._ended) {
+ self.emit('end')
+ self.emit('close')
+ self._ended = true
+ }
+}