void cfg_free(GlobalConfig *self) { g_assert(self->persist == NULL); if (self->state) persist_state_free(self->state); g_free(self->file_template_name); g_free(self->proto_template_name); log_template_unref(self->file_template); log_template_unref(self->proto_template); log_template_options_destroy(&self->template_options); host_resolve_options_destroy(&self->host_resolve_options); if (self->bad_hostname_compiled) regfree(&self->bad_hostname); g_free(self->bad_hostname_re); dns_cache_options_destroy(&self->dns_cache_options); g_free(self->custom_domain); plugin_free_plugins(self); plugin_free_candidate_modules(self); cfg_tree_free_instance(&self->tree); g_hash_table_unref(self->module_config); g_free(self); }
PersistState * restart_persist_state_with_cancel(PersistState *state, gchar *persist_file_name) { PersistState *new_state; persist_state_cancel(state); persist_state_free(state); new_state = create_persist_state_for_test(persist_file_name); return new_state; };
void cancel_and_destroy_persist_state(PersistState *state) { gchar *filename = g_strdup(persist_state_get_filename(state)); persist_state_cancel(state); persist_state_free(state); unlink(filename); g_free(filename); };
int main(int argc, char** argv) { struct arguments args; set_default_args(&args); if (parse_args(argc, argv, &args)) { return 1; } PersistEntryHandle handle; struct journald_state* journald_state = NULL; msg_init(TRUE); PersistState* state = persist_state_new(args.filename); gsize state_size; guint8 persist_version; persist_state_start_dump(state); switch (args.action) { case LIST: persist_state_foreach_entry(state, &handle_entry, NULL); break; case SHOW_JOURNALD_CURSOR: handle = persist_state_lookup_entry(state, systemd_journal, &state_size, &persist_version); if (handle == 0) break; journald_state = persist_state_map_entry(state, handle); printf("journald cursor: %s\n", journald_state->cursor); persist_state_unmap_entry(state, handle); break; case SAVE_JOURNALD_CURSOR: handle = persist_state_alloc_entry(state, systemd_journal, sizeof(struct journald_state)); if (handle == 0) break; journald_state = persist_state_map_entry(state, handle); journald_state->header.version = 0; journald_state->header.big_endian = (G_BYTE_ORDER == G_BIG_ENDIAN); strncpy(journald_state->cursor, args.action_arg.journald_cursor, MAX_CURSOR_LENGTH); persist_state_unmap_entry(state, handle); persist_state_commit(state); break; default:; } persist_state_free(state); msg_deinit(); return 0; }
PersistState * restart_persist_state(PersistState *state) { PersistState *new_state; gchar* name = g_strdup(persist_state_get_filename(state)); persist_state_commit(state); persist_state_free(state); new_state = create_persist_state_for_test(name); g_free(name); return new_state; };
static void create_persist_file_with_hostid(const gchar *persist_file, guint32 hostid) { PersistState *state; PersistEntryHandle handle; HostIdState *host_id_state; unlink(persist_file); state = create_persist_state(persist_file); handle = persist_state_alloc_entry(state, HOST_ID_PERSIST_KEY, sizeof(HostIdState)); host_id_state = persist_state_map_entry(state, handle); host_id_state->host_id = hostid; persist_state_unmap_entry(state, handle); persist_state_commit(state); persist_state_free(state); }
static guint32 load_hostid_from_persist(const gchar *persist_file) { PersistState *state; PersistEntryHandle handle; HostIdState *host_id_state; gsize size; guint8 version; guint32 result; state = create_persist_state(persist_file); handle = persist_state_lookup_entry(state, HOST_ID_PERSIST_KEY, &size, &version); assert_true(handle != 0, "cannot find hostid in persist file"); host_id_state = persist_state_map_entry(state, handle); result = host_id_state->host_id; persist_state_unmap_entry(state, handle); persist_state_free(state); return result; }
void cfg_free(GlobalConfig *self) { g_assert(self->persist == NULL); if (self->state) persist_state_free(self->state); g_free(self->file_template_name); g_free(self->proto_template_name); log_template_unref(self->file_template); log_template_unref(self->proto_template); if (self->bad_hostname_compiled) regfree(&self->bad_hostname); g_free(self->bad_hostname_re); g_free(self->dns_cache_hosts); g_list_free(self->plugins); plugin_free_candidate_modules(self); cfg_tree_free_instance(&self->tree); g_free(self); }
void commit_and_free_persist_state(PersistState *state) { persist_state_commit(state); persist_state_free(state); };