summaryrefslogtreecommitdiffstats
path: root/apps/plugins/lua/rockaux.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/lua/rockaux.c')
-rw-r--r--apps/plugins/lua/rockaux.c49
1 files changed, 30 insertions, 19 deletions
diff --git a/apps/plugins/lua/rockaux.c b/apps/plugins/lua/rockaux.c
index 95f2ab169b..ea95f232ab 100644
--- a/apps/plugins/lua/rockaux.c
+++ b/apps/plugins/lua/rockaux.c
@@ -31,29 +31,41 @@ int errno = 0;
char *strerror(int errnum)
{
(void) errnum;
-
- DEBUGF("strerror()\n");
-
+
+ DEBUGF("strerror(%d)\n", errnum);
+
return NULL;
}
-long floor(long x)
+long rb_pow(long x, long n)
{
- (void) x;
-
- DEBUGF("floor()\n");
-
- return 0;
-}
+ long pow = 1;
+ unsigned long u;
-long pow(long x, long y)
-{
- (void) x;
- (void) y;
-
- DEBUGF("pow()\n");
-
- return 0;
+ if(n <= 0)
+ {
+ if(n == 0 || x == 1)
+ return 1;
+
+ if(x != -1)
+ return x != 0 ? 1/x : 0;
+
+ n = -n;
+ }
+
+ u = n;
+ while(1)
+ {
+ if(u & 01)
+ pow *= x;
+
+ if(u >>= 1)
+ x *= x;
+ else
+ break;
+ }
+
+ return pow;
}
int strcoll(const char * str1, const char * str2)
@@ -91,4 +103,3 @@ const char* get_current_path(lua_State *L, int level)
return NULL;
}
-