Esempio n. 1
0
static int
lketama_roll(lua_State *L){
	size_t fsiz;
	char *filename = (char *)luaL_checklstring(L, 1, &fsiz);
	if( fsiz > 255 ) return luaL_argerror(L, 1, "filename must not be longer than 255 bytes");
	contdata *data = lua_newuserdata(L, sizeof(*data));
	if(!data) return default_error(L);
	if(ketama_roll((ketama_continuum*)&data->cont, filename) == 0) return nil_error(L, 0, "continuum fail");
	luaL_getmetatable(L, MT_NAME);
   lua_setmetatable(L, -2);
   return 1;
}
Esempio n. 2
0
static int
default_error(lua_State *L){
	return nil_error(L, errno, strerror(errno));
}