X7ROOT File Manager
Current Path:
/usr/lib/node_modules/npm/node_modules/tar/lib
usr
/
lib
/
node_modules
/
npm
/
node_modules
/
tar
/
lib
/
ðŸ“
..
📄
buffer.js
(283 B)
📄
create.js
(2.32 KB)
📄
extract.js
(2.76 KB)
📄
header.js
(8.83 KB)
📄
high-level-opt.js
(772 B)
📄
large-numbers.js
(2.16 KB)
📄
list.js
(3.08 KB)
📄
mkdir.js
(5.06 KB)
📄
mode-fix.js
(277 B)
📄
pack.js
(9.39 KB)
📄
parse.js
(11.86 KB)
📄
pax.js
(3.97 KB)
📄
read-entry.js
(2.61 KB)
📄
replace.js
(5.36 KB)
📄
types.js
(1.07 KB)
📄
unpack.js
(16.46 KB)
📄
update.js
(852 B)
📄
warn-mixin.js
(309 B)
📄
winchars.js
(533 B)
📄
write-entry.js
(11.77 KB)
Editing: read-entry.js
'use strict' const types = require('./types.js') const MiniPass = require('minipass') const SLURP = Symbol('slurp') module.exports = class ReadEntry extends MiniPass { constructor (header, ex, gex) { super() // read entries always start life paused. this is to avoid the // situation where Minipass's auto-ending empty streams results // in an entry ending before we're ready for it. this.pause() this.extended = ex this.globalExtended = gex this.header = header this.startBlockSize = 512 * Math.ceil(header.size / 512) this.blockRemain = this.startBlockSize this.remain = header.size this.type = header.type this.meta = false this.ignore = false switch (this.type) { case 'File': case 'OldFile': case 'Link': case 'SymbolicLink': case 'CharacterDevice': case 'BlockDevice': case 'Directory': case 'FIFO': case 'ContiguousFile': case 'GNUDumpDir': break case 'NextFileHasLongLinkpath': case 'NextFileHasLongPath': case 'OldGnuLongPath': case 'GlobalExtendedHeader': case 'ExtendedHeader': case 'OldExtendedHeader': this.meta = true break // NOTE: gnutar and bsdtar treat unrecognized types as 'File' // it may be worth doing the same, but with a warning. default: this.ignore = true } this.path = header.path this.mode = header.mode if (this.mode) this.mode = this.mode & 0o7777 this.uid = header.uid this.gid = header.gid this.uname = header.uname this.gname = header.gname this.size = header.size this.mtime = header.mtime this.atime = header.atime this.ctime = header.ctime this.linkpath = header.linkpath this.uname = header.uname this.gname = header.gname if (ex) this[SLURP](ex) if (gex) this[SLURP](gex, true) } write (data) { const writeLen = data.length if (writeLen > this.blockRemain) throw new Error('writing more to entry than is appropriate') const r = this.remain const br = this.blockRemain this.remain = Math.max(0, r - writeLen) this.blockRemain = Math.max(0, br - writeLen) if (this.ignore) return true if (r >= writeLen) return super.write(data) // r < writeLen return super.write(data.slice(0, r)) } [SLURP] (ex, global) { for (let k in ex) { // we slurp in everything except for the path attribute in // a global extended header, because that's weird. if (ex[k] !== null && ex[k] !== undefined && !(global && k === 'path')) this[k] = ex[k] } } }
Upload File
Create Folder