*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;
-
- for(n = 0; n != 256; ++n) table[n] = T[n];
- for(n = 0; n != 256; ++n) {
- v = T[n];
- for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];
- }
- var out = [];
- for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);
- return out;
-}
-var TT = slice_by_16_tables(T0);
-var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];
-var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];
-var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];
-function crc32_bstr(bstr/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ {
- var C = seed/*:: ? 0 : 0 */ ^ -1;
- for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];
- return ~C;
-}
-
-function crc32_buf(B/*:ABuf*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ {
- var C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;
- for(; i < L;) C =
- Tf[B[i++] ^ (C & 255)] ^
- Te[B[i++] ^ ((C >> 8) & 255)] ^
- Td[B[i++] ^ ((C >> 16) & 255)] ^
- Tc[B[i++] ^ (C >>> 24)] ^
- Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^
- T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^
- T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];
- L += 15;
- while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];
- return ~C;
-}
-
-function crc32_str(str/*:string*/, seed/*:?CRC32Type*/)/*:CRC32Type*/ {
- var C = seed/*:: ? 0 : 0 */ ^ -1;
- for(var i = 0, L = str.length, c = 0, d = 0; i < L;) {
- c = str.charCodeAt(i++);
- if(c < 0x80) {
- C = (C>>>8) ^ T0[(C^c)&0xFF];
- } else if(c < 0x800) {
- C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];
- } else if(c >= 0xD800 && c < 0xE000) {
- c = (c&1023)+64; d = str.charCodeAt(i++)&1023;
- C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];
- } else {
- C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];
- }
- }
- return ~C;
-}
-export const version = CRC32C.version;
-export const table = T0;
-export const bstr = crc32_bstr;
-export const buf = crc32_buf;
-export const str = crc32_str;
diff --git a/ctest/crc32.js b/ctest/crc32.js
index c92664a..6bcecef 100644
--- a/ctest/crc32.js
+++ b/ctest/crc32.js
@@ -1,4 +1,4 @@
-/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */
+/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */
/* vim: set ts=2: */
/*exported CRC32 */
var CRC32;
@@ -23,7 +23,8 @@ var CRC32;
/*eslint-enable */
/*jshint ignore:end */
}(function(CRC32) {
-CRC32.version = '1.2.2';
+CRC32.version = '1.2.0';
+/* see perf/crc32table.js */
/*global Int32Array */
function signed_crc_table() {
var c = 0, table = new Array(256);
@@ -44,68 +45,70 @@ function signed_crc_table() {
return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;
}
-var T0 = signed_crc_table();
-function slice_by_16_tables(T) {
- var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;
-
- for(n = 0; n != 256; ++n) table[n] = T[n];
- for(n = 0; n != 256; ++n) {
- v = T[n];
- for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];
- }
- var out = [];
- for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);
- return out;
-}
-var TT = slice_by_16_tables(T0);
-var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];
-var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];
-var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];
+var T = signed_crc_table();
function crc32_bstr(bstr, seed) {
- var C = seed ^ -1;
- for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];
- return ~C;
+ var C = seed ^ -1, L = bstr.length - 1;
+ for(var i = 0; i < L;) {
+ C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF];
+ C = (C>>>8) ^ T[(C^bstr.charCodeAt(i++))&0xFF];
+ }
+ if(i === L) C = (C>>>8) ^ T[(C ^ bstr.charCodeAt(i))&0xFF];
+ return C ^ -1;
}
-function crc32_buf(B, seed) {
- var C = seed ^ -1, L = B.length - 15, i = 0;
- for(; i < L;) C =
- Tf[B[i++] ^ (C & 255)] ^
- Te[B[i++] ^ ((C >> 8) & 255)] ^
- Td[B[i++] ^ ((C >> 16) & 255)] ^
- Tc[B[i++] ^ (C >>> 24)] ^
- Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^
- T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^
- T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];
- L += 15;
- while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];
- return ~C;
+function crc32_buf(buf, seed) {
+ if(buf.length > 10000) return crc32_buf_8(buf, seed);
+ var C = seed ^ -1, L = buf.length - 3;
+ for(var i = 0; i < L;) {
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ }
+ while(i < L+3) C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ return C ^ -1;
+}
+
+function crc32_buf_8(buf, seed) {
+ var C = seed ^ -1, L = buf.length - 7;
+ for(var i = 0; i < L;) {
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ }
+ while(i < L+7) C = (C>>>8) ^ T[(C^buf[i++])&0xFF];
+ return C ^ -1;
}
function crc32_str(str, seed) {
var C = seed ^ -1;
- for(var i = 0, L = str.length, c = 0, d = 0; i < L;) {
+ for(var i = 0, L=str.length, c, d; i < L;) {
c = str.charCodeAt(i++);
if(c < 0x80) {
- C = (C>>>8) ^ T0[(C^c)&0xFF];
+ C = (C>>>8) ^ T[(C ^ c)&0xFF];
} else if(c < 0x800) {
- C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];
+ C = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF];
+ C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF];
} else if(c >= 0xD800 && c < 0xE000) {
c = (c&1023)+64; d = str.charCodeAt(i++)&1023;
- C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];
+ C = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF];
+ C = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF];
+ C = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];
+ C = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF];
} else {
- C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];
- C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];
+ C = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF];
+ C = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF];
+ C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF];
}
}
- return ~C;
+ return C ^ -1;
}
-CRC32.table = T0;
+CRC32.table = T;
// $FlowIgnore
CRC32.bstr = crc32_bstr;
// $FlowIgnore
diff --git a/ctest/fixtures.js b/ctest/fixtures.js
index 002840a..375d2b8 100644
--- a/ctest/fixtures.js
+++ b/ctest/fixtures.js
@@ -35,8 +35,8 @@ type _CB = {(data:Buffer):void;};
declare module 'concat-stream' {declare function exports(f:_CB):stream$Duplex;};
declare module 'exit-on-epipe' {};
-declare module 'crc-32' { declare module.exports:CRC32Module; };
-declare module '../' { declare module.exports:CRC32Module; };
+declare module 'crc-32' { declare var exports:CRC32Module; };
+declare module '../' { declare var exports:CRC32Module; };
declare module 'printj' {
declare function sprintf(fmt:string, ...args:any):string;
diff --git a/ctest/test.js b/ctest/test.js
index 9f6b546..4b0f0a4 100644
--- a/ctest/test.js
+++ b/ctest/test.js
@@ -20,14 +20,6 @@ function msieversion()
return parseInt (ua.substring (msie+5, ua.indexOf (".", msie )));
}
-var Buffer_from = function(){};
-
-if(typeof Buffer !== 'undefined') {
- var nbfs = !Buffer.from;
- if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; }
- Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);
-}
-
describe('crc32 table', function() {
it('should match fixed table', function() {
var overflow = 0;
@@ -48,7 +40,7 @@ describe('crc32 bits', function() {
it(msg, function() {
if(i[2] === 1) assert.equal(X.bstr(i[0]), L);
assert.equal(X.str(i[0]), i[1]|0);
- if(typeof Buffer !== 'undefined') assert.equal(X.buf(Buffer_from(i[0])), L);
+ if(typeof Buffer !== 'undefined') assert.equal(X.buf(new Buffer(i[0])), L);
var len = i[0].length, step = len < 20000 ? 1 : len < 50000 ? Math.ceil(len / 20000) : Math.ceil(len / 2000);
for(var x = 0; x < len; x += step) {
if(i[0].charCodeAt(x) >= 0xD800 && i[0].charCodeAt(x) < 0xE000) continue;
@@ -59,7 +51,7 @@ describe('crc32 bits', function() {
var strcrc = X.str(i[0].substr(x), X.str(i[0].substr(0, x)));
assert.equal(strcrc, i[1]|0);
if(typeof Buffer !== 'undefined') {
- var buf = Buffer_from(i[0]);
+ var buf = new Buffer(i[0]);
var bufcrc = X.buf(buf.slice(x), X.buf(buf.slice(0, x)));
assert.equal(bufcrc, L);
}
@@ -82,9 +74,9 @@ if(typeof require !== 'undefined') describe("unicode", function() {
var cc = corpus[ucidx], dd = X.str(c);
assert.equal(dd, cc, ":" + ucidx + ":" + c + ":" + cc + ":" + dd);
if(typeof Buffer !== 'undefined') {
- var ee = X.buf(Buffer_from(c, "utf8"));
+ var ee = X.buf(new Buffer(c, "utf8"));
assert.equal(ee, cc, ":" + ucidx + ":" + c + ":" + cc + ":" + ee);
- var ff = X.bstr(String.fromCharCode.apply(null, Buffer_from(c, "utf8")));
+ var ff = X.bstr(String.fromCharCode.apply(null, new Buffer(c, "utf8")));
assert.equal(ff, cc, ":" + ucidx + ":" + c + ":" + cc + ":" + ff);
}
};
diff --git a/index.html b/index.html
index d9088cf..bd472b0 100644
--- a/index.html
+++ b/index.html
@@ -27,8 +27,8 @@ a { text-decoration: none }
(text works back to IE6; drag and drop works back to IE10)
(This demo loads the entire file at once! For newer browsers, try the large file demo)
-Source Code Repo
-Issues? Something look weird? Click here and report an issue
+Source Code Repo
+Issues? Something look weird? Click here and report an issue
Drop a text file to compute the CRC-32 checksum
... or click here to select a file
diff --git a/misc/00_header.js b/misc/00_header.js
deleted file mode 100644
index a172cbd..0000000
--- a/misc/00_header.js
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */
-/* vim: set ts=2: */
-var CRC32 = {};
diff --git a/misc/99_footer.js b/misc/99_footer.js
deleted file mode 100644
index 0f3318d..0000000
--- a/misc/99_footer.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export const version = CRC32.version;
-export const table = T0;
-export const bstr = crc32_bstr;
-export const buf = crc32_buf;
-export const str = crc32_str;
diff --git a/misc/mjs.lst b/misc/mjs.lst
deleted file mode 100644
index 697323e..0000000
--- a/misc/mjs.lst
+++ /dev/null
@@ -1,6 +0,0 @@
-misc/00_header.js
-bits/01_version.js
-bits/10_types.js
-bits/20_crctable.js
-bits/40_crc.js
-misc/99_footer.js
diff --git a/package.json b/package.json
index 20acf58..09bdd66 100644
--- a/package.json
+++ b/package.json
@@ -1,37 +1,19 @@
{
"name": "crc-32",
- "version": "1.2.3",
+ "version": "1.2.0",
"author": "sheetjs",
"description": "Pure-JS CRC-32",
"keywords": [ "crc", "crc32", "checksum" ],
"bin": {
- "crc32": "bin/crc32.njs"
- },
- "main": "crc32.js",
- "module": "crc32.mjs",
- "types": "types/index.d.ts",
- "typesVersions": { "*": { "*": ["types/index.d.ts" ] } },
- "exports": {
- ".": {
- "import": "./crc32.mjs",
- "require": "./crc32.js"
- },
- "./crc32c": {
- "import": "./crc32c.mjs",
- "require": "./crc32c.js"
- },
- "./crc32.mjs": {
- "import": "./crc32.mjs"
- },
- "./crc32c.mjs": {
- "import": "./crc32c.mjs"
- }
+ "crc32": "./bin/crc32.njs"
},
+ "main": "./crc32",
+ "types": "types",
"dependencies": {
+ "printj": "~1.1.0",
+ "exit-on-epipe": "~1.0.1"
},
"devDependencies": {
- "printj": "~1.3.1",
- "exit-on-epipe": "~1.0.1",
"mocha": "~2.5.3",
"blanket": "~1.2.3",
"codepage": "~1.10.0",
@@ -52,8 +34,8 @@
"pattern": "crc32.js"
}
},
- "homepage": "https://sheetjs.com/",
- "files": ["crc32.js", "crc32c.js", "crc32.mjs", "crc32c.mjs", "bin/crc32.njs", "LICENSE", "README.md", "types/index.d.ts", "types/*.json"],
+ "homepage": "http://sheetjs.com/opensource",
+ "files": ["crc32.js", "bin/crc32.njs", "LICENSE", "README.md", "types/index.d.ts", "types/*.json"],
"bugs": { "url": "https://github.com/SheetJS/js-crc32/issues" },
"license": "Apache-2.0",
"engines": { "node": ">=0.8" }
diff --git a/packages/crc32-cli/.npmignore b/packages/crc32-cli/.npmignore
deleted file mode 100644
index aa1ec1e..0000000
--- a/packages/crc32-cli/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-*.tgz
diff --git a/packages/crc32-cli/bin/crc32.njs b/packages/crc32-cli/bin/crc32.njs
index 80c98b9..d9bf02e 100755
--- a/packages/crc32-cli/bin/crc32.njs
+++ b/packages/crc32-cli/bin/crc32.njs
@@ -6,4 +6,4 @@
var cli = require('../');
-cli();
+cli();
\ No newline at end of file
diff --git a/bin/crc32.py b/packages/crc32-cli/bin/crc32.py
similarity index 100%
rename from bin/crc32.py
rename to packages/crc32-cli/bin/crc32.py
diff --git a/packages/crc32-cli/index.js b/packages/crc32-cli/index.js
index 949b36f..6a410a6 100644
--- a/packages/crc32-cli/index.js
+++ b/packages/crc32-cli/index.js
@@ -1,3 +1,4 @@
+#!/usr/bin/env node
/* index.js (C) 2020-present SheetJS -- http://sheetjs.com */
/* eslint-env node */
/* vim: set ts=2 ft=javascript: */
@@ -7,26 +8,25 @@
var X = require('crc-32');
function help()/*:number*/ {
- [
- "usage: crc32 [options] [filename]",
- "",
- "Options:",
- " -h, --help output usage information",
- " -V, --version output the version number",
- " -S, --seed= use integer seed as starting value (rolling CRC)",
- " -H, --hex-seed= use hex seed as starting value (rolling CRC)",
- " -d, --signed print result with format `%d` (default)",
- " -u, --unsigned print result with format `%u`",
- " -x, --hex print result with format `%0.8x`",
- " -X, --HEX print result with format `%0.8X`",
- " -c, --crc32c use CRC32C (Castagnoli)",
- " -F, --format= use specified printf format",
- "",
- "Set filename = '-' or pipe data into crc32 to read from stdin",
- "Default output mode is signed (-d)",
- ""
- ].forEach(function (l) { console.log(l); });
- return 0;
+ [
+ "usage: crc32 [options] [filename]",
+ "",
+ "Options:",
+ " -h, --help output usage information",
+ " -V, --version output the version number",
+ " -S, --seed= use integer seed as starting value (rolling CRC)",
+ " -H, --hex-seed= use hex seed as starting value (rolling CRC)",
+ " -d, --signed print result with format `%d` (default)",
+ " -u, --unsigned print result with format `%u`",
+ " -x, --hex print result with format `%0.8x`",
+ " -X, --HEX print result with format `%0.8X`",
+ " -F, --format= use specified printf format",
+ "",
+ "Set filename = '-' or pipe data into crc32 to read from stdin",
+ "Default output mode is signed (-d)",
+ ""
+ ].forEach(function (l) { console.log(l); });
+ return 0;
}
function version()/*:number*/ { console.log(X.version); return 0; }
@@ -37,58 +37,55 @@ require('exit-on-epipe');
function die(msg/*:string*/, ec/*:?number*/)/*:void*/ { console.error(msg); process.exit(ec || 0); }
function run() {
- var args/*:Array*/ = process.argv.slice(2);
- var filename/*:string*/ = "";
- var fmt/*:string*/ = "";
- var seed = 0, r = 10;
+ var args/*:Array*/ = process.argv.slice(2);
+ var filename/*:string*/ = "";
+ var fmt/*:string*/ = "";
+ var seed = 0, r = 10;
- for(var i = 0; i < args.length; ++i) {
- var arg = args[i];
- if(arg.charCodeAt(0) != 45) { if(filename === "") filename = arg; continue; }
- var m = arg.indexOf("=") == -1 ? arg : arg.substr(0, arg.indexOf("="));
- switch(m) {
- case "-": filename = "-"; break;
+ for (var i = 0; i < args.length; ++i) {
+ var arg = args[i];
+ if (arg.charCodeAt(0) != 45) { if (filename === "") filename = arg; continue; }
+ var m = arg.indexOf("=") == -1 ? arg : arg.substr(0, arg.indexOf("="));
+ switch (m) {
+ case "-": filename = "-"; break;
- case "--help": case "-h": process.exit(help()); break;
- case "--version": case "-V": process.exit(version()); break;
+ case "--help": case "-h": process.exit(help()); break;
+ case "--version": case "-V": process.exit(version()); break;
- case "--crc32c": case "-c": try { X = require('../crc32c'); } catch(e) { X = require('crc-32/crc32c'); } break;
+ case "--signed": case "-d": fmt = "%d"; break;
+ case "--unsigned": case "-u": fmt = "%u"; break;
+ case "--hex": case "-x": fmt = "%0.8x"; break;
+ case "--HEX": case "-X": fmt = "%0.8X"; break;
+ case "--format": case "-F":
+ fmt = ((m != arg) ? arg.substr(m.length + 1) : args[++i]) || ""; break;
- case "--signed": case "-d": fmt = "%d"; break;
- case "--unsigned": case "-u": fmt = "%u"; break;
- case "--hex": case "-x": fmt = "%0.8x"; break;
- case "--HEX": case "-X": fmt = "%0.8X"; break;
- case "--format": case "-F":
- fmt = ((m!=arg) ? arg.substr(m.length+1) : args[++i])||""; break;
+ case "--hex-seed": case "-H": r = 16;
+ /* falls through */
+ case "--seed": case "-S":
+ seed = parseInt((m != arg) ? arg.substr(m.length + 1) : args[++i], r) || 0; break;
- case "--hex-seed": case "-H": r = 16;
- /* falls through */
- case "--seed": case "-S":
- seed=parseInt((m!=arg) ? arg.substr(m.length+1) : args[++i], r)||0; break;
+ default: die("crc32: unrecognized option `" + arg + "'", 22);
+ }
+ }
- default: die("crc32: unrecognized option `" + arg + "'", 22);
- }
- }
+ if (!process.stdin.isTTY) filename = filename || "-";
+ if (filename.length === 0) die("crc32: must specify a filename ('-' for stdin)", 1);
- if(!process.stdin.isTTY) filename = filename || "-";
- if(filename.length===0) die("crc32: must specify a filename ('-' for stdin)",1);
+ var crc32 = seed;
+ // $FlowIgnore -- Writable is callable but type sig disagrees
+ var writable = require('stream').Writable();
+ writable._write = function (chunk, e, cb) { crc32 = X.buf(chunk, crc32); cb(); };
+ writable._writev = function (chunks, cb) {
+ chunks.forEach(function (c) { crc32 = X.buf(c.chunk, crc32); });
+ cb();
+ };
+ writable.on('finish', function () {
+ console.log(fmt === "" ? crc32 : require("printj").sprintf(fmt, crc32));
+ });
- var crc32 = seed;
- // $FlowIgnore -- Writable is callable but type sig disagrees
- var writable = require('stream').Writable();
- writable._write = function(chunk, e, cb) { crc32 = X.buf(chunk, crc32); cb(); };
- writable._writev = function(chunks, cb) {
- chunks.forEach(function(c) { crc32 = X.buf(c.chunk, crc32);});
- cb();
- };
- writable.on('finish', function() {
- console.log(fmt === "" ? crc32 : require("printj").sprintf(fmt, crc32));
- });
-
- if(filename === "-") process.stdin.pipe(writable);
- else if(fs.existsSync(filename)) fs.createReadStream(filename).pipe(writable);
- else die("crc32: " + filename + ": No such file or directory", 2);
+ if (filename === "-") process.stdin.pipe(writable);
+ else if (fs.existsSync(filename)) fs.createReadStream(filename).pipe(writable);
+ else die("crc32: " + filename + ": No such file or directory", 2);
}
-module.exports = run;
-
+module.exports = run;
\ No newline at end of file
diff --git a/packages/crc32-cli/package.json b/packages/crc32-cli/package.json
index 33161c4..8ded8d2 100644
--- a/packages/crc32-cli/package.json
+++ b/packages/crc32-cli/package.json
@@ -1,16 +1,16 @@
{
- "name": "crc32-cli",
- "version": "1.0.1",
- "author": "sheetjs",
- "description": "Command-line interface for crc32",
- "bin": {
- "crc32-cli": "bin/crc32.njs"
- },
- "main": "index.js",
- "dependencies": {
- "crc-32": "^1.2.1",
- "exit-on-epipe": "~1.0.1"
- },
- "license": "Apache-2.0"
+ "name": "crc32-cli",
+ "version": "1.0.0",
+ "description": "Command-line interface for crc32",
+ "bin": {
+ "crc32-cli": "./bin/crc32.njs"
+ },
+ "main": "index.js",
+ "author": "Garrett Luu",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "exit-on-epipe": "^1.0.1",
+ "fs": "0.0.1-security"
+ }
}
-