mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-25 12:43:09 +00:00
remove mysqlaux.c
This commit is contained in:
1
Makefile
1
Makefile
@@ -61,7 +61,6 @@ LUA_CLIB_SKYNET = \
|
|||||||
lua-crypt.c lsha1.c \
|
lua-crypt.c lsha1.c \
|
||||||
lua-sharedata.c \
|
lua-sharedata.c \
|
||||||
lua-stm.c \
|
lua-stm.c \
|
||||||
lua-mysqlaux.c \
|
|
||||||
lua-debugchannel.c \
|
lua-debugchannel.c \
|
||||||
lua-datasheet.c \
|
lua-datasheet.c \
|
||||||
\
|
\
|
||||||
|
|||||||
@@ -1,166 +0,0 @@
|
|||||||
#define LUA_LIB
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <lua.h>
|
|
||||||
#include <lauxlib.h>
|
|
||||||
|
|
||||||
static unsigned int num_escape_sql_str(unsigned char *dst, unsigned char *src, size_t size)
|
|
||||||
{
|
|
||||||
unsigned int n =0;
|
|
||||||
while (size) {
|
|
||||||
/* the highest bit of all the UTF-8 chars
|
|
||||||
* is always 1 */
|
|
||||||
if ((*src & 0x80) == 0) {
|
|
||||||
switch (*src) {
|
|
||||||
case '\0':
|
|
||||||
case '\b':
|
|
||||||
case '\n':
|
|
||||||
case '\r':
|
|
||||||
case '\t':
|
|
||||||
case 26: /* \Z */
|
|
||||||
case '\\':
|
|
||||||
case '\'':
|
|
||||||
case '"':
|
|
||||||
n++;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
src++;
|
|
||||||
size--;
|
|
||||||
}
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
static unsigned char*
|
|
||||||
escape_sql_str(unsigned char *dst, unsigned char *src, size_t size)
|
|
||||||
{
|
|
||||||
|
|
||||||
while (size) {
|
|
||||||
if ((*src & 0x80) == 0) {
|
|
||||||
switch (*src) {
|
|
||||||
case '\0':
|
|
||||||
*dst++ = '\\';
|
|
||||||
*dst++ = '0';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\b':
|
|
||||||
*dst++ = '\\';
|
|
||||||
*dst++ = 'b';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\n':
|
|
||||||
*dst++ = '\\';
|
|
||||||
*dst++ = 'n';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\r':
|
|
||||||
*dst++ = '\\';
|
|
||||||
*dst++ = 'r';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\t':
|
|
||||||
*dst++ = '\\';
|
|
||||||
*dst++ = 't';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 26:
|
|
||||||
*dst++ = '\\';
|
|
||||||
*dst++ = 'Z';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\\':
|
|
||||||
*dst++ = '\\';
|
|
||||||
*dst++ = '\\';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\'':
|
|
||||||
*dst++ = '\\';
|
|
||||||
*dst++ = '\'';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '"':
|
|
||||||
*dst++ = '\\';
|
|
||||||
*dst++ = '"';
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
*dst++ = *src;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
*dst++ = *src;
|
|
||||||
}
|
|
||||||
src++;
|
|
||||||
size--;
|
|
||||||
} /* while (size) */
|
|
||||||
|
|
||||||
return dst;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
quote_sql_str(lua_State *L)
|
|
||||||
{
|
|
||||||
size_t len, dlen, escape;
|
|
||||||
unsigned char *p;
|
|
||||||
unsigned char *src, *dst;
|
|
||||||
|
|
||||||
if (lua_gettop(L) != 1) {
|
|
||||||
return luaL_error(L, "expecting one argument");
|
|
||||||
}
|
|
||||||
|
|
||||||
src = (unsigned char *) luaL_checklstring(L, 1, &len);
|
|
||||||
|
|
||||||
if (len == 0) {
|
|
||||||
dst = (unsigned char *) "''";
|
|
||||||
dlen = sizeof("''") - 1;
|
|
||||||
lua_pushlstring(L, (char *) dst, dlen);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
escape = num_escape_sql_str(NULL, src, len);
|
|
||||||
|
|
||||||
dlen = sizeof("''") - 1 + len + escape;
|
|
||||||
p = lua_newuserdata(L, dlen);
|
|
||||||
|
|
||||||
dst = p;
|
|
||||||
|
|
||||||
*p++ = '\'';
|
|
||||||
|
|
||||||
if (escape == 0) {
|
|
||||||
memcpy(p, src, len);
|
|
||||||
p+=len;
|
|
||||||
} else {
|
|
||||||
p = (unsigned char *) escape_sql_str(p, src, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
*p++ = '\'';
|
|
||||||
|
|
||||||
if (p != dst + dlen) {
|
|
||||||
return luaL_error(L, "quote sql string error");
|
|
||||||
}
|
|
||||||
|
|
||||||
lua_pushlstring(L, (char *) dst, p - dst);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static struct luaL_Reg mysqlauxlib[] = {
|
|
||||||
{"quote_sql_str",quote_sql_str},
|
|
||||||
{NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
LUAMOD_API int luaopen_skynet_mysqlaux_c (lua_State *L) {
|
|
||||||
lua_newtable(L);
|
|
||||||
luaL_setfuncs(L, mysqlauxlib, 0);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -5,7 +5,6 @@
|
|||||||
-- Modified by Cloud Wu (remove bit32 for lua 5.3)
|
-- Modified by Cloud Wu (remove bit32 for lua 5.3)
|
||||||
|
|
||||||
local socketchannel = require "skynet.socketchannel"
|
local socketchannel = require "skynet.socketchannel"
|
||||||
local mysqlaux = require "skynet.mysqlaux.c"
|
|
||||||
local crypt = require "skynet.crypt"
|
local crypt = require "skynet.crypt"
|
||||||
|
|
||||||
|
|
||||||
@@ -637,9 +636,20 @@ function _M.server_ver(self)
|
|||||||
return self._server_ver
|
return self._server_ver
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local escape_map = {
|
||||||
|
['\0'] = "\\0",
|
||||||
|
['\b'] = "\\b",
|
||||||
|
['\n'] = "\\n",
|
||||||
|
['\r'] = "\\r",
|
||||||
|
['\t'] = "\\t",
|
||||||
|
['\26'] = "\\Z",
|
||||||
|
['\\'] = "\\\\",
|
||||||
|
["'"] = "\\'",
|
||||||
|
['"'] = '\\"',
|
||||||
|
}
|
||||||
|
|
||||||
function _M.quote_sql_str( str)
|
function _M.quote_sql_str( str)
|
||||||
return mysqlaux.quote_sql_str(str)
|
return strformat("'%s'", strgsub(str, "[\0\b\n\r\t\26\\\'\"]", escape_map))
|
||||||
end
|
end
|
||||||
|
|
||||||
function _M.set_compact_arrays(self, value)
|
function _M.set_compact_arrays(self, value)
|
||||||
|
|||||||
Reference in New Issue
Block a user