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); }
/* called when syslog-ng first starts up */ gboolean main_loop_initialize_state(GlobalConfig *cfg, const gchar *persist_filename) { gboolean success; cfg->state = persist_state_new(persist_filename); if (!persist_state_start(cfg->state)) return FALSE; run_id_init(cfg->state); host_id_init(cfg->state); success = cfg_init(cfg); if (success) persist_state_commit(cfg->state); else persist_state_cancel(cfg->state); return success; }
void commit_and_free_persist_state(PersistState *state) { persist_state_commit(state); persist_state_free(state); };