int stringsafe;
};
-/* This struct is used as a closure argument associated
- * with dynamic sample-fetch created fucntions. This contains
- * a pointer to the original sample_fetch struct. It is used
- * to identify the function to execute with the sample fetch
- * wrapper.
- */
-struct hlua_sample_fetch {
- struct sample_fetch *f;
-};
-
/* This struct contains data used with sleep functions. */
struct hlua_sleep {
struct task *task; /* task associated with sleep. */
__LJMP static int hlua_run_sample_fetch(lua_State *L)
{
struct hlua_smp *s;
- struct hlua_sample_fetch *f;
+ struct sample_fetch *f;
struct arg args[ARGM_NBARGS + 1];
int i;
struct sample smp;
/* Get closure arguments. */
- f = (struct hlua_sample_fetch *)lua_touserdata(L, lua_upvalueindex(1));
+ f = (struct sample_fetch *)lua_touserdata(L, lua_upvalueindex(1));
/* Get traditionnal arguments. */
s = MAY_LJMP(hlua_checkfetches(L, 1));
args[i].type = ARGT_STOP;
/* Check arguments. */
- MAY_LJMP(hlua_lua2arg_check(L, 1, args, f->f->arg_mask));
+ MAY_LJMP(hlua_lua2arg_check(L, 1, args, f->arg_mask));
/* Run the special args checker. */
- if (f->f->val_args && !f->f->val_args(args, NULL)) {
+ if (f->val_args && !f->val_args(args, NULL)) {
lua_pushfstring(L, "error in arguments");
WILL_LJMP(lua_error(L));
}
memset(&smp, 0, sizeof(smp));
/* Run the sample fetch process. */
- if (!f->f->process(s->p, s->s, s->l7, 0, args, &smp, f->f->kw, f->f->private)) {
+ if (!f->process(s->p, s->s, s->l7, 0, args, &smp, f->kw, f->private)) {
if (s->stringsafe)
lua_pushstring(L, "");
else
int i;
int idx;
struct sample_fetch *sf;
- struct hlua_sample_fetch *hsf;
struct sample_conv *sc;
char *p;
#ifdef USE_OPENSSL
/* Register the function. */
lua_pushstring(gL.T, trash.str);
- hsf = lua_newuserdata(gL.T, sizeof(struct hlua_sample_fetch));
- hsf->f = sf;
+ lua_pushlightuserdata(gL.T, sf);
lua_pushcclosure(gL.T, hlua_run_sample_fetch, 1);
lua_settable(gL.T, -3);
}