lua_url_all (lua_State *L)
{
struct rspamd_url *url;
+ struct rspamd_lua_url *lua_url;
rspamd_mempool_t *pool = rspamd_lua_check_mempool (L, 1);
const gchar *text,*end;
- gint length,i;
+ gint i = 1;
+ size_t length;
const gchar **pos;
if (pool == NULL) {
lua_pushnil (L);
}
else {
- text = luaL_checkstring (L, 2);
+ text = luaL_checklstring (L, 2, &length);
if (text != NULL) {
- length = strlen(text);
- *pos=text;
- end=text+length;
- lua_newtable(L);
- while(*pos<=end){
+ *pos = text;
+ end = text + length;
+ lua_newtable (L);
+
+ while (*pos <= end) {
url = rspamd_url_get_next (pool, text, pos, NULL);
- if (url!=NULL) {
- lua_pushinteger (L, i);
+ if (url != NULL) {
+ lua_url = lua_newuserdata (L, sizeof (struct rspamd_lua_url));
+ rspamd_lua_setclass (L, "rspamd{url}", -1);
+ lua_url->url = url;
+ lua_pushinteger (L, i++);
lua_pushlstring (L, url->string, url->urllen);
lua_settable (L, -3);
}
- i++;
+ else
+ break;
}
}