Tar-js增加对前缀的支持



我试图使tar-js工作与文件名超过100字符的节点。我在代码中创建了以下覆盖:

var header = require('tar-js/lib/header');
var format = header.format;
// Intercept headers to set the filename prefix if necessary
header.format = function(data) {
    if (data.fileName.length > 100) {
        if (data.fileName.length > 255) {
            throw new Error('File name cannot be longer than 255: ' + data.fileName);
        }
        var seperatorIndex = data.fileName.indexOf('/', data.fileName.length - 100);
        data.filenamePrefix = data.fileName.substr(0, seperatorIndex);
        data.fileName = data.fileName.substr(seperatorIndex + 1);
    }
    return format.apply(this, arguments);
}

当它遇到长文件名的文件时,它似乎正确地分割前缀,但是我的tar文件损坏了,我无法打开它。如果我尝试tar一个名称少于100个字符的文件夹,一切正常。

我做错了什么?

https://github.com/beatgammit/tar-js

我的头看起来像这样

000000  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 qqqqqqqqqqqqqqqq
000010  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 qqqqqqqqqqqqqqqq
000020  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 qqqqqqqqqqqqqqqq
000030  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 qqqqqqqqqqqqqqqq
000040  71 71 71 71 71 71 71 71 71 71 71 71 71 2F 71 77 qqqqqqqqqqqqq/qw
000050  65 71 77 65 65 77 2E 74 78 74 00 00 00 00 00 00 eqweew.txt......
000060  00 00 00 00 30 31 30 30 37 30 30 00 30 30 30 30 ....0100700.0000
000070  30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 000.0000000.0000
000080  30 30 30 30 30 30 30 00 31 32 33 34 31 33 37 30 0000000.12341370
000090  37 32 35 00 30 35 32 33 30 35 00 20 30 00 00 00 725.052305. 0...
0000A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000100  00 75 73 74 61 72 00 30 30 00 00 00 00 00 00 00 .ustar.00.......
000110  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000120  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000130  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000140  00 00 00 00 00 00 00 00 00 30 30 30 30 30 30 30 .........0000000
000150  00 30 30 30 30 30 30 30 00 71 71 71 71 71 71 71 .0000000.qqqqqqq
000160  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 qqqqqqqqqqqqqqqq
000170  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 qqqqqqqqqqqqqqqq
000180  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 qqqqqqqqqqqqqqqq
000190  71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 qqqqqqqqqqqqqqqq
0001A0  71 71 71 71 71 00 00 00 00 00 00 00 00 00 00 00 qqqqq...........
0001B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

我需要再计算一次校验和

最新更新