MINOR: lua: post initialization

This patch adds a Lua post initialisation wrapper. It already exists for
pure Lua function, now it executes also C. It is useful for doing things
when the configuration is ready to use. For example we can can browse and
register all the proxies.
diff --git a/include/proto/hlua_fcn.h b/include/proto/hlua_fcn.h
index 9c5d908..e4ce5f0 100644
--- a/include/proto/hlua_fcn.h
+++ b/include/proto/hlua_fcn.h
@@ -6,6 +6,7 @@
 void hlua_class_function(lua_State *L, const char *name, int (*function)(lua_State *L));
 void *hlua_checkudata(lua_State *L, int ud, int class_ref);
 int hlua_register_metatable(struct lua_State *L, char *name);
+int hlua_fcn_post_init(lua_State *L);
 int hlua_fcn_reg_core_fcn(lua_State *L);
 int hlua_dump_object(lua_State *L);
 
diff --git a/src/hlua.c b/src/hlua.c
index 89b3a79..0f49125 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -6444,6 +6444,18 @@
 	enum hlua_exec ret;
 	const char *error;
 
+	/* Call post initialisation function in safe environement. */
+	if (!SET_SAFE_LJMP(gL.T)) {
+		if (lua_type(gL.T, -1) == LUA_TSTRING)
+			error = lua_tostring(gL.T, -1);
+		else
+			error = "critical error";
+		fprintf(stderr, "Lua post-init: %s.\n", error);
+		exit(1);
+	}
+	hlua_fcn_post_init(gL.T);
+	RESET_SAFE_LJMP(gL.T);
+
 	list_for_each_entry(init, &hlua_init_functions, l) {
 		lua_rawgeti(gL.T, LUA_REGISTRYINDEX, init->function_ref);
 		ret = hlua_ctx_resume(&gL, 0);
diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
index 1dcd650..215058a 100644
--- a/src/hlua_fcn.c
+++ b/src/hlua_fcn.c
@@ -313,6 +313,11 @@
 	return 1;
 }
 
+int hlua_fcn_post_init(lua_State *L)
+{
+	return 1;
+}
+
 int hlua_fcn_reg_core_fcn(lua_State *L)
 {
 	if (!hlua_concat_init(L))