| <!doctype html> |
| <html lang="en"> |
| <head> |
| <title>Code coverage report for tar/lib/read-entry.js</title> |
| <meta charset="utf-8" /> |
| <link rel="stylesheet" href="../../prettify.css" /> |
| <link rel="stylesheet" href="../../base.css" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <style type='text/css'> |
| .coverage-summary .sorter { |
| background-image: url(../../sort-arrow-sprite.png); |
| } |
| </style> |
| </head> |
| <body> |
| <div class='wrapper'> |
| <div class='pad1'> |
| <h1> |
| <a href="../../index.html">All files</a> / <a href="index.html">tar/lib</a> read-entry.js |
| </h1> |
| <div class='clearfix'> |
| <div class='fl pad1y space-right2'> |
| <span class="strong">100% </span> |
| <span class="quiet">Statements</span> |
| <span class='fraction'>53/53</span> |
| </div> |
| <div class='fl pad1y space-right2'> |
| <span class="strong">100% </span> |
| <span class="quiet">Branches</span> |
| <span class='fraction'>36/36</span> |
| </div> |
| <div class='fl pad1y space-right2'> |
| <span class="strong">100% </span> |
| <span class="quiet">Functions</span> |
| <span class='fraction'>3/3</span> |
| </div> |
| <div class='fl pad1y space-right2'> |
| <span class="strong">100% </span> |
| <span class="quiet">Lines</span> |
| <span class='fraction'>51/51</span> |
| </div> |
| </div> |
| </div> |
| <div class='status-line high'></div> |
| <pre><table class="coverage"> |
| <tr><td class="line-count quiet">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 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 |
| 42 |
| 43 |
| 44 |
| 45 |
| 46 |
| 47 |
| 48 |
| 49 |
| 50 |
| 51 |
| 52 |
| 53 |
| 54 |
| 55 |
| 56 |
| 57 |
| 58 |
| 59 |
| 60 |
| 61 |
| 62 |
| 63 |
| 64 |
| 65 |
| 66 |
| 67 |
| 68 |
| 69 |
| 70 |
| 71 |
| 72 |
| 73 |
| 74 |
| 75 |
| 76 |
| 77 |
| 78 |
| 79 |
| 80 |
| 81 |
| 82 |
| 83 |
| 84 |
| 85 |
| 86 |
| 87 |
| 88 |
| 89 |
| 90 |
| 91 |
| 92 |
| 93 |
| 94 |
| 95</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">11x</span> |
| <span class="cline-any cline-yes">11x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">11x</span> |
| <span class="cline-any cline-yes">11x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">3241x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">760x</span> |
| <span class="cline-any cline-yes">760x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">3x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">3720x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-yes">4004x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">2222x</span> |
| <span class="cline-any cline-yes">2222x</span> |
| <span class="cline-any cline-yes">2x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">2220x</span> |
| <span class="cline-any cline-yes">2220x</span> |
| <span class="cline-any cline-yes">2220x</span> |
| <span class="cline-any cline-yes">2220x</span> |
| <span class="cline-any cline-yes">2220x</span> |
| <span class="cline-any cline-yes">673x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1547x</span> |
| <span class="cline-any cline-yes">132x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">1415x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">457x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">6384x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-yes">2657x</span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span> |
| <span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-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() |
| 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] |
| } |
| } |
| } |
| </pre></td></tr> |
| </table></pre> |
| <div class='push'></div><!-- for sticky footer --> |
| </div><!-- /wrapper --> |
| <div class='footer quiet pad2 space-top1 center small'> |
| Code coverage |
| generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Mon Nov 20 2017 16:00:38 GMT-0800 (PST) |
| </div> |
| </div> |
| <script src="../../prettify.js"></script> |
| <script> |
| window.onload = function () { |
| if (typeof prettyPrint === 'function') { |
| prettyPrint(); |
| } |
| }; |
| </script> |
| <script src="../../sorter.js"></script> |
| </body> |
| </html> |