daemon/main.c
# Embed resources
-daemon/engine.o: daemon/lua/init.inc
+daemon/engine.o: daemon/lua/init.inc daemon/lua/config.inc
%.inc: %.lua
@$(call quiet,XXD,$<) -i < $< > $@
@echo ', 0x00' >> $@
--- Default configuration
-cache.open('.', 10485760)
+-- Syntactic sugar for module loading
+-- `modules.<name> = <config>`
+local modules_mt = {
+ __newindex = function (t,k,v)
+ modules.load(k)
+ _G[k]['config'](v)
+ end
+}
+setmetatable(modules, modules_mt)
\ No newline at end of file
typedef uint32_t (module_api_cb)(void);
typedef int (module_init_cb)(struct kr_module *);
typedef int (module_deinit_cb)(struct kr_module *);
-typedef int (module_config_cb)(struct kr_module *, void *);
+typedef int (module_config_cb)(struct kr_module *, const char *);
typedef const knot_layer_api_t* (module_layer_cb)(void);
typedef struct kr_prop *(module_prop_cb)(void);
#define KR_MODULE_API ((uint32_t) 0x20150401)
+/**
+ * Property callback.
+ */
+typedef char *(kr_prop_cb)(void *, struct kr_module *, const char *);
+
/**
* Module property (named callable).
* A module property has a free-form JSON output (and optional input).
*/
struct kr_prop {
- char *(*cb)(void *, struct kr_module *, const char *);
+ kr_prop_cb *cb;
const char *name;
const char *info;
};