forked from vitalif/vitastor
24 lines
606 B
JavaScript
24 lines
606 B
JavaScript
|
const fsp = require('fs').promises;
|
||
|
|
||
|
async function merge(file1, file2, out)
|
||
|
{
|
||
|
if (!out)
|
||
|
{
|
||
|
console.error('USAGE: nodejs merge.js layer1 layer2 output');
|
||
|
process.exit();
|
||
|
}
|
||
|
const layer1 = await fsp.readFile(file1);
|
||
|
const layer2 = await fsp.readFile(file2);
|
||
|
const zero = Buffer.alloc(4096);
|
||
|
for (let i = 0; i < layer2.length; i += 4096)
|
||
|
{
|
||
|
if (zero.compare(layer2, i, i+4096) != 0)
|
||
|
{
|
||
|
layer2.copy(layer1, i, i, i+4096);
|
||
|
}
|
||
|
}
|
||
|
await fsp.writeFile(out, layer1);
|
||
|
}
|
||
|
|
||
|
merge(process.argv[2], process.argv[3], process.argv[4]);
|