aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2022-03-04 19:37:59 +0000
committerMatthew Wild <mwild1@gmail.com>2022-03-04 19:37:59 +0000
commita905ccb71a571649c7aed90bf444e1afed9a1318 (patch)
tree5ab4210548de5d58cc704209bfcd1f1f3d3758d8
parentffb37f3ef39c41e3512b98a5cf169e40f07bd5a5 (diff)
downloadprosody-a905ccb71a571649c7aed90bf444e1afed9a1318.tar.gz
prosody-a905ccb71a571649c7aed90bf444e1afed9a1318.zip
util.bit53: Support for more than 2 arguments, for compat with bit32
-rw-r--r--util/bit53.lua30
1 files changed, 27 insertions, 3 deletions
diff --git a/util/bit53.lua b/util/bit53.lua
index 06799a97..b5c473a3 100644
--- a/util/bit53.lua
+++ b/util/bit53.lua
@@ -1,8 +1,32 @@
-- Only the operators needed by net.websocket.frames are provided at this point
return {
- band = function (a, b) return a & b end;
- bor = function (a, b) return a | b end;
- bxor = function (a, b) return a ~ b end;
+ band = function (a, b, ...)
+ local ret = a & b;
+ if ... then
+ for i = 1, select("#", ...) do
+ ret = ret & (select(i, ...));
+ end
+ end
+ return ret;
+ end;
+ bor = function (a, b, ...)
+ local ret = a | b;
+ if ... then
+ for i = 1, select("#", ...) do
+ ret = ret | (select(i, ...));
+ end
+ end
+ return ret;
+ end;
+ bxor = function (a, b, ...)
+ local ret = a ~ b;
+ if ... then
+ for i = 1, select("#", ...) do
+ ret = ret ~ (select(i, ...));
+ end
+ end
+ return ret;
+ end;
rshift = function (a, n) return a >> n end;
lshift = function (a, n) return a << n end;
};