tar-js添加对前缀的支持

时间:2014-05-28 04:33:07

标签: javascript node.js tar

我正在尝试让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 ................

1 个答案:

答案 0 :(得分:0)

我需要再次计算校验和。