我试图使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 ................
我需要再计算一次校验和