isbinaryfile
Advanced tools
Comparing version 0.1.6 to 0.1.7
20
index.js
@@ -13,19 +13,19 @@ var fs = require('fs'); | ||
if (size == 0) | ||
return false; | ||
// NULL byte--it's binary! | ||
if (/\0/.test(bytes)) | ||
return true; | ||
var suspicious_bytes = 0; | ||
var total_bytes = size > 512 ? 512 : size; | ||
if (size == 0) | ||
if (size >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) { | ||
// UTF-8 BOM. This isn't binary. | ||
return false; | ||
if (size >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) { | ||
/* UTF-8 BOM. This isn't binary. */ | ||
return 0; | ||
} | ||
for (var i = 0; i < total_bytes; i++) { | ||
if (bytes[i] == '0') { | ||
// NULL char. It's binary | ||
return true; | ||
} | ||
else if ((bytes[i] < 7 || bytes[i] > 14) && (bytes[i] < 32 || bytes[i] > 127)) { | ||
if ((bytes[i] < 7 || bytes[i] > 14) && (bytes[i] < 32 || bytes[i] > 127)) { | ||
// UTF-8 detection | ||
@@ -32,0 +32,0 @@ if (bytes[i] > 191 && bytes[i] < 224 && i + 1 < total_bytes) { |
{ | ||
"name": "isbinaryfile", | ||
"version" : "0.1.6", | ||
"version" : "0.1.7", | ||
"description": "Detects if a file is binary in Node.js. Similar to Perl's -B.", | ||
@@ -17,3 +17,6 @@ "main" : "./lib/panino.js", | ||
}, | ||
"devDependencies" : { "mocha": "" } | ||
"devDependencies" : { "mocha": "" }, | ||
"scripts": { | ||
"test": "mocha tests/test.js" | ||
} | ||
} |
@@ -9,6 +9,6 @@ "mocha"; | ||
it('should fail on a binary program', function() { | ||
assert(isBinaryFile("./fixtures/01_grep")); | ||
assert(isBinaryFile("tests/fixtures/01_grep")); | ||
var bytes = fs.readFileSync("./fixtures/01_grep"); | ||
var stat = fs.lstatSync("./fixtures/01_grep"); | ||
var bytes = fs.readFileSync("tests/fixtures/01_grep"); | ||
var stat = fs.lstatSync("tests/fixtures/01_grep"); | ||
assert(isBinaryFile(bytes, stat.size)); | ||
@@ -18,6 +18,6 @@ }); | ||
it('should not fail on an extensionless script', function() { | ||
assert(!isBinaryFile("./fixtures/02_perl_script")); | ||
assert(!isBinaryFile("tests/fixtures/02_perl_script")); | ||
var bytes = fs.readFileSync("./fixtures/02_perl_script"); | ||
var stat = fs.lstatSync("./fixtures/02_perl_script"); | ||
var bytes = fs.readFileSync("tests/fixtures/02_perl_script"); | ||
var stat = fs.lstatSync("tests/fixtures/02_perl_script"); | ||
assert(!isBinaryFile(bytes, stat.size)); | ||
@@ -27,6 +27,6 @@ }); | ||
it('should not fail on a russian text', function() { | ||
assert(!isBinaryFile("./fixtures/03_Руководство_по_эксплуатации.rst")); | ||
assert(!isBinaryFile("tests/fixtures/03_Руководство_по_эксплуатации.rst")); | ||
var bytes = fs.readFileSync("./fixtures/03_Руководство_по_эксплуатации.rst"); | ||
var stat = fs.lstatSync("./fixtures/03_Руководство_по_эксплуатации.rst"); | ||
var bytes = fs.readFileSync("tests/fixtures/03_Руководство_по_эксплуатации.rst"); | ||
var stat = fs.lstatSync("tests/fixtures/03_Руководство_по_эксплуатации.rst"); | ||
assert(!isBinaryFile(bytes, stat.size)); | ||
@@ -36,6 +36,6 @@ }); | ||
it('should not fail on a PDF', function() { | ||
assert(isBinaryFile("./fixtures/04_HelloWorld.pdf")); | ||
assert(isBinaryFile("tests/fixtures/04_HelloWorld.pdf")); | ||
var bytes = fs.readFileSync("./fixtures/04_HelloWorld.pdf"); | ||
var stat = fs.lstatSync("./fixtures/04_HelloWorld.pdf"); | ||
var bytes = fs.readFileSync("tests/fixtures/04_HelloWorld.pdf"); | ||
var stat = fs.lstatSync("tests/fixtures/04_HelloWorld.pdf"); | ||
assert(isBinaryFile(bytes, stat.size)); | ||
@@ -45,6 +45,6 @@ }); | ||
it('should not fail on a zero-byte file', function() { | ||
assert(!isBinaryFile("./fixtures/05_null_file.gif")); | ||
assert(!isBinaryFile("tests/fixtures/05_null_file.gif")); | ||
var bytes = fs.readFileSync("./fixtures/05_null_file.gif"); | ||
var stat = fs.lstatSync("./fixtures/05_null_file.gif"); | ||
var bytes = fs.readFileSync("tests/fixtures/05_null_file.gif"); | ||
var stat = fs.lstatSync("tests/fixtures/05_null_file.gif"); | ||
assert(!isBinaryFile(bytes, stat.size)); | ||
@@ -54,8 +54,8 @@ }); | ||
it('should not fail on a gif', function() { | ||
assert(isBinaryFile("./fixtures/06_trunks.gif")); | ||
assert(isBinaryFile("tests/fixtures/06_trunks.gif")); | ||
var bytes = fs.readFileSync("./fixtures/06_trunks.gif"); | ||
var stat = fs.lstatSync("./fixtures/06_trunks.gif"); | ||
var bytes = fs.readFileSync("tests/fixtures/06_trunks.gif"); | ||
var stat = fs.lstatSync("tests/fixtures/06_trunks.gif"); | ||
assert(isBinaryFile(bytes, stat.size)); | ||
}); | ||
}); |
79806
90