* GCC will complain about the macro definition. */
#define DONT_POISON_SPRINTF_YET
-#include "collectd.h"
#include "common.h"
#include "plugin.h"
+#include "collectd.h"
/* Include the Lua API header files. */
-#include "utils_lua.h"
#include <lauxlib.h>
#include <lua.h>
#include <lualib.h>
+#include "utils_lua.h"
#include <pthread.h>
if (!lua_isfunction(L, -1)) {
lua_pop(L, 1);
- return (-1);
+ return -1;
}
- return (0);
+ return 0;
} /* }}} int clua_load_callback */
/* Store the threads in a global variable so they are not cleaned up by the
lua_pushvalue(L, idx); /* +1 = 3 */
if (!lua_isthread(L, -1)) {
lua_pop(L, 3); /* -3 = 0 */
- return (-1);
+ return -1;
}
luaL_ref(L, LUA_REGISTRYINDEX);
lua_pop(L, 1); /* -1 = 0 */
- return (0);
+ return 0;
} /* }}} int clua_store_thread */
static int clua_read(user_data_t *ud) /* {{{ */
ERROR("Lua plugin: Unable to load callback \"%s\" (id %i).",
cb->lua_function_name, cb->callback_id);
pthread_mutex_unlock(&cb->lock);
- return (-1);
+ return -1;
}
/* +1 = 1 */
ERROR("Lua plugin: Calling a read callback failed: %s", errmsg);
lua_pop(L, 1);
pthread_mutex_unlock(&cb->lock);
- return (-1);
+ return -1;
}
if (!lua_isnumber(L, -1)) {
lua_pop(L, 1); /* -1 = 0 */
pthread_mutex_unlock(&cb->lock);
- return (status);
+ return status;
} /* }}} int clua_read */
static int clua_write(const data_set_t *ds, const value_list_t *vl, /* {{{ */
ERROR("Lua plugin: Unable to load callback \"%s\" (id %i).",
cb->lua_function_name, cb->callback_id);
pthread_mutex_unlock(&cb->lock);
- return (-1);
+ return -1;
}
/* +1 = 1 */
lua_pop(L, 1); /* -1 = 0 */
pthread_mutex_unlock(&cb->lock);
ERROR("Lua plugin: luaC_pushvaluelist failed.");
- return (-1);
+ return -1;
}
/* +1 = 2 */
ERROR("Lua plugin: Calling the write callback failed:\n%s", errmsg);
lua_pop(L, 1); /* -1 = 0 */
pthread_mutex_unlock(&cb->lock);
- return (-1);
+ return -1;
}
if (!lua_isnumber(L, -1)) {
lua_pop(L, 1); /* -1 = 0 */
pthread_mutex_unlock(&cb->lock);
- return (status);
+ return status;
} /* }}} int clua_write */
/*
luaL_checktype(L, 1, LUA_TFUNCTION);
char function_name[DATA_MAX_NAME_LEN];
- ssnprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
+ snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
int callback_id = clua_store_callback(L, 1);
if (callback_id < 0)
/* name = */ function_name,
/* callback = */ clua_read,
/* interval = */ 0,
- &(user_data_t) {
- .data = cb,
+ &(user_data_t){
+ .data = cb,
});
if (status != 0)
luaL_checktype(L, 1, LUA_TFUNCTION);
char function_name[DATA_MAX_NAME_LEN] = "";
- ssnprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
+ snprintf(function_name, sizeof(function_name), "lua/%s", lua_tostring(L, 1));
int callback_id = clua_store_callback(L, 1);
if (callback_id < 0)
pthread_mutex_init(&cb->lock, NULL);
int status = plugin_register_write(/* name = */ function_name,
- /* callback = */ clua_write,
- &(user_data_t) {
- .data = cb,
- });
+ /* callback = */ clua_write,
+ &(user_data_t){
+ .data = cb,
+ });
if (status != 0)
return luaL_error(L, "%s", "plugin_register_write failed");
{"dispatch_values", lua_cb_dispatch_values},
{"register_read", lua_cb_register_read},
{"register_write", lua_cb_register_write},
- {NULL, NULL}
-};
+ {NULL, NULL}};
static int open_collectd(lua_State *L) /* {{{ */
{
script->lua_state = luaL_newstate();
if (script->lua_state == NULL) {
ERROR("Lua plugin: luaL_newstate() failed.");
- return (-1);
+ return -1;
}
/* Open up all the standard Lua libraries. */
luaL_openlibs(script->lua_state);
- /* Load the 'collectd' library */
+/* Load the 'collectd' library */
#if LUA_VERSION_NUM < 502
lua_pushcfunction(script->lua_state, open_collectd);
lua_pushstring(script->lua_state, "collectd");
lua_pop(script->lua_state, 1);
}
- return (0);
+ return 0;
} /* }}} int lua_script_init */
static int lua_script_load(const char *script_path) /* {{{ */
lua_script_t *script = malloc(sizeof(*script));
if (script == NULL) {
ERROR("Lua plugin: malloc failed.");
- return (-1);
+ return -1;
}
int status = lua_script_init(script);
if (status != 0) {
lua_script_free(script);
- return (status);
+ return status;
}
script->script_path = strdup(script_path);
if (script->script_path == NULL) {
ERROR("Lua plugin: strdup failed.");
lua_script_free(script);
- return (-1);
+ return -1;
}
status = luaL_loadfile(script->lua_state, script->script_path);
lua_tostring(script->lua_state, -1));
lua_pop(script->lua_state, 1);
lua_script_free(script);
- return (-1);
+ return -1;
}
status = lua_pcall(script->lua_state,
script->script_path, errmsg);
lua_script_free(script);
- return (-1);
+ return -1;
}
/* Append this script to the global list of scripts. */
scripts = script;
}
- return (0);
+ return 0;
} /* }}} int lua_script_load */
static int lua_config_base_path(const oconfig_item_t *ci) /* {{{ */
{
int status = cf_util_get_string_buffer(ci, base_path, sizeof(base_path));
if (status != 0)
- return (status);
+ return status;
size_t len = strlen(base_path);
while ((len > 0) && (base_path[len - 1] == '/')) {
DEBUG("Lua plugin: base_path = \"%s\";", base_path);
- return (0);
+ return 0;
} /* }}} int lua_config_base_path */
static int lua_config_script(const oconfig_item_t *ci) /* {{{ */
int status = cf_util_get_string_buffer(ci, rel_path, sizeof(rel_path));
if (status != 0)
- return (status);
+ return status;
char abs_path[PATH_MAX];
if (base_path[0] == '\0')
sstrncpy(abs_path, rel_path, sizeof(abs_path));
else
- ssnprintf(abs_path, sizeof(abs_path), "%s/%s", base_path, rel_path);
+ snprintf(abs_path, sizeof(abs_path), "%s/%s", base_path, rel_path);
DEBUG("Lua plugin: abs_path = \"%s\";", abs_path);
status = lua_script_load(abs_path);
if (status != 0)
- return (status);
+ return status;
- INFO("Lua plugin: File \"%s\" loaded succesfully", abs_path);
+ INFO("Lua plugin: File \"%s\" loaded successfully", abs_path);
return 0;
} /* }}} int lua_config_script */
{
lua_script_free(scripts);
- return (0);
+ return 0;
} /* }}} int lua_shutdown */
void module_register(void) {
plugin_register_complex_config("lua", lua_config);
plugin_register_shutdown("lua", lua_shutdown);
}
-
-/* vim: set sw=2 sts=2 et fdm=marker : */