/* * Copyright (c) 2026, Chloe M. * Provided under the BSD-3 clause */ #include #include #include #include #include #include #include "cescal/state.h" int state_init(struct cescal_state *state, const char *pathname) { if (state == NULL || pathname == NULL) { errno = EINVAL; return -1; } memset(state, 0, sizeof(*state)); state->in_fd = open(pathname, O_RDONLY); if (state->in_fd < 0) { return -1; } if (readbuf_init(&state->rb) < 0) { close(state->in_fd); return -1; } if (tokbuf_init(&state->tokbuf) < 0) { close(state->in_fd); return -1; } if (ptrbox_init(&state->ptrbox) < 0) { close(state->in_fd); return -1; } return 0; } void state_close(struct cescal_state *state) { close(state->in_fd); state->in_fd = -1; ptrbox_destroy(&state->ptrbox); tokbuf_destroy(&state->tokbuf); }