summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/tar/old/tar.js
blob: f70c081d2770522ee3184f9e7ebdad8616471efa (plain)
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
// field names that every tar file must have.
// header is padded to 512 bytes.
var f = 0
  , fields = {}
  , NAME = fields.NAME = f++
  , MODE = fields.MODE = f++
  , UID = fields.UID = f++
  , GID = fields.GID = f++
  , SIZE = fields.SIZE = f++
  , MTIME = fields.MTIME = f++
  , CKSUM = fields.CKSUM = f++
  , TYPE = fields.TYPE = f++
  , LINKNAME = fields.LINKNAME = f++
  , headerSize = 512
  , fieldSize = []

fieldSize[NAME] = 100
fieldSize[MODE] = 8
fieldSize[UID] = 8
fieldSize[GID] = 8
fieldSize[SIZE] = 12
fieldSize[MTIME] = 12
fieldSize[CKSUM] = 8
fieldSize[TYPE] = 1
fieldSize[LINKNAME] = 100

// "ustar\0" may introduce another bunch of headers.
// these are optional, and will be nulled out if not present.
var ustar = new Buffer(6)
ustar.asciiWrite("ustar\0")

var USTAR = fields.USTAR = f++
  , USTARVER = fields.USTARVER = f++
  , UNAME = fields.UNAME = f++
  , GNAME = fields.GNAME = f++
  , DEVMAJ = fields.DEVMAJ = f++
  , DEVMIN = fields.DEVMIN = f++
  , PREFIX = fields.PREFIX = f++
// terminate fields.
fields[f] = null

fieldSize[USTAR] = 6
fieldSize[USTARVER] = 2
fieldSize[UNAME] = 32
fieldSize[GNAME] = 32
fieldSize[DEVMAJ] = 8
fieldSize[DEVMIN] = 8
fieldSize[PREFIX] = 155

var fieldEnds = {}
  , fieldOffs = {}
  , fe = 0
for (var i = 0; i < f; i ++) {
  fieldOffs[i] = fe
  fieldEnds[i] = (fe += fieldSize[i])
}

// build a translation table of field names.
Object.keys(fields).forEach(function (f) {
  fields[fields[f]] = f
})

exports.ustar = ustar
exports.fields = fields
exports.fieldSize = fieldSize
exports.fieldOffs = fieldOffs
exports.fieldEnds = fieldEnds
exports.headerSize = headerSize

var Parser = exports.Parser = require("./parser")
exports.createParser = Parser.create

var Generator = exports.Generator = require("./generator")
exports.createGenerator = Generator.create