| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605 |
- <!doctype html>
- <html lang="en">
- <head>
- <title>Code coverage report for tar/lib/unpack.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> unpack.js
- </h1>
- <div class='clearfix'>
- <div class='fl pad1y space-right2'>
- <span class="strong">100% </span>
- <span class="quiet">Statements</span>
- <span class='fraction'>254/254</span>
- </div>
- <div class='fl pad1y space-right2'>
- <span class="strong">100% </span>
- <span class="quiet">Branches</span>
- <span class='fraction'>194/194</span>
- </div>
- <div class='fl pad1y space-right2'>
- <span class="strong">100% </span>
- <span class="quiet">Functions</span>
- <span class='fraction'>44/44</span>
- </div>
- <div class='fl pad1y space-right2'>
- <span class="strong">100% </span>
- <span class="quiet">Lines</span>
- <span class='fraction'>247/247</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
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514</td><td class="line-coverage quiet"><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-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">3x</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">3x</span>
- <span class="cline-any cline-yes">60x</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">134x</span>
- <span class="cline-any cline-yes">4x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">134x</span>
- <span class="cline-any cline-yes">109x</span>
- <span class="cline-any cline-yes">109x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">134x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">134x</span>
- <span class="cline-any cline-yes">134x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">134x</span>
- <span class="cline-any cline-yes">134x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">134x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">134x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">9x</span>
- <span class="cline-any cline-yes">2x</span>
- <span class="cline-any cline-yes">7x</span>
- <span class="cline-any cline-yes">1x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">125x</span>
- <span class="cline-any cline-yes">125x</span>
- <span class="cline-any cline-yes">125x</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">131x</span>
- <span class="cline-any cline-yes">119x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">12x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">131x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">131x</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">131x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">131x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">131x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">131x</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">131x</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">131x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">131x</span>
- <span class="cline-any cline-yes">131x</span>
- <span class="cline-any cline-yes">131x</span>
- <span class="cline-any cline-yes">131x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">131x</span>
- <span class="cline-any cline-yes">131x</span>
- <span class="cline-any cline-yes">571x</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">473x</span>
- <span class="cline-any cline-yes">98x</span>
- <span class="cline-any cline-yes">98x</span>
- <span class="cline-any cline-yes">98x</span>
- <span class="cline-any cline-yes">98x</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">571x</span>
- <span class="cline-any cline-yes">144x</span>
- <span class="cline-any cline-yes">144x</span>
- <span class="cline-any cline-yes">9x</span>
- <span class="cline-any cline-yes">135x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">562x</span>
- <span class="cline-any cline-yes">545x</span>
- <span class="cline-any cline-yes">545x</span>
- <span class="cline-any cline-yes">2x</span>
- <span class="cline-any cline-yes">2x</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">543x</span>
- <span class="cline-any cline-yes">2x</span>
- <span class="cline-any cline-yes">2x</span>
- <span class="cline-any cline-yes">2x</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">560x</span>
- <span class="cline-any cline-yes">3x</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-neutral"> </span>
- <span class="cline-any cline-yes">560x</span>
- <span class="cline-any cline-yes">2x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">558x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">560x</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">571x</span>
- <span class="cline-any cline-yes">11x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">560x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">560x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">179x</span>
- <span class="cline-any cline-yes">140x</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">554x</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">6x</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">39x</span>
- <span class="cline-any cline-yes">12x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">27x</span>
- <span class="cline-any cline-yes">27x</span>
- <span class="cline-any cline-yes">27x</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">451x</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-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">473x</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">30x</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">30x</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">221x</span>
- <span class="cline-any cline-yes">221x</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">221x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">221x</span>
- <span class="cline-any cline-yes">221x</span>
- <span class="cline-any cline-yes">421x</span>
- <span class="cline-any cline-yes">1x</span>
- <span class="cline-any cline-yes">1x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">421x</span>
- <span class="cline-any cline-yes">219x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">221x</span>
- <span class="cline-any cline-yes">219x</span>
- <span class="cline-any cline-yes">192x</span>
- <span class="cline-any cline-yes">192x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">219x</span>
- <span class="cline-any cline-yes">10x</span>
- <span class="cline-any cline-yes">10x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">219x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">221x</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">97x</span>
- <span class="cline-any cline-yes">97x</span>
- <span class="cline-any cline-yes">97x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">94x</span>
- <span class="cline-any cline-yes">94x</span>
- <span class="cline-any cline-yes">171x</span>
- <span class="cline-any cline-yes">94x</span>
- <span class="cline-any cline-yes">94x</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">94x</span>
- <span class="cline-any cline-yes">73x</span>
- <span class="cline-any cline-yes">73x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">94x</span>
- <span class="cline-any cline-yes">4x</span>
- <span class="cline-any cline-yes">4x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">94x</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">6x</span>
- <span class="cline-any cline-yes">6x</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">21x</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">19x</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">354x</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">364x</span>
- <span class="cline-any cline-yes">364x</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">4x</span>
- <span class="cline-any cline-yes">4x</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">354x</span>
- <span class="cline-any cline-yes">354x</span>
- <span class="cline-any cline-yes">354x</span>
- <span class="cline-any cline-yes">12x</span>
- <span class="cline-any cline-yes">342x</span>
- <span class="cline-any cline-yes">342x</span>
- <span class="cline-any cline-yes">2x</span>
- <span class="cline-any cline-yes">340x</span>
- <span class="cline-any cline-yes">318x</span>
- <span class="cline-any cline-yes">22x</span>
- <span class="cline-any cline-yes">16x</span>
- <span class="cline-any cline-yes">11x</span>
- <span class="cline-any cline-yes">9x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">2x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">5x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">6x</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">528x</span>
- <span class="cline-any cline-yes">1x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">527x</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">314x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">19x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">21x</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">173x</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">21x</span>
- <span class="cline-any cline-yes">21x</span>
- <span class="cline-any cline-yes">1x</span>
- <span class="cline-any cline-yes">20x</span>
- <span class="cline-any cline-yes">20x</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">59x</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">200x</span>
- <span class="cline-any cline-yes">200x</span>
- <span class="cline-any cline-yes">9x</span>
- <span class="cline-any cline-yes">191x</span>
- <span class="cline-any cline-yes">191x</span>
- <span class="cline-any cline-yes">17x</span>
- <span class="cline-any cline-yes">2x</span>
- <span class="cline-any cline-yes">15x</span>
- <span class="cline-any cline-yes">2x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">13x</span>
- <span class="cline-any cline-yes">13x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">3x</span>
- <span class="cline-any cline-yes">2x</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-yes">7x</span>
- <span class="cline-any cline-yes">12x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1x</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">174x</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">93x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">93x</span>
- <span class="cline-any cline-yes">6x</span>
- <span class="cline-any cline-yes">6x</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">93x</span>
- <span class="cline-any cline-yes">93x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">92x</span>
- <span class="cline-any cline-yes">86x</span>
- <span class="cline-any cline-yes">86x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">1x</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">92x</span>
- <span class="cline-any cline-yes">86x</span>
- <span class="cline-any cline-yes">86x</span>
- <span class="cline-any cline-yes">58x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">85x</span>
- <span class="cline-any cline-yes">12x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">82x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">4x</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">76x</span>
- <span class="cline-any cline-yes">76x</span>
- <span class="cline-any cline-yes">76x</span>
- <span class="cline-any cline-yes">1x</span>
- <span class="cline-any cline-yes">75x</span>
- <span class="cline-any cline-yes">56x</span>
- <span class="cline-any cline-yes">56x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">75x</span>
- <span class="cline-any cline-yes">4x</span>
- <span class="cline-any cline-yes">4x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">75x</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">276x</span>
- <span class="cline-any cline-yes">276x</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-neutral"> </span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">4x</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">19x</span>
- <span class="cline-any cline-yes">19x</span>
- <span class="cline-any cline-yes">17x</span>
- <span class="cline-any cline-neutral"> </span>
- <span class="cline-any cline-yes">2x</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-yes">3x</span>
- <span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">'use strict'
-
- const assert = require('assert')
- const EE = require('events').EventEmitter
- const Parser = require('./parse.js')
- const fs = require('fs')
- const fsm = require('fs-minipass')
- const path = require('path')
- const mkdir = require('./mkdir.js')
- const mkdirSync = mkdir.sync
- const wc = require('./winchars.js')
-
- const ONENTRY = Symbol('onEntry')
- const CHECKFS = Symbol('checkFs')
- const MAKEFS = Symbol('makeFs')
- const FILE = Symbol('file')
- const DIRECTORY = Symbol('directory')
- const LINK = Symbol('link')
- const SYMLINK = Symbol('symlink')
- const HARDLINK = Symbol('hardlink')
- const UNSUPPORTED = Symbol('unsupported')
- const UNKNOWN = Symbol('unknown')
- const CHECKPATH = Symbol('checkPath')
- const MKDIR = Symbol('mkdir')
- const ONERROR = Symbol('onError')
- const PENDING = Symbol('pending')
- const PEND = Symbol('pend')
- const UNPEND = Symbol('unpend')
- const ENDED = Symbol('ended')
- const MAYBECLOSE = Symbol('maybeClose')
- const SKIP = Symbol('skip')
- const DOCHOWN = Symbol('doChown')
- const UID = Symbol('uid')
- const GID = Symbol('gid')
-
- // this.gid, entry.gid, this.processUid
- const uint32 = (a, b, c) =>
- a === a >>> 0 ? a
- : b === b >>> 0 ? b
- : c
-
- class Unpack extends Parser {
- constructor (opt) {
- if (!opt)
- opt = {}
-
- opt.ondone = _ => {
- this[ENDED] = true
- this[MAYBECLOSE]()
- }
-
- super(opt)
-
- this.writable = true
- this.readable = false
-
- this[PENDING] = 0
- this[ENDED] = false
-
- this.dirCache = opt.dirCache || new Map()
-
- if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {
- // need both or neither
- if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number')
- throw new TypeError('cannot set owner without number uid and gid')
- if (opt.preserveOwner)
- throw new TypeError(
- 'cannot preserve owner in archive and also set owner explicitly')
- this.uid = opt.uid
- this.gid = opt.gid
- this.setOwner = true
- } else {
- this.uid = null
- this.gid = null
- this.setOwner = false
- }
-
- // default true for root
- if (opt.preserveOwner === undefined && typeof opt.uid !== 'number')
- this.preserveOwner = process.getuid && process.getuid() === 0
- else
- this.preserveOwner = !!opt.preserveOwner
-
- this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?
- process.getuid() : null
- this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?
- process.getgid() : null
-
- // turn ><?| in filenames into 0xf000-higher encoded forms
- this.win32 = !!opt.win32 || process.platform === 'win32'
-
- // do not unpack over files that are newer than what's in the archive
- this.newer = !!opt.newer
-
- // do not unpack over ANY files
- this.keep = !!opt.keep
-
- // do not set mtime/atime of extracted entries
- this.noMtime = !!opt.noMtime
-
- // allow .., absolute path entries, and unpacking through symlinks
- // without this, warn and skip .., relativize absolutes, and error
- // on symlinks in extraction path
- this.preservePaths = !!opt.preservePaths
-
- // unlink files and links before writing. This breaks existing hard
- // links, and removes symlink directories rather than erroring
- this.unlink = !!opt.unlink
-
- this.cwd = path.resolve(opt.cwd || process.cwd())
- this.strip = +opt.strip || 0
- this.processUmask = process.umask()
- this.umask = typeof opt.umask === 'number' ? opt.umask : this.processUmask
- // default mode for dirs created as parents
- this.dmode = opt.dmode || (0o0777 & (~this.umask))
- this.fmode = opt.fmode || (0o0666 & (~this.umask))
- this.on('entry', entry => this[ONENTRY](entry))
- }
-
- [MAYBECLOSE] () {
- if (this[ENDED] && this[PENDING] === 0) {
- this.emit('prefinish')
- this.emit('finish')
- this.emit('end')
- this.emit('close')
- }
- }
-
- [CHECKPATH] (entry) {
- if (this.strip) {
- const parts = entry.path.split(/\/|\\/)
- if (parts.length < this.strip)
- return false
- entry.path = parts.slice(this.strip).join('/')
- }
-
- if (!this.preservePaths) {
- const p = entry.path
- if (p.match(/(^|\/|\\)\.\.(\\|\/|$)/)) {
- this.warn('path contains \'..\'', p)
- return false
- }
-
- // absolutes on posix are also absolutes on win32
- // so we only need to test this one to get both
- if (path.win32.isAbsolute(p)) {
- const parsed = path.win32.parse(p)
- this.warn('stripping ' + parsed.root + ' from absolute path', p)
- entry.path = p.substr(parsed.root.length)
- }
- }
-
- // only encode : chars that aren't drive letter indicators
- if (this.win32) {
- const parsed = path.win32.parse(entry.path)
- entry.path = parsed.root === '' ? wc.encode(entry.path)
- : parsed.root + wc.encode(entry.path.substr(parsed.root.length))
- }
-
- if (path.isAbsolute(entry.path))
- entry.absolute = entry.path
- else
- entry.absolute = path.resolve(this.cwd, entry.path)
-
- return true
- }
-
- [ONENTRY] (entry) {
- if (!this[CHECKPATH](entry))
- return entry.resume()
-
- assert.equal(typeof entry.absolute, 'string')
-
- switch (entry.type) {
- case 'Directory':
- case 'GNUDumpDir':
- if (entry.mode)
- entry.mode = entry.mode | 0o700
-
- case 'File':
- case 'OldFile':
- case 'ContiguousFile':
- case 'Link':
- case 'SymbolicLink':
- return this[CHECKFS](entry)
-
- case 'CharacterDevice':
- case 'BlockDevice':
- case 'FIFO':
- return this[UNSUPPORTED](entry)
- }
- }
-
- [ONERROR] (er, entry) {
- // Cwd has to exist, or else nothing works. That's serious.
- // Other errors are warnings, which raise the error in strict
- // mode, but otherwise continue on.
- if (er.name === 'CwdError')
- this.emit('error', er)
- else {
- this.warn(er.message, er)
- this[UNPEND]()
- entry.resume()
- }
- }
-
- [MKDIR] (dir, mode, cb) {
- mkdir(dir, {
- uid: this.uid,
- gid: this.gid,
- processUid: this.processUid,
- processGid: this.processGid,
- umask: this.processUmask,
- preserve: this.preservePaths,
- unlink: this.unlink,
- cache: this.dirCache,
- cwd: this.cwd,
- mode: mode
- }, cb)
- }
-
- [DOCHOWN] (entry) {
- // in preserve owner mode, chown if the entry doesn't match process
- // in set owner mode, chown if setting doesn't match process
- return this.preserveOwner &&
- ( typeof entry.uid === 'number' && entry.uid !== this.processUid ||
- typeof entry.gid === 'number' && entry.gid !== this.processGid )
- ||
- ( typeof this.uid === 'number' && this.uid !== this.processUid ||
- typeof this.gid === 'number' && this.gid !== this.processGid )
- }
-
- [UID] (entry) {
- return uint32(this.uid, entry.uid, this.processUid)
- }
-
- [GID] (entry) {
- return uint32(this.gid, entry.gid, this.processGid)
- }
-
- [FILE] (entry) {
- const mode = entry.mode & 0o7777 || this.fmode
- const stream = new fsm.WriteStream(entry.absolute, {
- mode: mode,
- autoClose: false
- })
- stream.on('error', er => this[ONERROR](er, entry))
-
- let actions = 1
- const done = er => {
- if (er) {
- this[ONERROR](er, entry)
- actions = 1
- }
-
- if (--actions === 0)
- fs.close(stream.fd, _ => this[UNPEND]())
- }
-
- stream.on('finish', _ => {
- if (entry.mtime && !this.noMtime) {
- actions++
- fs.futimes(stream.fd, entry.atime || new Date(), entry.mtime, done)
- }
-
- if (this[DOCHOWN](entry)) {
- actions++
- fs.fchown(stream.fd, this[UID](entry), this[GID](entry), done)
- }
-
- done()
- })
-
- entry.pipe(stream)
- }
-
- [DIRECTORY] (entry) {
- const mode = entry.mode & 0o7777 || this.dmode
- this[MKDIR](entry.absolute, mode, er => {
- if (er)
- return this[ONERROR](er, entry)
-
- let actions = 1
- const done = _ => {
- if (--actions === 0) {
- this[UNPEND]()
- entry.resume()
- }
- }
-
- if (entry.mtime && !this.noMtime) {
- actions++
- fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)
- }
-
- if (this[DOCHOWN](entry)) {
- actions++
- fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)
- }
-
- done()
- })
- }
-
- [UNSUPPORTED] (entry) {
- this.warn('unsupported entry type: ' + entry.type, entry)
- entry.resume()
- }
-
- [SYMLINK] (entry) {
- this[LINK](entry, entry.linkpath, 'symlink')
- }
-
- [HARDLINK] (entry) {
- this[LINK](entry, path.resolve(this.cwd, entry.linkpath), 'link')
- }
-
- [PEND] () {
- this[PENDING]++
- }
-
- [UNPEND] () {
- this[PENDING]--
- this[MAYBECLOSE]()
- }
-
- [SKIP] (entry) {
- this[UNPEND]()
- entry.resume()
- }
-
- // check if a thing is there, and if so, try to clobber it
- [CHECKFS] (entry) {
- this[PEND]()
- this[MKDIR](path.dirname(entry.absolute), this.dmode, er => {
- if (er)
- return this[ONERROR](er, entry)
- fs.lstat(entry.absolute, (er, st) => {
- if (st && (this.keep || this.newer && st.mtime > entry.mtime))
- this[SKIP](entry)
- else if (er || (entry.type === 'File' && !this.unlink && st.isFile()))
- this[MAKEFS](null, entry)
- else if (st.isDirectory()) {
- if (entry.type === 'Directory') {
- if (!entry.mode || (st.mode & 0o7777) === entry.mode)
- this[MAKEFS](null, entry)
- else
- fs.chmod(entry.absolute, entry.mode, er => this[MAKEFS](er, entry))
- } else
- fs.rmdir(entry.absolute, er => this[MAKEFS](er, entry))
- } else
- fs.unlink(entry.absolute, er => this[MAKEFS](er, entry))
- })
- })
- }
-
- [MAKEFS] (er, entry) {
- if (er)
- return this[ONERROR](er, entry)
-
- switch (entry.type) {
- case 'File':
- case 'OldFile':
- case 'ContiguousFile':
- return this[FILE](entry)
-
- case 'Link':
- return this[HARDLINK](entry)
-
- case 'SymbolicLink':
- return this[SYMLINK](entry)
-
- case 'Directory':
- case 'GNUDumpDir':
- return this[DIRECTORY](entry)
- }
- }
-
- [LINK] (entry, linkpath, link) {
- // XXX: get the type ('file' or 'dir') for windows
- fs[link](linkpath, entry.absolute, er => {
- if (er)
- return this[ONERROR](er, entry)
- this[UNPEND]()
- entry.resume()
- })
- }
- }
-
- class UnpackSync extends Unpack {
- constructor (opt) {
- super(opt)
- }
-
- [CHECKFS] (entry) {
- const er = this[MKDIR](path.dirname(entry.absolute), this.dmode)
- if (er)
- return this[ONERROR](er, entry)
- try {
- const st = fs.lstatSync(entry.absolute)
- if (this.keep || this.newer && st.mtime > entry.mtime)
- return this[SKIP](entry)
- else if (entry.type === 'File' && !this.unlink && st.isFile())
- return this[MAKEFS](null, entry)
- else {
- try {
- if (st.isDirectory()) {
- if (entry.type === 'Directory') {
- if (entry.mode && (st.mode & 0o7777) !== entry.mode)
- fs.chmodSync(entry.absolute, entry.mode)
- } else
- fs.rmdirSync(entry.absolute)
- } else
- fs.unlinkSync(entry.absolute)
- return this[MAKEFS](null, entry)
- } catch (er) {
- return this[ONERROR](er, entry)
- }
- }
- } catch (er) {
- return this[MAKEFS](null, entry)
- }
- }
-
- [FILE] (entry) {
- const mode = entry.mode & 0o7777 || this.fmode
-
- const oner = er => {
- try { fs.closeSync(fd) } catch (_) {}
- this[ONERROR](er, entry)
- }
-
- let stream
- let fd
- try {
- fd = fs.openSync(entry.absolute, 'w', mode)
- } catch (er) {
- return oner(er)
- }
-
- entry.on('data', chunk => {
- try {
- fs.writeSync(fd, chunk, 0, chunk.length)
- } catch (er) {
- oner(er)
- }
- })
-
- entry.on('end', _ => {
- try {
- if (entry.mtime && !this.noMtime)
- fs.futimesSync(fd, entry.atime || new Date(), entry.mtime)
-
- if (this[DOCHOWN](entry))
- fs.fchownSync(fd, this[UID](entry), this[GID](entry))
-
- fs.closeSync(fd)
- } catch (er) {
- return oner(er)
- }
- })
-
- }
-
- [DIRECTORY] (entry) {
- const mode = entry.mode & 0o7777 || this.dmode
- const er = this[MKDIR](entry.absolute, mode)
- if (er)
- return this[ONERROR](er, entry)
- if (entry.mtime && !this.noMtime) {
- try {
- fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)
- } catch (er) {}
- }
- if (this[DOCHOWN](entry)) {
- try {
- fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))
- } catch (er) {}
- }
- entry.resume()
- }
-
- [MKDIR] (dir, mode) {
- try {
- return mkdir.sync(dir, {
- uid: this.uid,
- gid: this.gid,
- processUid: this.processUid,
- processGid: this.processGid,
- umask: this.processUmask,
- preserve: this.preservePaths,
- unlink: this.unlink,
- cache: this.dirCache,
- cwd: this.cwd,
- mode: mode
- })
- } catch (er) {
- return er
- }
- }
-
- [LINK] (entry, linkpath, link) {
- try {
- fs[link + 'Sync'](linkpath, entry.absolute)
- entry.resume()
- } catch (er) {
- return this[ONERROR](er, entry)
- }
- }
- }
-
- Unpack.Sync = UnpackSync
- module.exports = Unpack
- </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>
|