From aa0cd2e82dbc884a1f96bfc9fea46579d18c2c6a Mon Sep 17 00:00:00 2001 From: obarun <eric@obarun.org> Date: Mon, 10 Jan 2022 18:27:03 +1100 Subject: [PATCH] handle modification of the Master resolve for trees --- src/lib66/tree_switch_current.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/lib66/tree_switch_current.c b/src/lib66/tree_switch_current.c index c773ce35..36f3fe04 100644 --- a/src/lib66/tree_switch_current.c +++ b/src/lib66/tree_switch_current.c @@ -28,6 +28,7 @@ #include <66/config.h> #include <66/constants.h> #include <66/utils.h> +#include <66/resolve.h> int tree_switch_current(char const *base, char const *treename) @@ -35,14 +36,14 @@ int tree_switch_current(char const *base, char const *treename) log_flow() ; ssize_t r ; + size_t baselen = strlen(base), treelen = strlen(treename), newlen = 0, packlen = 0 ; + resolve_tree_t tres = RESOLVE_TREE_ZERO ; + resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ; char pack[UID_FMT] ; - size_t baselen = strlen(base) ; - size_t treelen = strlen(treename) ; - size_t newlen ; - size_t packlen ; + char dst[baselen + SS_TREE_CURRENT_LEN + 1 + packlen + treelen + 2 + 1] ; + packlen = uint_fmt(pack,MYUID) ; pack[packlen] = 0 ; - char dst[baselen + SS_TREE_CURRENT_LEN + 1 + packlen + treelen + 2 + 1] ; auto_strings(dst,base,SS_SYSTEM,"/",treename) ; @@ -65,5 +66,10 @@ int tree_switch_current(char const *base, char const *treename) if (!atomic_symlink(dst, current,"tree_switch_current")) return 0 ; + if (!resolve_modify_field_g(wres, base, SS_MASTER + 1, TREE_ENUM_CURRENT, treename)) + log_warnu_return(LOG_EXIT_ZERO, "modify field: ", resolve_tree_field_table[TREE_ENUM_CURRENT].field," of tree: ", SS_MASTER + 1, " with value: ", treename) ; + + resolve_free(wres) ; + return 1 ; } -- GitLab