luminati-proxy-stripped
Version:
A configurable local proxy for luminati.io
41 lines (36 loc) • 1.02 kB
JavaScript
// LICENSE_CODE ZON
; /*jslint node:true, browser:true*/
var E = module.exports = {};
function imul64h(a, b){
var ah = (a>>>16)&0xffff;
var al = a&0xffff;
var bh = (b>>>16)&0xffff;
var bl = b&0xffff;
return (ah*bh + (ah*bl+al*bh)>>16)|0;
}
// Identical to 32-bit C hash.c:hash_from_int()
E.hash_int = function(val){
var xh = imul64h(val, 1103515245);
var xl = Math.imul(val, 1103515245);
return (xl-xh)>>>0;
};
E.hash_string = function(s){
if (!s.length)
return 0;
var hash = E.hash_int(s.length);
for (var i=0; i<s.length; i+=2)
{
hash = E.hash_int(
(hash+(s.charCodeAt(i)<<16)+(s.charCodeAt(i+1)|0))>>>0);
}
return hash;
};
// sha1sum/md5sum output parser
E.sum_parse = function(str){
// sha1sum format is 'hash [ |*]filename'
var parts = /([0-9a-f]+)\s+([ *]?)(.*)/i.exec(str);
if (!parts)
return null;
return {hash: parts[1], type: parts[2]=='*' ? 'binary' : 'text',
file: parts[3]};
};