From b84b78c65bf1b32f7305f967b865b81c13364283 Mon Sep 17 00:00:00 2001 From: obarun <eric@obarun.org> Date: Tue, 29 Mar 2022 19:35:54 +1100 Subject: [PATCH] new field contents and ncontents to tree Master resolve file --- src/include/66/tree.h | 17 ++++++++++++----- src/lib66/tree/deps-lib/deps | 8 ++++---- src/lib66/tree/tree_resolve_master_copy.c | 2 ++ src/lib66/tree/tree_resolve_master_create.c | 2 +- .../tree/tree_resolve_master_modify_field.c | 11 +++++++++++ 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/include/66/tree.h b/src/include/66/tree.h index 35d82847..e79cacd3 100644 --- a/src/include/66/tree.h +++ b/src/include/66/tree.h @@ -32,6 +32,9 @@ #define TREE_GROUPS_USER "user" #define TREE_GROUPS_USER_LEN (sizeof TREE_GROUPS_USER - 1) +#define DATA_TREE 1 +#define DATA_TREE_MASTER 2 + typedef struct resolve_tree_s resolve_tree_t, *resolve_tree_t_ref ; struct resolve_tree_s { @@ -85,11 +88,13 @@ struct resolve_tree_master_s uint32_t allow ; uint32_t enabled ; uint32_t current ; + uint32_t contents ; uint32_t nenabled ; + uint32_t ncontents ; } ; -#define RESOLVE_TREE_MASTER_ZERO { 0,STRALLOC_ZERO,0,0,0,0,0 } +#define RESOLVE_TREE_MASTER_ZERO { 0,STRALLOC_ZERO,0,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 @@ -98,7 +103,9 @@ enum resolve_tree_master_enum_e TREE_ENUM_MASTER_ALLOW, TREE_ENUM_MASTER_ENABLED, TREE_ENUM_MASTER_CURRENT, + TREE_ENUM_MASTER_CONTENTS, TREE_ENUM_MASTER_NENABLED, + TREE_ENUM_MASTER_NCONTENTS, TREE_ENUM_MASTER_ENDOFKEY } ; @@ -183,15 +190,15 @@ extern int tree_resolve_read_cdb(cdb *c, resolve_tree_t *tres) ; extern int tree_resolve_write_cdb(cdbmaker *c, resolve_tree_t *tres) ; extern int tree_resolve_copy(resolve_tree_t *dst, resolve_tree_t *tres) ; extern int tree_resolve_modify_field(resolve_tree_t *tres, uint8_t field, char const *data) ; -extern int tree_resolve_field_tosa(stralloc *sa, resolve_tree_t *tres, resolve_tree_enum_t field) ; +extern int tree_resolve_get_field_tosa(stralloc *sa, resolve_tree_t *tres, resolve_tree_enum_t field) ; /** Master */ -extern int tree_resolve_read_master_cdb(cdb *c, resolve_tree_master_t *mres) ; -extern int tree_resolve_write_master_cdb(cdbmaker *c, resolve_tree_master_t *mres) ; +extern int tree_resolve_master_read_cdb(cdb *c, resolve_tree_master_t *mres) ; +extern int tree_resolve_master_write_cdb(cdbmaker *c, resolve_tree_master_t *mres) ; extern int tree_resolve_master_create(char const *base, uid_t owner) ; extern int tree_resolve_master_copy(resolve_tree_master_t *dst, resolve_tree_master_t *mres) ; extern int tree_resolve_master_modify_field(resolve_tree_master_t *mres, uint8_t field, char const *data) ; -extern int tree_resolve_master_field_tosa(stralloc *sa, resolve_tree_master_t *mres, resolve_tree_master_enum_t field) ; +extern int tree_resolve_master_get_field_tosa(stralloc *sa, resolve_tree_master_t *mres, resolve_tree_master_enum_t field) ; /** * diff --git a/src/lib66/tree/deps-lib/deps b/src/lib66/tree/deps-lib/deps index ede8d6e8..afeba759 100644 --- a/src/lib66/tree/deps-lib/deps +++ b/src/lib66/tree/deps-lib/deps @@ -9,16 +9,16 @@ tree_isinitialized.o tree_isvalid.o tree_ongroups.o tree_resolve_copy.o -tree_resolve_field_tosa.o +tree_resolve_get_field_tosa.o tree_resolve_master_copy.o tree_resolve_master_create.o -tree_resolve_master_field_tosa.o +tree_resolve_master_get_field_tosa.o tree_resolve_master_modify_field.o +tree_resolve_master_read_cdb.o +tree_resolve_master_write_cdb.o tree_resolve_modify_field.o tree_resolve_read_cdb.o -tree_resolve_read_master_cdb.o tree_resolve_write_cdb.o -tree_resolve_write_master_cdb.o tree_seed_file_isvalid.o tree_seed_free.o tree_seed_get_group_permissions.o diff --git a/src/lib66/tree/tree_resolve_master_copy.c b/src/lib66/tree/tree_resolve_master_copy.c index 66ecfa69..f9b9212b 100644 --- a/src/lib66/tree/tree_resolve_master_copy.c +++ b/src/lib66/tree/tree_resolve_master_copy.c @@ -37,7 +37,9 @@ int tree_resolve_master_copy(resolve_tree_master_t *dst, resolve_tree_master_t * dst->allow = mres->allow ; dst->enabled = mres->enabled ; dst->current = mres->current ; + dst->current = mres->contents ; dst->nenabled = mres->nenabled ; + dst->nenabled = mres->ncontents ; return 1 ; diff --git a/src/lib66/tree/tree_resolve_master_create.c b/src/lib66/tree/tree_resolve_master_create.c index 3ccb918a..76c88fd4 100644 --- a/src/lib66/tree/tree_resolve_master_create.c +++ b/src/lib66/tree/tree_resolve_master_create.c @@ -50,7 +50,7 @@ int tree_resolve_master_create(char const *base, uid_t owner) mres.name = resolve_add_string(wres, SS_MASTER + 1) ; mres.allow = resolve_add_string(wres, pw->pw_name) ; - log_trace("write inner resolve file of trees") ; + log_trace("write Master resolve file of trees") ; if (!resolve_write(wres, dst, SS_MASTER + 1)) goto err ; diff --git a/src/lib66/tree/tree_resolve_master_modify_field.c b/src/lib66/tree/tree_resolve_master_modify_field.c index a99bcb24..b2d76340 100644 --- a/src/lib66/tree/tree_resolve_master_modify_field.c +++ b/src/lib66/tree/tree_resolve_master_modify_field.c @@ -28,7 +28,9 @@ resolve_field_table_t resolve_tree_master_field_table[] = { [TREE_ENUM_MASTER_ALLOW] = { .field = "allow" }, [TREE_ENUM_MASTER_ENABLED] = { .field = "enabled" }, [TREE_ENUM_MASTER_CURRENT] = { .field = "current" }, + [TREE_ENUM_MASTER_CONTENTS] = { .field = "contents" }, [TREE_ENUM_MASTER_NENABLED] = { .field = "nenabled" }, + [TREE_ENUM_MASTER_NCONTENTS] = { .field = "ncontents" }, [TREE_ENUM_MASTER_ENDOFKEY] = { .field = 0 } } ; @@ -59,11 +61,20 @@ int tree_resolve_master_modify_field(resolve_tree_master_t *mres, uint8_t field, mres->current = resolve_add_string(wres,data) ; break ; + case TREE_ENUM_MASTER_CONTENTS: + mres->contents = resolve_add_string(wres,data) ; + break ; + case TREE_ENUM_MASTER_NENABLED: if (!uint0_scan(data, &ifield)) goto err ; mres->nenabled = ifield ; break ; + case TREE_ENUM_MASTER_NCONTENTS: + if (!uint0_scan(data, &ifield)) goto err ; + mres->ncontents = ifield ; + break ; + default: break ; } -- GitLab