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

switch field enable from Master resolve file to tree resolve file

parent 5488024e
No related branches found
No related tags found
No related merge requests found
Showing with 36 additions and 72 deletions
......@@ -39,6 +39,7 @@ struct resolve_tree_s
stralloc sa ;
uint32_t name ;
uint32_t enabled ;
uint32_t depends ;
uint32_t requiredby ;
uint32_t allow ;
......@@ -54,12 +55,13 @@ struct resolve_tree_s
uint32_t init ;//not initialized->0, initialized->1
uint32_t supervised ;//not superviseded->0, supervised->1
} ;
#define RESOLVE_TREE_ZERO { 0,STRALLOC_ZERO,0,0,0,0,0,0,0,0,0,0,0,0,0 }
#define RESOLVE_TREE_ZERO { 0,STRALLOC_ZERO,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
typedef enum resolve_tree_enum_e resolve_tree_enum_t, *resolve_tree_enum_t_ref;
enum resolve_tree_enum_e
{
E_RESOLVE_TREE_NAME = 0,
E_RESOLVE_TREE_ENABLED,
E_RESOLVE_TREE_DEPENDS,
E_RESOLVE_TREE_REQUIREDBY,
E_RESOLVE_TREE_ALLOW,
......@@ -83,27 +85,23 @@ struct resolve_tree_master_s
uint32_t name ;
uint32_t allow ;
uint32_t enabled ;
uint32_t current ;
uint32_t contents ;
uint32_t nallow ;
uint32_t nenabled ;
uint32_t ncontents ;
} ;
#define RESOLVE_TREE_MASTER_ZERO { 0,STRALLOC_ZERO,0,0,0,0,0,0,0,0 }
#define RESOLVE_TREE_MASTER_ZERO { 0,STRALLOC_ZERO,0,0,0,0,0,0 }
typedef enum resolve_tree_master_enum_e resolve_tree_master_enum_t, *resolve_tree_master_enum_t_ref;
enum resolve_tree_master_enum_e
{
E_RESOLVE_TREE_MASTER_NAME = 0,
E_RESOLVE_TREE_MASTER_ALLOW,
E_RESOLVE_TREE_MASTER_ENABLED,
E_RESOLVE_TREE_MASTER_CURRENT,
E_RESOLVE_TREE_MASTER_CONTENTS,
E_RESOLVE_TREE_MASTER_NALLOW,
E_RESOLVE_TREE_MASTER_NENABLED,
E_RESOLVE_TREE_MASTER_NCONTENTS,
E_RESOLVE_TREE_MASTER_ENDOFKEY
} ;
......
......@@ -27,33 +27,16 @@ int tree_isenabled(char const *base, char const *treename)
log_flow() ;
int e = -1 ;
size_t pos = 0 ;
stralloc sa = STRALLOC_ZERO ;
resolve_tree_master_t mres = RESOLVE_TREE_MASTER_ZERO ;
resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE_MASTER, &mres) ;
resolve_tree_t tres = RESOLVE_TREE_ZERO ;
resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
if (resolve_read_g(wres, base, SS_MASTER + 1) <= 0)
goto err ;
if (mres.nenabled) {
if (!sastr_clean_string(&sa, mres.sa.s + mres.enabled))
goto err ;
e = 0 ;
FOREACH_SASTR(&sa, pos) {
if (!strcmp(treename, sa.s + pos)) {
e = 1 ;
break ;
}
}
}
else e = 0 ;
err:
if (resolve_read_g(wres, base, treename) <= 0) {
resolve_free(wres) ;
stralloc_free(&sa) ;
return e ;
}
e = tres.enabled ;
resolve_free(wres) ;
return e ;
}
......@@ -35,6 +35,7 @@ int tree_resolve_copy(resolve_tree_t *dst, resolve_tree_t *tres)
return 0 ;
dst->name = tres->name ;
dst->enabled = tres->enabled ;
dst->depends = tres->depends ;
dst->requiredby = tres->requiredby ;
dst->allow = tres->allow ;
......
......@@ -33,6 +33,11 @@ int tree_resolve_get_field_tosa(stralloc *sa, resolve_tree_t *tres, resolve_tree
str = tres->sa.s + tres->name ;
break ;
case E_RESOLVE_TREE_ENABLED:
fmt[uint32_fmt(fmt,tres->enabled)] = 0 ;
str = fmt ;
break ;
case E_RESOLVE_TREE_DEPENDS:
str = tres->sa.s + tres->depends ;
break ;
......
......@@ -35,12 +35,10 @@ int tree_resolve_master_copy(resolve_tree_master_t *dst, resolve_tree_master_t *
dst->name = mres->name ;
dst->allow = mres->allow ;
dst->enabled = mres->enabled ;
dst->current = mres->current ;
dst->current = mres->contents ;
dst->nallow = mres->nallow ;
dst->nenabled = mres->nenabled ;
dst->nenabled = mres->ncontents ;
dst->ncontents = mres->ncontents ;
return 1 ;
......
......@@ -37,10 +37,6 @@ int tree_resolve_master_get_field_tosa(stralloc *sa, resolve_tree_master_t *mres
str = mres->sa.s + mres->allow ;
break ;
case E_RESOLVE_TREE_MASTER_ENABLED:
str = mres->sa.s + mres->enabled ;
break ;
case E_RESOLVE_TREE_MASTER_CURRENT:
str = mres->sa.s + mres->current ;
break ;
......@@ -54,11 +50,6 @@ int tree_resolve_master_get_field_tosa(stralloc *sa, resolve_tree_master_t *mres
str = fmt ;
break ;
case E_RESOLVE_TREE_MASTER_NENABLED:
fmt[uint32_fmt(fmt,mres->nenabled)] = 0 ;
str = fmt ;
break ;
case E_RESOLVE_TREE_MASTER_NCONTENTS:
fmt[uint32_fmt(fmt,mres->ncontents)] = 0 ;
str = fmt ;
......
......@@ -26,11 +26,9 @@ resolve_field_table_t resolve_tree_master_field_table[] = {
[E_RESOLVE_TREE_MASTER_NAME] = { .field = "name" },
[E_RESOLVE_TREE_MASTER_ALLOW] = { .field = "allow" },
[E_RESOLVE_TREE_MASTER_ENABLED] = { .field = "enabled" },
[E_RESOLVE_TREE_MASTER_CURRENT] = { .field = "current" },
[E_RESOLVE_TREE_MASTER_CONTENTS] = { .field = "contents" },
[E_RESOLVE_TREE_MASTER_NALLOW] = { .field = "nallow" },
[E_RESOLVE_TREE_MASTER_NENABLED] = { .field = "nenabled" },
[E_RESOLVE_TREE_MASTER_NCONTENTS] = { .field = "ncontents" },
[E_RESOLVE_TREE_MASTER_ENDOFKEY] = { .field = 0 }
} ;
......@@ -54,10 +52,6 @@ int tree_resolve_master_modify_field(resolve_tree_master_t *mres, uint8_t field,
mres->allow = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_TREE_MASTER_ENABLED:
mres->enabled = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_TREE_MASTER_CURRENT:
mres->current = resolve_add_string(wres,data) ;
break ;
......@@ -73,13 +67,6 @@ int tree_resolve_master_modify_field(resolve_tree_master_t *mres, uint8_t field,
mres->nallow = ifield ;
break ;
case E_RESOLVE_TREE_MASTER_NENABLED:
if (!data)
data = "0" ;
if (!uint0_scan(data, &ifield)) goto err ;
mres->nenabled = ifield ;
break ;
case E_RESOLVE_TREE_MASTER_NCONTENTS:
if (!data)
data = "0" ;
......
......@@ -43,10 +43,6 @@ int tree_resolve_master_read_cdb(cdb *c, resolve_tree_master_t *mres)
resolve_find_cdb(&tmp,c,"allow") ;
mres->allow = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* enabled */
resolve_find_cdb(&tmp,c,"enabled") ;
mres->enabled = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* current */
resolve_find_cdb(&tmp,c,"current") ;
mres->current = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
......@@ -59,10 +55,6 @@ int tree_resolve_master_read_cdb(cdb *c, resolve_tree_master_t *mres)
x = resolve_find_cdb(&tmp,c,"nallow") ;
mres->nallow = x ;
/* nenabled */
x = resolve_find_cdb(&tmp,c,"nenabled") ;
mres->nenabled = x ;
/* ncontents */
x = resolve_find_cdb(&tmp,c,"ncontents") ;
mres->ncontents = x ;
......
......@@ -31,9 +31,6 @@ int tree_resolve_master_write_cdb(cdbmaker *c, resolve_tree_master_t *mres)
/* allow */
!resolve_add_cdb(c,"allow",str, mres->allow, 1) ||
/* enabled */
!resolve_add_cdb(c,"enabled",str, mres->enabled, 1) ||
/* current */
!resolve_add_cdb(c,"current",str, mres->current, 1) ||
......@@ -43,9 +40,6 @@ int tree_resolve_master_write_cdb(cdbmaker *c, resolve_tree_master_t *mres)
/* nallow */
!resolve_add_cdb_uint(c,"nallow", mres->nallow) ||
/* nenabled */
!resolve_add_cdb_uint(c,"nenabled",mres->nenabled) ||
/* ncontents */
!resolve_add_cdb_uint(c,"ncontents",mres->ncontents)) return 0 ;
......
......@@ -25,6 +25,7 @@
resolve_field_table_t resolve_tree_field_table[] = {
[E_RESOLVE_TREE_NAME] = { .field = "name" },
[E_RESOLVE_TREE_NAME] = { .field = "enabled" },
[E_RESOLVE_TREE_DEPENDS] = { .field = "depends" },
[E_RESOLVE_TREE_REQUIREDBY] = { .field = "requiredby" },
[E_RESOLVE_TREE_ALLOW] = { .field = "allow" },
......@@ -55,6 +56,13 @@ int tree_resolve_modify_field(resolve_tree_t *tres, uint8_t field, char const *d
tres->name = resolve_add_string(wres,data) ;
break ;
case E_RESOLVE_TREE_ENABLED:
if (!data)
data = "0" ;
if (!uint0_scan(data, &ifield)) goto err ;
tres->enabled = ifield ;
break ;
case E_RESOLVE_TREE_DEPENDS:
tres->depends = resolve_add_string(wres,data) ;
break ;
......
......@@ -39,6 +39,10 @@ int tree_resolve_read_cdb(cdb *c, resolve_tree_t *tres)
resolve_find_cdb(&tmp,c,"name") ;
tres->name = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
/* enabled */
x = resolve_find_cdb(&tmp,c,"enabled") ;
tres->enabled = x ;
/* depends */
resolve_find_cdb(&tmp,c,"depends") ;
tres->depends = tmp.len ? resolve_add_string(wres,tmp.s) : 0 ;
......
......@@ -43,6 +43,9 @@ int tree_resolve_write_cdb(cdbmaker *c, resolve_tree_t *tres)
/* contents */
!resolve_add_cdb(c,"contents",str, tres->contents, 1) ||
/* enabled */
!resolve_add_cdb_uint(c,"enabled",tres->enabled) ||
/* ndepends */
!resolve_add_cdb_uint(c,"ndepends",tres->ndepends) ||
......
......@@ -33,7 +33,7 @@ int tree_switch_current(char const *base, char const *treename)
}
if (!resolve_modify_field_g(wres, base, SS_MASTER + 1, E_RESOLVE_TREE_MASTER_CURRENT, treename)) {
log_warnu("modify field: ", resolve_tree_master_field_table[E_RESOLVE_TREE_MASTER_CURRENT].field," of inner resolve file with value: ", treename) ;
log_warnu("modify field: ", resolve_tree_master_field_table[E_RESOLVE_TREE_MASTER_CURRENT].field," of Master resolve file with value: ", treename) ;
goto freed ;
}
......
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