From 37946aa91058d92aac823344d52f4c632cca6159 Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Sat, 15 Oct 2022 23:39:54 +1100
Subject: [PATCH] use new resolve file format

---
 src/lib66/environ/env_compute.c           | 36 ++++++++++++-----------
 src/lib66/environ/env_make_symlink.c      |  7 +++--
 src/lib66/environ/env_prepare_for_write.c | 23 +++++++--------
 src/lib66/environ/env_resolve_conf.c      |  1 -
 4 files changed, 33 insertions(+), 34 deletions(-)

diff --git a/src/lib66/environ/env_compute.c b/src/lib66/environ/env_compute.c
index fb2399e6..3d7c6b77 100644
--- a/src/lib66/environ/env_compute.c
+++ b/src/lib66/environ/env_compute.c
@@ -21,21 +21,23 @@
 #include <skalibs/stralloc.h>
 
 #include <66/environ.h>
+#include <66/service.h>
 #include <66/parser.h>
 
 
-int env_compute(stralloc *result,sv_alltype *sv, uint8_t conf)
+int env_compute(stralloc *result, resolve_service_t *res)
 {
     log_flow() ;
 
     int r ;
-    char *version = keep.s + sv->cname.version ;
-    char *svconf = keep.s + sv->srconf ;
-    char *name = keep.s + sv->cname.name ;
+    uint32_t conf = res->environ.env_overwrite ;
+    char *version = res->sa.s + res->version ;
+    char *svconf = res->sa.s + res->environ.envdir ;
+    char *name = res->sa.s + res->name ;
     size_t svconf_len = strlen(svconf), version_len = strlen(version) ;
     char src[svconf_len + 1 + version_len + 1] ;
 
-    auto_strings(src,svconf,"/",version) ;
+    auto_strings(src, svconf, "/", version) ;
 
     /** previous version, this is the current version before
      * the switch with env_make_symlink() */
@@ -45,40 +47,40 @@ int env_compute(stralloc *result,sv_alltype *sv, uint8_t conf)
 
     /** store current configure file version before the switch
      * of the symlink with the env_make_symlink() function */
-    r = env_find_current_version(&pversion,svconf) ;
+    r = env_find_current_version(&pversion, svconf) ;
 
     if (r == -1)
-        log_warnu_return(LOG_EXIT_ZERO,"find previous configuration file version") ;
+        log_warnu_return(LOG_EXIT_ZERO, "find previous configuration file version") ;
 
-    if(!env_make_symlink(sv))
+    if(!env_make_symlink(res))
         return 0 ;
 
     /** !r means that previous version doesn't exist, no need to import anything */
     if (r && !conf) {
 
-        r = env_find_current_version(&fversion,svconf) ;
+        r = env_find_current_version(&fversion, svconf) ;
         /** should never happen, the env_make_symlink() die in case of error */
         if (r <= 0)
-            log_warnu_return(LOG_EXIT_ZERO,"find current configuration file version") ;
+            log_warnu_return(LOG_EXIT_ZERO, "find current configuration file version") ;
 
         char pv[pversion.len + 1] ;
         char fv[fversion.len + 1] ;
 
-        if (!ob_basename(pv,pversion.s))
-            log_warnu_return(LOG_EXIT_ZERO,"get basename of: ",pversion.s) ;
+        if (!ob_basename(pv, pversion.s))
+            log_warnu_return(LOG_EXIT_ZERO, "get basename of: ", pversion.s) ;
 
-        if (!ob_basename(fv,fversion.s))
-            log_warnu_return(LOG_EXIT_ZERO,"get basename of: ",fversion.s) ;
+        if (!ob_basename(fv, fversion.s))
+            log_warnu_return(LOG_EXIT_ZERO, "get basename of: ", fversion.s) ;
 
-        if (!env_import_version_file(name,svconf,pv,fv,sv->cname.itype))
+        if (!env_import_version_file(name, svconf, pv, fv, res->type))
             return 0 ;
 
     }
 
     if (!auto_stra(result, \
     "## [STARTWARN]\n## DO NOT MODIFY THIS FILE, IT OVERWRITTEN AT UPGRADE TIME.\n## Uses \'66-env ", \
-    name,"\' command instead.\n## Or make a copy of this file at ",src,"/",name, \
-    " and modify it.\n## [ENDWARN]\n",sv->saenv.s))
+    name,"\' command instead.\n## Or make a copy of this file at ", src, "/", name, \
+    " and modify it.\n## [ENDWARN]\n", res->sa.s + res->environ.env))
         log_warnu_return(LOG_EXIT_ZERO,"stralloc") ;
 
     stralloc_free(&pversion) ;
