Blame view

node_modules/tar/lib/buffer-entry.js 804 Bytes
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  // just like the Entry class, but it buffers the contents
  //
  // XXX It would be good to set a maximum BufferEntry filesize,
  // since it eats up memory.  In normal operation,
  // these are only for long filenames or link names, which are
  // rarely very big.
  
  module.exports = BufferEntry
  
  var inherits = require("inherits")
    , Entry = require("./entry.js")
  
  function BufferEntry () {
    Entry.apply(this, arguments)
    this._buffer = new Buffer(this.props.size)
    this._offset = 0
    this.body = ""
    this.on("end", function () {
      this.body = this._buffer.toString().slice(0, -1)
    })
  }
  
  inherits(BufferEntry, Entry)
  
  // collect the bytes as they come in.
  BufferEntry.prototype.write = function (c) {
    c.copy(this._buffer, this._offset)
    this._offset += c.length
    Entry.prototype.write.call(this, c)
  }