46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
|
var fs = require('fs');
|
||
|
var self = require('./index');
|
||
|
|
||
|
module.exports.detectFile = function(filepath, opts, cb) {
|
||
|
if (typeof opts === 'function') {
|
||
|
cb = opts;
|
||
|
opts = undefined;
|
||
|
}
|
||
|
|
||
|
var fd;
|
||
|
|
||
|
var handler = function(err, buffer) {
|
||
|
if (fd) {
|
||
|
fs.closeSync(fd);
|
||
|
}
|
||
|
|
||
|
if (err) return cb(err, null);
|
||
|
cb(null, self.detect(buffer, opts));
|
||
|
};
|
||
|
|
||
|
if (opts && opts.sampleSize) {
|
||
|
fd = fs.openSync(filepath, 'r'),
|
||
|
sample = Buffer.allocUnsafe(opts.sampleSize);
|
||
|
|
||
|
fs.read(fd, sample, 0, opts.sampleSize, null, function(err) {
|
||
|
handler(err, sample);
|
||
|
});
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
fs.readFile(filepath, handler);
|
||
|
};
|
||
|
|
||
|
module.exports.detectFileSync = function(filepath, opts) {
|
||
|
if (opts && opts.sampleSize) {
|
||
|
var fd = fs.openSync(filepath, 'r'),
|
||
|
sample = Buffer.allocUnsafe(opts.sampleSize);
|
||
|
|
||
|
fs.readSync(fd, sample, 0, opts.sampleSize);
|
||
|
fs.closeSync(fd);
|
||
|
return self.detect(sample, opts);
|
||
|
}
|
||
|
|
||
|
return self.detect(fs.readFileSync(filepath), opts);
|
||
|
};
|
||
|
|