static inline int se_confsophia_error(srconf *c, srconfstmt *s) { se *e = s->ptr; char *errorp; char error[128]; error[0] = 0; int len = sr_errorcopy(&e->error, error, sizeof(error)); if (sslikely(len == 0)) errorp = NULL; else errorp = error; srconf conf = { .key = c->key, .flags = c->flags, .type = c->type, .function = NULL, .value = errorp, .ptr = NULL, .next = NULL }; return se_confv(&conf, s); } static inline srconf* se_confsophia(se *e, seconfrt *rt, srconf **pc) { srconf *sophia = *pc; srconf *p = NULL; sr_C(&p, pc, se_confv, "version", SS_STRING, rt->version, SR_RO, NULL); sr_C(&p, pc, se_confv, "version_storage", SS_STRING, rt->version_storage, SR_RO, NULL); sr_C(&p, pc, se_confv, "build", SS_STRING, rt->build, SR_RO, NULL); sr_C(&p, pc, se_confsophia_error, "error", SS_STRING, NULL, SR_RO, NULL); sr_c(&p, pc, se_confv_offline, "path", SS_STRINGPTR, &e->conf.path); sr_c(&p, pc, se_confv_offline, "path_create", SS_U32, &e->conf.path_create); sr_c(&p, pc, se_confv_offline, "recover", SS_U32, &e->conf.recover); return sr_C(NULL, pc, NULL, "sophia", SS_UNDEF, sophia, SR_NS, NULL); }
static inline int se_metasophia_error(srmeta *c, srmetastmt *s) { se *e = s->ptr; char *errorp; char error[128]; error[0] = 0; int len = sr_errorcopy(&e->error, error, sizeof(error)); if (sslikely(len == 0)) errorp = NULL; else errorp = error; srmeta meta = { .key = c->key, .flags = c->flags, .type = c->type, .function = NULL, .value = errorp, .ptr = NULL, .next = NULL }; return se_metav(&meta, s); } static inline srmeta* se_metasophia(se *e, semetart *rt, srmeta **pc) { srmeta *sophia = *pc; srmeta *p = NULL; sr_M(&p, pc, se_metav, "version", SS_STRING, rt->version, SR_RO, NULL); sr_M(&p, pc, se_metav, "build", SS_STRING, rt->build, SR_RO, NULL); sr_M(&p, pc, se_metasophia_error, "error", SS_STRING, NULL, SR_RO, NULL); sr_m(&p, pc, se_metav_offline, "path", SS_STRINGPTR, &e->meta.path); sr_m(&p, pc, se_metav_offline, "path_create", SS_U32, &e->meta.path_create); return sr_M(NULL, pc, NULL, "sophia", SS_UNDEF, sophia, SR_NS, NULL); }