int hook_timer_add_to_infolist (struct t_infolist_item *item, struct t_hook *hook) { char value[64]; if (!item || !hook || !hook->hook_data) return 0; if (!infolist_new_var_pointer (item, "callback", HOOK_TIMER(hook, callback))) return 0; snprintf (value, sizeof (value), "%ld", HOOK_TIMER(hook, interval)); if (!infolist_new_var_string (item, "interval", value)) return 0; if (!infolist_new_var_integer (item, "align_second", HOOK_TIMER(hook, align_second))) return 0; if (!infolist_new_var_integer (item, "remaining_calls", HOOK_TIMER(hook, remaining_calls))) return 0; if (!infolist_new_var_buffer (item, "last_exec", &(HOOK_TIMER(hook, last_exec)), sizeof (HOOK_TIMER(hook, last_exec)))) return 0; if (!infolist_new_var_buffer (item, "next_exec", &(HOOK_TIMER(hook, next_exec)), sizeof (HOOK_TIMER(hook, next_exec)))) return 0; return 1; }
int gui_hotlist_add_to_infolist (struct t_infolist *infolist, struct t_gui_hotlist *hotlist) { struct t_infolist_item *ptr_item; int i; char option_name[64]; if (!infolist || !hotlist) return 0; ptr_item = infolist_new_item (infolist); if (!ptr_item) return 0; if (!infolist_new_var_integer (ptr_item, "priority", hotlist->priority)) return 0; switch (hotlist->priority) { case GUI_HOTLIST_LOW: if (!infolist_new_var_string (ptr_item, "color", gui_color_get_name (CONFIG_COLOR(config_color_status_data_other)))) return 0; break; case GUI_HOTLIST_MESSAGE: if (!infolist_new_var_string (ptr_item, "color", gui_color_get_name (CONFIG_COLOR(config_color_status_data_msg)))) return 0; break; case GUI_HOTLIST_PRIVATE: if (!infolist_new_var_string (ptr_item, "color", gui_color_get_name (CONFIG_COLOR(config_color_status_data_private)))) return 0; break; case GUI_HOTLIST_HIGHLIGHT: if (!infolist_new_var_string (ptr_item, "color", gui_color_get_name (CONFIG_COLOR(config_color_status_data_highlight)))) return 0; break; case GUI_HOTLIST_NUM_PRIORITIES: /* * this constant is used to count hotlist priorities only, * it is never used as priority */ break; } if (!infolist_new_var_buffer (ptr_item, "creation_time", &(hotlist->creation_time), sizeof (struct timeval))) return 0; if (!infolist_new_var_pointer (ptr_item, "buffer_pointer", hotlist->buffer)) return 0; if (!infolist_new_var_integer (ptr_item, "buffer_number", hotlist->buffer->number)) return 0; if (!infolist_new_var_string (ptr_item, "plugin_name", gui_buffer_get_plugin_name (hotlist->buffer))) return 0; if (!infolist_new_var_string (ptr_item, "buffer_name", hotlist->buffer->name)) return 0; for (i = 0; i < GUI_HOTLIST_NUM_PRIORITIES; i++) { snprintf (option_name, sizeof (option_name), "count_%02d", i); if (!infolist_new_var_integer (ptr_item, option_name, hotlist->count[i])) return 0; } return 1; }
int upgrade_file_read_object (struct t_upgrade_file *upgrade_file) { struct t_infolist *infolist; struct t_infolist_item *item; int rc, object_id, type, type_var, value, size; char *name, *value_str; void *buffer; time_t time; rc = 0; infolist = NULL; name = NULL; value_str = NULL; buffer = NULL; if (!upgrade_file_read_integer (upgrade_file, &type)) { if (feof (upgrade_file->file)) rc = 1; else UPGRADE_ERROR(_("read - object type"), ""); goto end; } if (type != UPGRADE_TYPE_OBJECT_START) { UPGRADE_ERROR(_("read - bad object type ('object start' expected)"), ""); goto end; } if (!upgrade_file_read_integer (upgrade_file, &object_id)) { UPGRADE_ERROR(_("read - object id"), ""); goto end; } infolist = infolist_new (NULL); if (!infolist) { UPGRADE_ERROR(_("read - infolist creation"), ""); goto end; } item = infolist_new_item (infolist); if (!item) { UPGRADE_ERROR(_("read - infolist item creation"), ""); goto end; } while (1) { if (!upgrade_file_read_integer (upgrade_file, &type)) { UPGRADE_ERROR(_("read - object type"), ""); goto end; } if (type == UPGRADE_TYPE_OBJECT_END) break; if (type == UPGRADE_TYPE_OBJECT_VAR) { if (!upgrade_file_read_string (upgrade_file, &name)) { UPGRADE_ERROR(_("read - variable name"), ""); goto end; } if (!name) { UPGRADE_ERROR(_("read - variable name"), ""); goto end; } if (!upgrade_file_read_integer (upgrade_file, &type_var)) { UPGRADE_ERROR(_("read - variable type"), ""); goto end; } switch (type_var) { case INFOLIST_INTEGER: if (!upgrade_file_read_integer (upgrade_file, &value)) { UPGRADE_ERROR(_("read - variable"), "integer"); goto end; } infolist_new_var_integer (item, name, value); break; case INFOLIST_STRING: if (!upgrade_file_read_string (upgrade_file, &value_str)) { UPGRADE_ERROR(_("read - variable"), "string"); goto end; } infolist_new_var_string (item, name, value_str); break; case INFOLIST_POINTER: break; case INFOLIST_BUFFER: if (!upgrade_file_read_buffer (upgrade_file, &buffer, &size)) { UPGRADE_ERROR(_("read - variable"), "buffer"); goto end; } infolist_new_var_buffer (item, name, buffer, size); break; case INFOLIST_TIME: if (!upgrade_file_read_time (upgrade_file, &time)) { UPGRADE_ERROR(_("read - variable"), "time"); goto end; } infolist_new_var_time (item, name, time); break; } } } rc = 1; if (upgrade_file->callback_read) { if ((int)(upgrade_file->callback_read) (upgrade_file->callback_read_data, upgrade_file, object_id, infolist) == WEECHAT_RC_ERROR) rc = 0; } end: if (infolist) infolist_free (infolist); if (name) free (name); if (value_str) free (value_str); if (buffer) free (buffer); return rc; }