// SPDX-License-Identifier: LGPL-3.0-or-later #include "impl.h" int hkvs_record_set(hkvs *c, hkvs_table *t, hkvs_rid rid, const char *value, size_t size) { char *ptr; int r = hkvs_record_resize(c, t, rid, &ptr, size, 0); if(r < 0) return r; memcpy(ptr, value, size); hkvs_put_records(c); return 0; } int hkvs_record_update(hkvs *c, hkvs_table *t, hkvs_rid *prid, const char *key, const char *value, size_t size) { hkvs_rid rid = hkvs_record_find(c, t, key); if(hkvs_rid_ok(rid)) { int r = hkvs_record_set(c, t, rid, value, size); if(r < 0) return 0; *prid = rid; return 0; } else { char *ptr; int r = hkvs_record_append(c, t, &rid, key, &ptr, size); if(r < 0) return r; memcpy(ptr, value, size); hkvs_put_records(c); *prid = rid; return 1; } }