Merge pull request #91 from cmgustavo/bug/01-blockextractor
Fixed BlockExtractor
This commit is contained in:
commit
63d2261369
|
@ -97,29 +97,40 @@ BlockExtractor.prototype.getNextBlock = function(cb) {
|
|||
|
||||
async.whilst(
|
||||
function() {
|
||||
return (!magic);
|
||||
return (!magic || magic === '00000000');
|
||||
},
|
||||
function(w_cb) {
|
||||
magic = null;
|
||||
|
||||
self.readCurrentFileSync();
|
||||
|
||||
if (self.currentFileIndex < 0) return cb();
|
||||
|
||||
var byte0 = self.currentParser ? self.currentParser.buffer(1).toString('hex') : null;
|
||||
|
||||
magic = self.currentParser ? self.currentParser.buffer(4).toString('hex')
|
||||
: null ;
|
||||
if (byte0) {
|
||||
// Grab 3 bytes from block without removing them
|
||||
var p = self.currentParser.pos;
|
||||
var bytes123 = self.currentParser.subject.toString('hex',p,p+3);
|
||||
magic = byte0 + bytes123;
|
||||
|
||||
if (!self.currentParser || self.currentParser.eof() || magic === '00000000') {
|
||||
magic = null;
|
||||
if (self.nextFile()) {
|
||||
if (magic !=='00000000' && magic !== self.magic) {
|
||||
|
||||
if (self.errorCount++ > 4)
|
||||
return cb(new Error('CRITICAL ERROR: Magic number mismatch: ' +
|
||||
magic + '!=' + self.magic));
|
||||
|
||||
magic=null;
|
||||
}
|
||||
}
|
||||
|
||||
if (!self.currentParser || self.currentParser.eof() ) {
|
||||
if (self.nextFile())
|
||||
console.log('Moving forward to file:' + self.currentFile() );
|
||||
return w_cb();
|
||||
}
|
||||
else {
|
||||
else
|
||||
console.log('Finished all files');
|
||||
magic = null;
|
||||
return w_cb();
|
||||
}
|
||||
|
||||
magic = null;
|
||||
return w_cb();
|
||||
}
|
||||
else {
|
||||
return w_cb();
|
||||
|
@ -128,14 +139,8 @@ BlockExtractor.prototype.getNextBlock = function(cb) {
|
|||
},
|
||||
function (a_cb) {
|
||||
if (!magic) return a_cb();
|
||||
if (magic !== self.magic) {
|
||||
var e = new Error('CRITICAL ERROR: Magic number mismatch: ' +
|
||||
magic + '!=' + self.magic);
|
||||
return a_cb(e);
|
||||
}
|
||||
|
||||
// spacer?
|
||||
self.currentParser.word32le();
|
||||
// Remove 3 bytes from magic and spacer
|
||||
self.currentParser.buffer(3+4);
|
||||
return a_cb();
|
||||
},
|
||||
function (a_cb) {
|
||||
|
@ -144,6 +149,7 @@ BlockExtractor.prototype.getNextBlock = function(cb) {
|
|||
b = new Block();
|
||||
b.parse(self.currentParser);
|
||||
b.getHash();
|
||||
self.errorCount=0;
|
||||
return a_cb();
|
||||
},
|
||||
], function(err) {
|
||||
|
|
Loading…
Reference in New Issue