Skip to content
Snippets Groups Projects
Commit 20f71896 authored by Eric Vidal's avatar Eric Vidal :speech_balloon:
Browse files

remove service master resolve file.

Thanks for your service! This resolve file was used with s6-rc. The things now are simplier
and flexible.
parent 82a0c8da
No related branches found
No related tags found
No related merge requests found
Showing
with 11 additions and 765 deletions
...@@ -32,11 +32,10 @@ struct resolve_service_addon_path_s ...@@ -32,11 +32,10 @@ struct resolve_service_addon_path_s
{ {
uint32_t home ; // string, /var/lib/66 or /home/user/.66 uint32_t home ; // string, /var/lib/66 or /home/user/.66
uint32_t frontend ; // string, /home/<user>/.66/service or /etc/66/service or /usr/lib/66/service uint32_t frontend ; // string, /home/<user>/.66/service or /etc/66/service or /usr/lib/66/service
uint32_t tree ; // string, /var/lib/66/system/treename uint32_t status ; //string, /var/lib/66/system/service/svc/service_name/state/status
uint32_t status ; //string, /var/lib/66/system/treename/servicedirs/svc/service_name/state/status
} ; } ;
#define RESOLVE_SERVICE_ADDON_PATH_ZERO { 0,0,0,0 } #define RESOLVE_SERVICE_ADDON_PATH_ZERO { 0,0,0 }
typedef struct resolve_service_addon_dependencies_s resolve_service_addon_dependencies_t, *resolve_service_addon_dependencies_t_ref ; typedef struct resolve_service_addon_dependencies_s resolve_service_addon_dependencies_t, *resolve_service_addon_dependencies_t_ref ;
struct resolve_service_addon_dependencies_s struct resolve_service_addon_dependencies_s
...@@ -97,11 +96,11 @@ typedef struct resolve_service_addon_live_s resolve_service_addon_live_t, *resol ...@@ -97,11 +96,11 @@ typedef struct resolve_service_addon_live_s resolve_service_addon_live_t, *resol
struct resolve_service_addon_live_s struct resolve_service_addon_live_s
{ {
uint32_t livedir ; // string, /run/66 uint32_t livedir ; // string, /run/66
uint32_t scandir ; // string, /run/66/state/uid/service_name/scandir/service_name -> /var/lib/66/system/treename/svc/service -> /run/66/scandir/uid uint32_t scandir ; // string, /run/66/state/uid/service_name/scandir/service_name -> /var/lib/66/system/service/svc/service_name -> /run/66/scandir/uid
uint32_t statedir ; // string, /run/66/state/uid/service_name/state -> /var/lib/66/system/treename/svc/service/state uint32_t statedir ; // string, /run/66/state/uid/service_name/state -> /var/lib/66/system/service/svc/service_name/state
uint32_t eventdir ; // string, /run/66/state/uid/service_name/event -> /var/lib/66/system/treename/svc/service/event uint32_t eventdir ; // string, /run/66/state/uid/service_name/event -> /var/lib/66/system/service/svc/service_name/event
uint32_t notifdir ; // string, /run/66/state/uid/service_name/notif -> /var/lib/66/system/treename/svc/service/notif uint32_t notifdir ; // string, /run/66/state/uid/service_name/notif -> /var/lib/66/system/service/svc/service_name/notif
uint32_t supervisedir ; // string, /run/66/state/uid/service_name/supervise -> /var/lib/66/system/treename/svc/service/supervise uint32_t supervisedir ; // string, /run/66/state/uid/service_name/supervise -> /var/lib/66/system/service/svc/service_name/supervise
uint32_t fdholderdir ; // string, /run/66/state/uid/service_name/scandir/fdholder uint32_t fdholderdir ; // string, /run/66/state/uid/service_name/scandir/fdholder
uint32_t oneshotddir ; // string, /run/66/state/uid/service_name/scandir/oneshotd uint32_t oneshotddir ; // string, /run/66/state/uid/service_name/scandir/oneshotd
} ; } ;
...@@ -223,7 +222,6 @@ enum resolve_service_enum_e ...@@ -223,7 +222,6 @@ enum resolve_service_enum_e
// path // path
E_RESOLVE_SERVICE_HOME, E_RESOLVE_SERVICE_HOME,
E_RESOLVE_SERVICE_FRONTEND, E_RESOLVE_SERVICE_FRONTEND,
E_RESOLVE_SERVICE_TREE,
E_RESOLVE_SERVICE_STATUS, E_RESOLVE_SERVICE_STATUS,
// dependencies // dependencies
...@@ -294,56 +292,7 @@ enum resolve_service_enum_e ...@@ -294,56 +292,7 @@ enum resolve_service_enum_e
} ; } ;
typedef struct resolve_service_master_s resolve_service_master_t, *resolve_service_master_t_ref ;
struct resolve_service_master_s
{
uint32_t salen ;
stralloc sa ;
uint32_t name ;
uint32_t classic ;
uint32_t bundle ;
uint32_t oneshot ;
uint32_t module ;
uint32_t enabled ;
uint32_t disabled ;
uint32_t contents ;
uint32_t nclassic ;
uint32_t nbundle ;
uint32_t noneshot ;
uint32_t nmodule ;
uint32_t nenabled ;
uint32_t ndisabled ;
uint32_t ncontents ;
} ;
#define RESOLVE_SERVICE_MASTER_ZERO { 0,STRALLOC_ZERO,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
typedef enum resolve_service_master_enum_e resolve_service_master_enum_t, *resolve_service_master_enum_t_ref;
enum resolve_service_master_enum_e
{
E_RESOLVE_SERVICE_MASTER_NAME = 0,
E_RESOLVE_SERVICE_MASTER_CLASSIC,
E_RESOLVE_SERVICE_MASTER_BUNDLE,
E_RESOLVE_SERVICE_MASTER_ONESHOT,
E_RESOLVE_SERVICE_MASTER_MODULE,
E_RESOLVE_SERVICE_MASTER_ENABLED,
E_RESOLVE_SERVICE_MASTER_DISABLED,
E_RESOLVE_SERVICE_MASTER_CONTENTS,
E_RESOLVE_SERVICE_MASTER_NCLASSIC,
E_RESOLVE_SERVICE_MASTER_NBUNDLE,
E_RESOLVE_SERVICE_MASTER_NONESHOT,
E_RESOLVE_SERVICE_MASTER_NMODULE,
E_RESOLVE_SERVICE_MASTER_NENABLED,
E_RESOLVE_SERVICE_MASTER_NDISABLED,
E_RESOLVE_SERVICE_MASTER_NCONTENTS,
E_RESOLVE_SERVICE_MASTER_ENDOFKEY
} ;
extern resolve_field_table_t resolve_service_field_table[] ; extern resolve_field_table_t resolve_service_field_table[] ;
extern resolve_field_table_t resolve_service_master_field_table[] ;
extern int service_cmp_basedir(char const *dir) ; extern int service_cmp_basedir(char const *dir) ;
extern int service_endof_dir(char const *dir, char const *name) ; extern int service_endof_dir(char const *dir, char const *name) ;
...@@ -360,15 +309,6 @@ extern int service_resolve_write(resolve_service_t *res) ; ...@@ -360,15 +309,6 @@ extern int service_resolve_write(resolve_service_t *res) ;
extern int service_resolve_write_cdb(cdbmaker *c, resolve_service_t *sres) ; extern int service_resolve_write_cdb(cdbmaker *c, resolve_service_t *sres) ;
extern void service_enable_disable(graph_t *g, char const *base, char const *sv, uint8_t action) ; extern void service_enable_disable(graph_t *g, char const *base, char const *sv, uint8_t action) ;
/** Master */
extern int service_resolve_master_copy(resolve_service_master_t *dst, resolve_service_master_t *mres) ;
extern int service_resolve_master_create(char const *base, char const *treename) ;
extern int service_resolve_master_get_field_tosa(stralloc *sa, resolve_service_master_t *mres, resolve_service_master_enum_t field) ;
extern int service_resolve_master_modify_field(resolve_service_master_t *mres, uint8_t field, char const *data) ;
extern int service_resolve_master_read_cdb(cdb *c, resolve_service_master_t *tres) ;
extern int service_resolve_master_write(graph_t *graph, char const *dest) ;
extern int service_resolve_master_write_cdb(cdbmaker *c, resolve_service_master_t *mres) ;
/** Graph */ /** Graph */
extern void service_graph_g(char const *alist, size_t alen, graph_t *graph, resolve_service_t *ares, unsigned int *areslen, ssexec_t *info, uint32_t flag) ; extern void service_graph_g(char const *alist, size_t alen, graph_t *graph, resolve_service_t *ares, unsigned int *areslen, ssexec_t *info, uint32_t flag) ;
extern void service_graph_collect(graph_t *g, char const *alist, size_t alen, resolve_service_t *ares, unsigned int *areslen, ssexec_t *info, uint32_t flag) ; extern void service_graph_collect(graph_t *g, char const *alist, size_t alen, resolve_service_t *ares, unsigned int *areslen, ssexec_t *info, uint32_t flag) ;
......
...@@ -30,7 +30,7 @@ int resolve_check_g(resolve_wrapper_t *wres, char const *base, char const *name) ...@@ -30,7 +30,7 @@ int resolve_check_g(resolve_wrapper_t *wres, char const *base, char const *name)
char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + SS_SERVICE_LEN + 1 + namelen + 1] ; char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + SS_SERVICE_LEN + 1 + namelen + 1] ;
if (wres->type == DATA_SERVICE || wres->type == DATA_SERVICE_MASTER) { if (wres->type == DATA_SERVICE) {
auto_strings(path, base, SS_SYSTEM, SS_RESOLVE, SS_SERVICE, "/", name) ; auto_strings(path, base, SS_SYSTEM, SS_RESOLVE, SS_SERVICE, "/", name) ;
......
...@@ -32,12 +32,6 @@ int resolve_get_field_tosa(stralloc *sa, resolve_wrapper_t_ref wres, uint8_t fie ...@@ -32,12 +32,6 @@ int resolve_get_field_tosa(stralloc *sa, resolve_wrapper_t_ref wres, uint8_t fie
return service_resolve_get_field_tosa(sa, res, field) ; return service_resolve_get_field_tosa(sa, res, field) ;
} else if (wres->type == DATA_SERVICE_MASTER) {
resolve_service_master_t_ref res = (resolve_service_master_t *)wres->obj ;
return service_resolve_master_get_field_tosa(sa, res, field) ;
} else if (wres->type == DATA_TREE) { } else if (wres->type == DATA_TREE) {
resolve_tree_t_ref res = (resolve_tree_t *)wres->obj ; resolve_tree_t_ref res = (resolve_tree_t *)wres->obj ;
......
...@@ -36,7 +36,6 @@ int resolve_get_field_tosa_g(stralloc *sa, char const *base, char const *name, u ...@@ -36,7 +36,6 @@ int resolve_get_field_tosa_g(stralloc *sa, char const *base, char const *name, u
int e = 0 ; int e = 0 ;
resolve_service_t res = RESOLVE_SERVICE_ZERO ; resolve_service_t res = RESOLVE_SERVICE_ZERO ;
resolve_service_master_t mres = RESOLVE_SERVICE_MASTER_ZERO ;
resolve_tree_t tres = RESOLVE_TREE_ZERO ; resolve_tree_t tres = RESOLVE_TREE_ZERO ;
resolve_tree_master_t tmres = RESOLVE_TREE_MASTER_ZERO ; resolve_tree_master_t tmres = RESOLVE_TREE_MASTER_ZERO ;
resolve_wrapper_t_ref wres = 0 ; resolve_wrapper_t_ref wres = 0 ;
...@@ -45,10 +44,6 @@ int resolve_get_field_tosa_g(stralloc *sa, char const *base, char const *name, u ...@@ -45,10 +44,6 @@ int resolve_get_field_tosa_g(stralloc *sa, char const *base, char const *name, u
wres = resolve_set_struct(data_type, &res) ; wres = resolve_set_struct(data_type, &res) ;
} else if (data_type == DATA_SERVICE_MASTER) {
wres = resolve_set_struct(data_type, &mres) ;
} else if (data_type == DATA_TREE) { } else if (data_type == DATA_TREE) {
wres = resolve_set_struct(data_type, &tres) ; wres = resolve_set_struct(data_type, &tres) ;
......
...@@ -32,14 +32,6 @@ int resolve_modify_field(resolve_wrapper_t_ref wres, uint8_t field, char const * ...@@ -32,14 +32,6 @@ int resolve_modify_field(resolve_wrapper_t_ref wres, uint8_t field, char const *
return service_resolve_modify_field(res, field, by) ; return service_resolve_modify_field(res, field, by) ;
} else if (wres->type == DATA_SERVICE_MASTER) {
resolve_service_master_t_ref res = (resolve_service_master_t *)wres->obj ;
log_trace("modify field ", resolve_service_master_field_table[field].field," of resolve Master file of services with value: ", by) ;
return service_resolve_master_modify_field(res, field, by) ;
} else if (wres->type == DATA_TREE) { } else if (wres->type == DATA_TREE) {
resolve_tree_t_ref res = (resolve_tree_t *)wres->obj ; resolve_tree_t_ref res = (resolve_tree_t *)wres->obj ;
......
...@@ -46,11 +46,6 @@ int resolve_read_cdb(resolve_wrapper_t *wres, char const *file) ...@@ -46,11 +46,6 @@ int resolve_read_cdb(resolve_wrapper_t *wres, char const *file)
if (!service_resolve_read_cdb(&c, ((resolve_service_t *)wres->obj))) if (!service_resolve_read_cdb(&c, ((resolve_service_t *)wres->obj)))
goto err ; goto err ;
} else if (wres->type == DATA_SERVICE_MASTER) {
if (!service_resolve_master_read_cdb(&c, ((resolve_service_master_t *)wres->obj)))
goto err ;
} else if (wres->type == DATA_TREE){ } else if (wres->type == DATA_TREE){
if (!tree_resolve_read_cdb(&c, ((resolve_tree_t *)wres->obj))) if (!tree_resolve_read_cdb(&c, ((resolve_tree_t *)wres->obj)))
......
...@@ -32,7 +32,7 @@ int resolve_read_g(resolve_wrapper_t *wres, char const *base, char const *name) ...@@ -32,7 +32,7 @@ int resolve_read_g(resolve_wrapper_t *wres, char const *base, char const *name)
char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + namelen + 1] ; char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + namelen + 1] ;
if (wres->type == DATA_SERVICE || wres->type == DATA_SERVICE_MASTER) { if (wres->type == DATA_SERVICE) {
auto_strings(path, base, SS_SYSTEM, SS_RESOLVE, SS_SERVICE, "/", name) ; auto_strings(path, base, SS_SYSTEM, SS_RESOLVE, SS_SERVICE, "/", name) ;
......
...@@ -32,7 +32,7 @@ void resolve_remove_g(char const *base, char const *name, uint8_t data_type) ...@@ -32,7 +32,7 @@ void resolve_remove_g(char const *base, char const *name, uint8_t data_type)
size_t namelen = strlen(name) ; size_t namelen = strlen(name) ;
char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + namelen + 1] ; char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + namelen + 1] ;
if (data_type == DATA_SERVICE || data_type == DATA_SERVICE_MASTER) { if (data_type == DATA_SERVICE) {
auto_strings(path, base, SS_SYSTEM, SS_RESOLVE, SS_SERVICE, "/", name) ; auto_strings(path, base, SS_SYSTEM, SS_RESOLVE, SS_SERVICE, "/", name) ;
......
...@@ -56,11 +56,6 @@ int resolve_write_cdb(resolve_wrapper_t *wres, char const *file) ...@@ -56,11 +56,6 @@ int resolve_write_cdb(resolve_wrapper_t *wres, char const *file)
if (!service_resolve_write_cdb(&c, ((resolve_service_t *)wres->obj))) if (!service_resolve_write_cdb(&c, ((resolve_service_t *)wres->obj)))
goto err ; goto err ;
} else if (wres->type == DATA_SERVICE_MASTER) {
if (!service_resolve_master_write_cdb(&c, ((resolve_service_master_t *)wres->obj)))
goto err ;
} else if (wres->type == DATA_TREE) { } else if (wres->type == DATA_TREE) {
if (!tree_resolve_write_cdb(&c, ((resolve_tree_t *)wres->obj))) if (!tree_resolve_write_cdb(&c, ((resolve_tree_t *)wres->obj)))
......
...@@ -29,7 +29,7 @@ int resolve_write_g(resolve_wrapper_t *wres, char const *base, char const *name) ...@@ -29,7 +29,7 @@ int resolve_write_g(resolve_wrapper_t *wres, char const *base, char const *name)
char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + SS_SERVICE_LEN + 1 + namelen + 1] ; char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + SS_SERVICE_LEN + 1 + namelen + 1] ;
if (wres->type == DATA_SERVICE || wres->type == DATA_SERVICE_MASTER) { if (wres->type == DATA_SERVICE) {
auto_strings(path, base, SS_SYSTEM, SS_RESOLVE, SS_SERVICE, "/", name) ; auto_strings(path, base, SS_SYSTEM, SS_RESOLVE, SS_SERVICE, "/", name) ;
......
...@@ -11,16 +11,8 @@ service_resolve_array_free.o ...@@ -11,16 +11,8 @@ service_resolve_array_free.o
service_resolve_array_search.o service_resolve_array_search.o
service_resolve_copy.o service_resolve_copy.o
service_resolve_get_field_tosa.o service_resolve_get_field_tosa.o
service_resolve_master_copy.o
service_resolve_master_create.o
service_resolve_master_get_field_tosa.o
service_resolve_master_modify_field.o
service_resolve_master_read_cdb.o
service_resolve_master_write.o
service_resolve_master_write_cdb.o
service_resolve_modify_field.o service_resolve_modify_field.o
service_resolve_read_cdb.o service_resolve_read_cdb.o
service_resolve_sort_bytype.o
service_resolve_write.o service_resolve_write.o
service_resolve_write_cdb.o service_resolve_write_cdb.o
-loblibs -loblibs
......
/*
* service_resolve_master_copy.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 <stddef.h>
#include <oblibs/log.h>
#include <skalibs/stralloc.h>
#include <66/service.h>
int service_resolve_master_copy(resolve_service_master_t *dst, resolve_service_master_t *mres)
{
log_flow() ;
stralloc_free(&dst->sa) ;
size_t len = mres->sa.len - 1 ;
dst->salen = mres->salen ;
if (!stralloc_catb(&dst->sa,mres->sa.s,len) ||
!stralloc_0(&dst->sa))
return 0 ;
dst->name = mres->name ;
dst->classic = mres->classic ;
dst->bundle = mres->bundle ;
dst->oneshot = mres->oneshot ;
dst->module = mres->module ;
dst->enabled = mres->enabled ;
dst->disabled = mres->disabled ;
dst->contents = mres->contents ;
dst->nclassic = mres->nclassic ;
dst->nbundle = mres->nbundle ;
dst->noneshot = mres->noneshot ;
dst->nmodule = mres->nmodule ;
dst->nenabled = mres->nenabled ;
dst->ndisabled = mres->ndisabled ;
dst->ncontents = mres->ncontents ;
return 1 ;
}
/*
* service_resolve_master_create.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 <string.h>
#include <oblibs/log.h>
#include <oblibs/string.h>
#include <66/constants.h>
#include <66/resolve.h>
#include <66/service.h>
int service_resolve_master_create(char const *base, char const *treename)
{
log_flow() ;
int e = 0 ;
size_t baselen = strlen(base), treelen = strlen(treename) ;
resolve_service_master_t mres = RESOLVE_SERVICE_MASTER_ZERO ;
resolve_wrapper_t_ref wres = resolve_set_struct(DATA_SERVICE_MASTER, &mres) ;
char dst[baselen + SS_SYSTEM_LEN + 1 + treelen + SS_SVDIRS_LEN + 1] ;
resolve_init(wres) ;
mres.name = resolve_add_string(wres, SS_MASTER + 1) ;
auto_strings(dst, base, SS_SYSTEM, "/", treename, SS_SVDIRS) ;
log_trace("write Master resolve file of services") ;
if (!resolve_write(wres, dst, SS_MASTER + 1))
goto err ;
e = 1 ;
err:
resolve_free(wres) ;
return e ;
}
/*
* service_resolve_master_get_field_tosa.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 <oblibs/log.h>
#include <oblibs/string.h>
#include <skalibs/stralloc.h>
#include <skalibs/types.h>//UINT_FMT
#include <66/service.h>
int service_resolve_master_get_field_tosa(stralloc *sa, resolve_service_master_t *mres, resolve_service_master_enum_t field)
{
log_flow() ;
char fmt[UINT32_FMT] ;
char const *str = 0 ;
switch(field) {
case E_RESOLVE_SERVICE_MASTER_NAME:
str = mres->sa.s + mres->name ;
break ;
case E_RESOLVE_SERVICE_MASTER_CLASSIC:
str = mres->sa.s + mres->classic ;
break ;
case E_RESOLVE_SERVICE_MASTER_BUNDLE:
str = mres->sa.s + mres->bundle ;
break ;
case E_RESOLVE_SERVICE_MASTER_ONESHOT:
str = mres->sa.s + mres->oneshot ;
break ;
case E_RESOLVE_SERVICE_MASTER_MODULE:
str = mres->sa.s + mres->module ;
break ;
case E_RESOLVE_SERVICE_MASTER_ENABLED:
str = mres->sa.s + mres->enabled ;
break ;
case E_RESOLVE_SERVICE_MASTER_DISABLED:
str = mres->sa.s + mres->disabled ;
break ;
case E_RESOLVE_SERVICE_MASTER_CONTENTS:
str = mres->sa.s + mres->contents ;
break ;
case E_RESOLVE_SERVICE_MASTER_NCLASSIC:
fmt[uint32_fmt(fmt,mres->nclassic)] = 0 ;
str = fmt ;
break ;
case E_RESOLVE_SERVICE_MASTER_NBUNDLE:
fmt[uint32_fmt(fmt,mres->nbundle)] = 0 ;
str = fmt ;
break ;
case E_RESOLVE_SERVICE_MASTER_NONESHOT:
fmt[uint32_fmt(fmt,mres->noneshot)] = 0 ;
str = fmt ;
break ;
case E_RESOLVE_SERVICE_MASTER_NMODULE:
fmt[uint32_fmt(fmt,mres->nmodule)] = 0 ;
str = fmt ;
break ;
case E_RESOLVE_SERVICE_MASTER_NENABLED:
fmt[uint32_fmt(fmt,mres->nenabled)] = 0 ;
str = fmt ;
break ;
case E_RESOLVE_SERVICE_MASTER_NDISABLED:
fmt[uint32_fmt(fmt,mres->ndisabled)] = 0 ;
str = fmt ;
break ;
case E_RESOLVE_SERVICE_MASTER_NCONTENTS:
fmt[uint32_fmt(fmt,mres->ncontents)] = 0 ;
str = fmt ;
break ;
default:
return 0 ;
}
if (!auto_stra(sa,str))
return 0 ;
return 1 ;
}
/*
* service_resolve_master_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>
#include <oblibs/log.h>
#include <skalibs/types.h>
#include <66/tree.h>
#include <66/resolve.h>
#include <66/service.h>
resolve_field_table_t resolve_service_master_field_table[] = {
[E_RESOLVE_SERVICE_MASTER_NAME] = { .field = "name" },
[E_RESOLVE_SERVICE_MASTER_CLASSIC] = { .field = "classic" },
[E_RESOLVE_SERVICE_MASTER_BUNDLE] = { .field = "bundle" },
[E_RESOLVE_SERVICE_MASTER_ONESHOT] = { .field = "oneshot" },
[E_RESOLVE_SERVICE_MASTER_MODULE] = { .field = "module" },
[E_RESOLVE_SERVICE_MASTER_ENABLED] = { .field = "enabled" },
[E_RESOLVE_SERVICE_MASTER_DISABLED] = { .field = "disabled" },
[E_RESOLVE_SERVICE_MASTER_CONTENTS] = { .field = "contents" },
[E_RESOLVE_SERVICE_MASTER_NCLASSIC] = { .field = "nclassic" },
[E_RESOLVE_SERVICE_MASTER_NBUNDLE] = { .field = "nbundle" },
[E_RESOLVE_SERVICE_MASTER_NONESHOT] = { .field = "noneshot" },
[E_RESOLVE_SERVICE_MASTER_NMODULE] = { .field = "nmodule" },
[E_RESOLVE_SERVICE_MASTER_NENABLED] = { .field = "nenabled" },
[E_RESOLVE_SERVICE_MASTER_NDISABLED] = { .field = "ndisabled" },
[E_RESOLVE_SERVICE_MASTER_NCONTENTS] = { .field = "ncontents" },
[E_RESOLVE_SERVICE_MASTER_ENDOFKEY] = { .field = 0 },
} ;
int service_resolve_master_modify_field(resolve_service_master_t *mres, uint8_t field, char const *data)
{
log_flow() ;
uint32_t ifield ;
int e = 0 ;
resolve_wrapper_t_ref wres = resolve_set_struct(DATA_SERVICE_MASTER, mres) ;
switch(field) {
case E_RESOLVE_SERVICE_MASTER_NAME:
mres->name = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_SERVICE_MASTER_CLASSIC:
mres->classic = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_SERVICE_MASTER_BUNDLE:
mres->bundle = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_SERVICE_MASTER_ONESHOT:
mres->oneshot = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_SERVICE_MASTER_MODULE:
mres->module = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_SERVICE_MASTER_ENABLED:
mres->enabled = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_SERVICE_MASTER_DISABLED:
mres->disabled = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_SERVICE_MASTER_CONTENTS:
mres->contents = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_SERVICE_MASTER_NCLASSIC:
if (!data)
data = "0" ;
if (!uint0_scan(data, &ifield)) goto err ;
mres->nclassic= ifield ;
break ;
case E_RESOLVE_SERVICE_MASTER_NBUNDLE:
if (!data)
data = "0" ;
if (!uint0_scan(data, &ifield)) goto err ;
mres->nbundle = ifield ;
break ;
case E_RESOLVE_SERVICE_MASTER_NONESHOT:
if (!data)
data = "0" ;
if (!uint0_scan(data, &ifield)) goto err ;
mres->noneshot = ifield ;
break ;
case E_RESOLVE_SERVICE_MASTER_NMODULE:
if (!data)
data = "0" ;
if (!uint0_scan(data, &ifield)) goto err ;
mres->nmodule = ifield ;
break ;
case E_RESOLVE_SERVICE_MASTER_NENABLED:
if (!data)
data = "0" ;
if (!uint0_scan(data, &ifield)) goto err ;
mres->nenabled = ifield ;
break ;
case E_RESOLVE_SERVICE_MASTER_NDISABLED:
if (!data)
data = "0" ;
if (!uint0_scan(data, &ifield)) goto err ;
mres->ndisabled = ifield ;
break ;
case E_RESOLVE_SERVICE_MASTER_NCONTENTS:
if (!data)
data = "0" ;
if (!uint0_scan(data, &ifield)) goto err ;
mres->ncontents = ifield ;
break ;
default:
break ;
}
e = 1 ;
err:
free(wres) ;
return e ;
}
/*
* service_resolve_master_read_cdb.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 <skalibs/stralloc.h>
#include <skalibs/cdb.h>
#include <66/resolve.h>
#include <66/service.h>
int service_resolve_master_read_cdb(cdb *c, resolve_service_master_t *tres)
{
log_flow() ;
stralloc tmp = STRALLOC_ZERO ;
resolve_wrapper_t_ref wres ;
uint32_t x ;
wres = resolve_set_struct(DATA_SERVICE_MASTER, tres) ;
resolve_init(wres) ;
/* name */
resolve_find_cdb(&tmp,c,"name") ;
tres->name = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* classic */
resolve_find_cdb(&tmp,c,"classic") ;
tres->classic = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* bundle */
resolve_find_cdb(&tmp,c,"bundle") ;
tres->bundle = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* oneshot */
resolve_find_cdb(&tmp,c,"oneshot") ;
tres->oneshot = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* modules */
resolve_find_cdb(&tmp,c,"module") ;
tres->module = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* enabled */
resolve_find_cdb(&tmp,c,"enabled") ;
tres->enabled = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* disabled */
resolve_find_cdb(&tmp,c,"disabled") ;
tres->disabled = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* contents */
resolve_find_cdb(&tmp,c,"contents") ;
tres->contents = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* nclassic */
x = resolve_find_cdb(&tmp,c,"nclassic") ;
tres->nclassic = x ;
/* nbundle */
x = resolve_find_cdb(&tmp,c,"nbundle") ;
tres->nbundle = x ;
/* noneshot */
x = resolve_find_cdb(&tmp,c,"noneshot") ;
tres->noneshot = x ;
/* nmodule */
x = resolve_find_cdb(&tmp,c,"nmodule") ;
tres->nmodule = x ;
/* nenabled */
x = resolve_find_cdb(&tmp,c,"nenabled") ;
tres->nenabled = x ;
/* ndisabled */
x = resolve_find_cdb(&tmp,c,"ndisabled") ;
tres->ndisabled = x ;
/* ncontents */
x = resolve_find_cdb(&tmp,c,"ncontents") ;
tres->ncontents = x ;
free(wres) ;
stralloc_free(&tmp) ;
return 1 ;
}
/*
* service_resolve_master_write.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 <string.h>
#include <oblibs/log.h>
#include <oblibs/string.h>
#include <oblibs/types.h>
#include <skalibs/genalloc.h>
#include <66/constants.h>
#include <66/resolve.h>
#include <66/graph.h>
#include <66/enum.h>
#include <66/state.h>
#include <66/service.h>
int service_resolve_master_write(graph_t *graph, char const *dest)
{
log_flow() ;
int e = 0 ;
unsigned int pos = 0 ;
ss_state_t ste = STATE_ZERO ;
resolve_service_master_t mres = RESOLVE_SERVICE_MASTER_ZERO ;
resolve_wrapper_t_ref mwres = resolve_set_struct(DATA_SERVICE_MASTER, &mres) ;
resolve_service_t res = RESOLVE_SERVICE_ZERO ;
resolve_wrapper_t_ref wres = resolve_set_struct(DATA_SERVICE, &res) ;
resolve_init(mwres) ;
for (; pos < graph->sort_count ; pos++) {
char *name = graph->data.s + genalloc_s(graph_hash_t,&graph->hash)[graph->sort[pos]].vertex ;
if (!resolve_check(dest, name) ||
!resolve_read(wres, dest, name)) {
log_warnu("read resolve file of: ", dest, name) ;
goto err ;
}
switch (res.type) {
case TYPE_CLASSIC:
mres.classic = resolve_add_string(mwres, name) ;
mres.nclassic++ ;
break ;
case TYPE_BUNDLE:
mres.bundle = resolve_add_string(mwres, name) ;
mres.nbundle++ ;
break ;
case TYPE_ONESHOT:
mres.oneshot = resolve_add_string(mwres, name) ;
mres.noneshot++ ;
break ;
case TYPE_MODULE:
mres.module = resolve_add_string(mwres, name) ;
mres.nmodule++ ;
break ;
default:
log_warn("unknown type") ;
goto err ;
}
if (!state_read(&ste, res.sa.s + res.path.home, name))
log_warnu("read state file of: ", name) ;
if (!FLAGS_ISSET(ste.isenabled, STATE_FLAGS_TRUE)) {
/* disabled */
mres.disabled = resolve_add_string(mwres, res.sa.s + res.name) ;
mres.ndisabled++ ;
} else {
/* enabled */
mres.enabled = resolve_add_string(mwres, res.sa.s + res.name) ;
mres.nenabled++ ;
}
mres.contents = resolve_add_string(mwres, res.sa.s + res.name) ;
mres.ncontents++ ;
}
if (!resolve_write(mwres, dest, SS_MASTER + 1))
goto err ;
e = 1 ;
err:
resolve_free(wres) ;
resolve_free(mwres) ;
return e ;
}
/*
* service_resolve_master_write_cdb.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 <oblibs/log.h>
#include <skalibs/cdbmake.h>
#include <66/service.h>
#include <66/resolve.h>
int service_resolve_master_write_cdb(cdbmaker *c, resolve_service_master_t *mres)
{
log_flow() ;
char *str = mres->sa.s ;
/* name */
if (!resolve_add_cdb(c,"name",str + mres->name) ||
/* classic */
!resolve_add_cdb(c,"classic",str + mres->classic) ||
/* bundle */
!resolve_add_cdb(c,"bundle",str + mres->bundle) ||
/* oneshot */
!resolve_add_cdb(c,"oneshot",str + mres->oneshot) ||
/* module */
!resolve_add_cdb(c,"module",str + mres->module) ||
/* enabled */
!resolve_add_cdb(c,"enabled",str + mres->enabled) ||
/* disabled */
!resolve_add_cdb(c,"disabled",str + mres->disabled) ||
/* contents */
!resolve_add_cdb(c,"contents",str + mres->contents) ||
/* nclassic */
!resolve_add_cdb_uint(c,"nclassic",mres->nclassic) ||
/* nbundle */
!resolve_add_cdb_uint(c,"nbundle",mres->nbundle) ||
/* noneshot */
!resolve_add_cdb_uint(c,"noneshot",mres->noneshot) ||
/* nmodule */
!resolve_add_cdb_uint(c,"nmodule",mres->nmodule) ||
/* nenabled */
!resolve_add_cdb_uint(c,"nenabled",mres->nenabled) ||
/* ndisabled */
!resolve_add_cdb_uint(c,"ndisabled",mres->ndisabled) ||
/* ncontents */
!resolve_add_cdb_uint(c,"ncontents",mres->ncontents)) return 0 ;
return 1 ;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment