/* * service_resolve_modify_field.c * * Copyright (c) 2018-2021 Eric Vidal <eric@obarun.org> * * All rights reserved. * * This file is part of Obarun. It is subject to the license terms in * the LICENSE file found in the top-level directory of this * distribution. * This file may not be copied, modified, propagated, or distributed * except according to the terms contained in the LICENSE file./ */ #include <stdint.h> #include <stdlib.h>//free #include <oblibs/log.h> #include <66/resolve.h> #include <66/service.h> resolve_field_table_t resolve_service_field_table[] = { [SERVICE_ENUM_NAME] = { .field = "name" }, [SERVICE_ENUM_DESCRIPTION] = { .field = "description" }, [SERVICE_ENUM_VERSION] = { .field = "version" }, [SERVICE_ENUM_LOGGER] = { .field = "logger" }, [SERVICE_ENUM_LOGREAL] = { .field = "logreal" }, [SERVICE_ENUM_LOGASSOC] = { .field = "logassoc" }, [SERVICE_ENUM_DSTLOG] = { .field = "dstlog" }, [SERVICE_ENUM_DEPENDS] = { .field = "depends" }, [SERVICE_ENUM_REQUIREDBY] = { .field = "requiredby" }, [SERVICE_ENUM_OPTSDEPS] = { .field = "optsdeps" }, [SERVICE_ENUM_EXTDEPS] = { .field = "extdeps" }, [SERVICE_ENUM_CONTENTS] = { .field = "contents" }, [SERVICE_ENUM_SRC] = { .field = "src" }, [SERVICE_ENUM_SRCONF] = { .field = "srconf" }, [SERVICE_ENUM_LIVE] = { .field = "live" }, [SERVICE_ENUM_RUNAT] = { .field = "runat" }, [SERVICE_ENUM_TREE] = { .field = "tree" }, [SERVICE_ENUM_TREENAME] = { .field = "treename" }, [SERVICE_ENUM_STATE] = { .field = "state" }, [SERVICE_ENUM_EXEC_RUN] = { .field = "exec_run" }, [SERVICE_ENUM_EXEC_LOG_RUN] = { .field = "exec_log_run" }, [SERVICE_ENUM_REAL_EXEC_RUN] = { .field = "real_exec_run" }, [SERVICE_ENUM_REAL_EXEC_LOG_RUN] = { .field = "real_exec_log_run" }, [SERVICE_ENUM_EXEC_FINISH] = { .field = "exec_finish" }, [SERVICE_ENUM_REAL_EXEC_FINISH] = { .field = "real_exec_finish" }, [SERVICE_ENUM_TYPE] = { .field = "type" }, [SERVICE_ENUM_NDEPENDS] = { .field = "ndepends" }, [SERVICE_ENUM_NREQUIREDBY] = { .field = "nrequiredby" }, [SERVICE_ENUM_NOPTSDEPS] = { .field = "noptsdeps" }, [SERVICE_ENUM_NEXTDEPS] = { .field = "nextdeps" }, [SERVICE_ENUM_NCONTENTS] = { .field = "ncontents" }, [SERVICE_ENUM_DOWN] = { .field = "down" }, [SERVICE_ENUM_DISEN] = { .field = "disen" }, [SERVICE_ENUM_ENDOFKEY] = { .field = 0 } } ; int service_resolve_modify_field(resolve_service_t *res, resolve_service_enum_t field, char const *data) { log_flow() ; uint32_t ifield ; int e = 0 ; resolve_wrapper_t_ref wres = resolve_set_struct(DATA_SERVICE, res) ; switch(field) { case SERVICE_ENUM_NAME: res->name = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_DESCRIPTION: res->description = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_VERSION: res->version = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_LOGGER: res->logger = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_LOGREAL: res->logreal = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_LOGASSOC: res->logassoc = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_DSTLOG: res->dstlog = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_DEPENDS: res->depends = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_REQUIREDBY: res->requiredby = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_OPTSDEPS: res->optsdeps = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_EXTDEPS: res->extdeps = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_CONTENTS: res->contents = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_SRC: res->src = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_SRCONF: res->srconf = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_LIVE: res->live = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_RUNAT: res->runat = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_TREE: res->tree = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_TREENAME: res->treename = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_STATE: res->state = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_EXEC_RUN: res->exec_run = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_EXEC_LOG_RUN: res->exec_log_run = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_REAL_EXEC_RUN: res->real_exec_run = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_REAL_EXEC_LOG_RUN: res->real_exec_log_run = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_EXEC_FINISH: res->exec_finish = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_REAL_EXEC_FINISH: res->real_exec_finish = resolve_add_string(wres,data) ; break ; case SERVICE_ENUM_TYPE: if (!uint0_scan(data, &ifield)) goto err ; res->type = ifield ; break ; case SERVICE_ENUM_NDEPENDS: if (!uint0_scan(data, &ifield)) goto err ; res->ndepends = ifield ; break ; case SERVICE_ENUM_NREQUIREDBY: if (!uint0_scan(data, &ifield)) goto err ; res->nrequiredby = ifield ; break ; case SERVICE_ENUM_NOPTSDEPS: if (!uint0_scan(data, &ifield)) goto err ; res->noptsdeps = ifield ; break ; case SERVICE_ENUM_NEXTDEPS: if (!uint0_scan(data, &ifield)) goto err ; res->nextdeps = ifield ; break ; case SERVICE_ENUM_NCONTENTS: if (!uint0_scan(data, &ifield)) goto err ; res->ncontents = ifield ; break ; case SERVICE_ENUM_DOWN: if (!uint0_scan(data, &ifield)) goto err ; res->down = ifield ; break ; case SERVICE_ENUM_DISEN: if (!uint0_scan(data, &ifield)) goto err ; res->disen = ifield ; break ; default: break ; } e = 1 ; err: free(wres) ; return e ; }