+void llua_setup_info(struct information *i, double u_interval)
+{
+ if (!lua_L) return;
+ lua_newtable(lua_L);
+
+ llua_set_number("update_interval", u_interval);
+ llua_set_number("uptime", i->uptime);
+
+ lua_setglobal(lua_L, "conky_info");
+}
+
+void llua_update_info(struct information *i, double u_interval)
+{
+ if (!lua_L) return;
+
+ lua_getglobal(lua_L, "conky_info");
+ if (lua_isnil(lua_L, -1)) {
+ /* window table isn't populated yet */
+ lua_pop(lua_L, 1);
+ return;
+ }
+
+ llua_set_number("update_interval", u_interval);
+ llua_set_number("uptime", i->uptime);
+
+ lua_setglobal(lua_L, "conky_info");
+}
+
+void print_lua(struct text_object *obj, char *p, int p_max_size)
+{
+ char *str = llua_getstring(obj->data.s);
+ if (str) {
+ snprintf(p, p_max_size, "%s", str);
+ free(str);
+ }
+}
+
+void print_lua_parse(struct text_object *obj, char *p, int p_max_size)
+{
+ char *str = llua_getstring(obj->data.s);
+ if (str) {
+ evaluate(str, p, p_max_size);
+ free(str);
+ }
+}
+
+void print_lua_bar(struct text_object *obj, char *p, int p_max_size)
+{
+ double per;
+ if (llua_getnumber(obj->data.s, &per)) {
+ new_bar(obj, p, p_max_size, (per/100.0 * 255));
+ }
+}
+
+#ifdef X11
+void print_lua_graph(struct text_object *obj, char *p, int p_max_size)
+{
+ double per;
+
+ if (!p_max_size)
+ return;
+
+ if (llua_getnumber(obj->data.s, &per)) {
+ new_graph(obj, p, p_max_size, per);
+ }
+}
+#endif /* X11 */
+
+void print_lua_gauge(struct text_object *obj, char *p, int p_max_size)
+{
+ double per;
+
+ if (!p_max_size)
+ return;
+
+ if (llua_getnumber(obj->data.s, &per)) {
+ new_gauge(obj, p, p_max_size, (per/100.0 * 255));
+ }
+}