diff --git a/src/lib66/environ/env_make_symlink.c b/src/lib66/environ/env_make_symlink.c
index e47a5e4a..ca4c0857 100644
--- a/src/lib66/environ/env_make_symlink.c
+++ b/src/lib66/environ/env_make_symlink.c
@@ -23,14 +23,15 @@
 #include <66/environ.h>
 #include <66/parser.h>
 #include <66/constants.h>
+#include <66/service.h>
 
-int env_make_symlink(sv_alltype *sv)
+int env_make_symlink(resolve_service_t *res)
 {
     log_flow() ;
 
     /** svconf-> /etc/66/conf/<service_name> */
-    char *svconf = keep.s + sv->srconf ;
-    char *version = keep.s + sv->cname.version ;
+    char *svconf = res->sa.s + res->environ.envdir ;
+    char *version = res->sa.s + res->version ;
     size_t version_len = strlen(version), svconf_len = strlen(svconf) ;
     char sym_version[svconf_len + SS_SYM_VERSION_LEN + 1] ;
 
diff --git a/src/lib66/environ/env_prepare_for_write.c b/src/lib66/environ/env_prepare_for_write.c
index 0a5082cb..49063b78 100644
--- a/src/lib66/environ/env_prepare_for_write.c
+++ b/src/lib66/environ/env_prepare_for_write.c
@@ -23,30 +23,27 @@
 
 #include <66/environ.h>
 #include <66/constants.h>
+#include <66/service.h>
 #include <66/parser.h>
 
-
-int env_prepare_for_write(stralloc *name, stralloc *dst, stralloc *contents, sv_alltype *sv,uint8_t conf)
+int env_prepare_for_write(stralloc *dst, stralloc *contents, resolve_service_t *res)
 {
     log_flow() ;
 
-    char *svconf = keep.s + sv->srconf ;
-    size_t svconf_len = strlen(svconf) ;
-    char sym[svconf_len + SS_SYM_VERSION_LEN + 1] ;
+    char *conf = res->sa.s + res->environ.envdir ;
+    size_t conflen = strlen(conf) ;
+    char sym[conflen + SS_SYM_VERSION_LEN + 1] ;
 
-    auto_strings(sym,svconf,SS_SYM_VERSION) ;
+    auto_strings(sym, conf, SS_SYM_VERSION) ;
 
-    if (!env_compute(contents,sv,conf))
-        log_warnu_return(LOG_EXIT_ZERO,"compute environment") ;
+    if (!env_compute(contents, res))
+        log_warnu_return(LOG_EXIT_ZERO, "compute environment") ;
 
     if (sareadlink(dst, sym) == -1)
-        log_warnusys_return(LOG_EXIT_ZERO,"read link of: ",sym) ;
+        log_warnusys_return(LOG_EXIT_ZERO, "read link of: ", sym) ;
 
     if (!stralloc_0(dst))
-        log_warnusys_return(LOG_EXIT_ZERO,"stralloc") ;
-
-    if (!auto_stra(name,".",keep.s + sv->cname.name))
-        log_warnusys_return(LOG_EXIT_ZERO,"stralloc") ;
+        log_warnusys_return(LOG_EXIT_ZERO, "stralloc") ;
 
     return 1 ;
 }
diff --git a/src/lib66/environ/env_resolve_conf.c b/src/lib66/environ/env_resolve_conf.c
index 842814b4..26317898 100644
--- a/src/lib66/environ/env_resolve_conf.c
+++ b/src/lib66/environ/env_resolve_conf.c
@@ -13,7 +13,6 @@
  */
 
 #include <sys/types.h>
-#include <string.h>
 
 #include <oblibs/log.h>
 #include <oblibs/string.h>
-- 
GitLab