From 16a011c5a6e1d023e96e02dbd7fece73eecc998a Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Thu, 14 Mar 2019 21:56:57 +1100
Subject: [PATCH] follow ss_resolve func change

---
 src/lib66/ssexec_dbctl.c   | 28 ++++++++++++++--------------
 src/lib66/ssexec_disable.c |  7 ++++---
 src/lib66/ssexec_enable.c  | 21 ++++++++++++---------
 src/lib66/ssexec_stop.c    | 23 ++++++++---------------
 src/lib66/ssexec_svctl.c   |  7 ++++---
 5 files changed, 42 insertions(+), 44 deletions(-)

diff --git a/src/lib66/ssexec_dbctl.c b/src/lib66/ssexec_dbctl.c
index 2a54ae0d..727d1dce 100644
--- a/src/lib66/ssexec_dbctl.c
+++ b/src/lib66/ssexec_dbctl.c
@@ -98,7 +98,7 @@ int ssexec_dbctl(int argc, char const *const *argv,char const *const *envp,ssexe
 	genalloc resdeps = GENALLOC_ZERO ; //ss_resolve_t
 	genalloc toreload = GENALLOC_ZERO ;//ss_resolve_t
 	stralloc tmp = STRALLOC_ZERO ;
-	stralloc src = STRALLOC_ZERO ;
+	stralloc sares = STRALLOC_ZERO ;
 	
 	s6_svstatus_t status = S6_SVSTATUS_ZERO ;
 	
@@ -132,15 +132,15 @@ int ssexec_dbctl(int argc, char const *const *argv,char const *const *envp,ssexe
 	if (down) signal = "-d" ;
 	else signal = "-u" ;
 
-	if (!ss_resolve_pointo(&src,info,SS_NOTYPE,SS_RESOLVE_LIVE)) strerr_diefu1sys(111,"set revolve pointer to live") ;
+	if (!ss_resolve_pointo(&sares,info,SS_NOTYPE,SS_RESOLVE_LIVE)) strerr_diefu1sys(111,"set revolve pointer to live") ;
 	
 	if (argc < 1)
 	{
 		unsigned int i = 0 ;
 		genalloc tmp = GENALLOC_ZERO ;
 		ss_resolve_t res = RESOLVE_ZERO ;
-		if (!ss_resolve_check(info,mainsv,SS_RESOLVE_LIVE)) strerr_dief1sys(111,"inner bundle doesn't exit -- please make a bug report") ;
-		if (!ss_resolve_read(&res,src.s,mainsv)) strerr_diefu1sys(111,"read resolve file of inner bundle") ;
+		if (!ss_resolve_check(sares.s,mainsv)) strerr_dief1sys(111,"inner bundle doesn't exit -- please make a bug report") ;
+		if (!ss_resolve_read(&res,sares.s,mainsv)) strerr_diefu1sys(111,"read resolve file of inner bundle") ;
 		if (res.ndeps)
 		{
 			if (!clean_val(&tmp,res.sa.s + res.deps)) strerr_dief1sys(111,"retrieve dependencies of inner bundle") ;
@@ -148,8 +148,8 @@ int ssexec_dbctl(int argc, char const *const *argv,char const *const *envp,ssexe
 			{
 				ss_resolve_t dres = RESOLVE_ZERO ;
 				char *name = gaistr(&tmp,i) ;
-				if (!ss_resolve_check(info,name,SS_RESOLVE_LIVE)) strerr_dief2sys(110,"unknow service: ",name) ;
-				if (!ss_resolve_read(&dres,src.s,name)) strerr_diefu2sys(111,"read resolve file of: ",name) ;
+				if (!ss_resolve_check(sares.s,name)) strerr_dief2sys(110,"unknow service: ",name) ;
+				if (!ss_resolve_read(&dres,sares.s,name)) strerr_diefu2sys(111,"read resolve file of: ",name) ;
 				if (!ss_resolve_append(&resdeps,&dres)) strerr_diefu1sys(111,"append resolve") ;
 				if (reload) if (!ss_resolve_append(&toreload,&dres)) strerr_diefu1sys(111,"append resolve") ;
 				ss_resolve_free(&dres) ;
@@ -171,21 +171,21 @@ int ssexec_dbctl(int argc, char const *const *argv,char const *const *envp,ssexe
 		{
 			ss_resolve_t res = RESOLVE_ZERO ;
 			char const *name = *argv ;
-			if (!ss_resolve_check(info,name,SS_RESOLVE_LIVE)) strerr_dief2sys(110,"unknow service: ",name) ;
-			if (!ss_resolve_read(&res,src.s,name)) strerr_diefu2sys(111,"read resolve file of: ",name) ;
+			if (!ss_resolve_check(sares.s,name)) strerr_dief2sys(110,"unknow service: ",name) ;
+			if (!ss_resolve_read(&res,sares.s,name)) strerr_diefu2sys(111,"read resolve file of: ",name) ;
 			if (res.type == CLASSIC) strerr_dief2x(111,name," has type classic") ;
 			
 			if (up)
 			{
-				if (!ss_resolve_add_deps(&resdeps,&res,info)) strerr_diefu2sys(111,"resolve dependencies of: ",name) ;
+				if (!ss_resolve_add_deps(&resdeps,&res,sares.s)) strerr_diefu2sys(111,"resolve dependencies of: ",name) ;
 			}
 			else 
-			{
-				if (!ss_resolve_add_rdeps(&resdeps,&res,info)) strerr_diefu2sys(111,"resolve recursive dependencies of: ",name) ;
+			{ 
+				if (!ss_resolve_add_rdeps(&resdeps,&res,sares.s)) strerr_diefu2sys(111,"resolve recursive dependencies of: ",name) ;
 			}
 			if (reload)
 			{
-				if (!ss_resolve_add_rdeps(&toreload,&res,info)) strerr_diefu2sys(111,"resolve recursive dependencies of: ",name) ;
+				if (!ss_resolve_add_rdeps(&toreload,&res,sares.s)) strerr_diefu2sys(111,"resolve recursive dependencies of: ",name) ;
 			}
 			ss_resolve_free(&res) ;
 		}
@@ -258,7 +258,7 @@ int ssexec_dbctl(int argc, char const *const *argv,char const *const *envp,ssexe
 		ss_resolve_setflag(pres,SS_FLAGS_INIT,SS_FLAGS_FALSE) ;
 		ss_resolve_setflag(pres,SS_FLAGS_UNSUPERVISE,SS_FLAGS_FALSE) ;
 		VERBO2 strerr_warni2x("Write resolve file of: ",name) ;
-		if (!ss_resolve_write(pres,src.s,name,writein))
+		if (!ss_resolve_write(pres,sares.s,name,writein))
 		{
 			VERBO1 strerr_warnwu2sys("write resolve file of: ",name) ;
 			ret = 111 ;
@@ -268,7 +268,7 @@ int ssexec_dbctl(int argc, char const *const *argv,char const *const *envp,ssexe
 	
 	freed:
 	stralloc_free(&tmp) ;	
-	stralloc_free(&src) ;
+	stralloc_free(&sares) ;
 	genalloc_deepfree(ss_resolve_t,&resdeps,ss_resolve_free) ;
 	genalloc_deepfree(ss_resolve_t,&toreload,ss_resolve_free) ;
 	
diff --git a/src/lib66/ssexec_disable.c b/src/lib66/ssexec_disable.c
index 50dc51f1..accddf78 100644
--- a/src/lib66/ssexec_disable.c
+++ b/src/lib66/ssexec_disable.c
@@ -73,18 +73,19 @@ int svc_remove(genalloc *tostop,ss_resolve_t *res, char const *src,ssexec_t *inf
 	if (!stralloc_cats(&dst,"/")) goto err ;
 	newlen = dst.len ;
 
-	if (!ss_resolve_add_rdeps(&rdeps,&cp,info))
+	if (!ss_resolve_add_rdeps(&rdeps,&cp,src))
 	{
 		VERBO1 strerr_warnwu2sys("resolve recursive dependencies of: ",name) ;
 		goto err ;
 	}
 	ss_resolve_free(&cp) ;
 	
-	if (!ss_resolve_add_logger(&rdeps,info))
+	if (!ss_resolve_add_logger(&rdeps,src))
 	{
 		VERBO1 strerr_warnwu1sys("resolve logger") ;
 		goto err ;
 	}
+	genalloc_reverse(ss_resolve_t,&rdeps) ;
 	for (;i < genalloc_len(ss_resolve_t,&rdeps) ; i++)
 	{
 		ss_resolve_t_ref pres = &genalloc_s(ss_resolve_t,&rdeps)[i] ;
@@ -180,7 +181,7 @@ int ssexec_disable(int argc, char const *const *argv,char const *const *envp,sse
 				cleanup(workdir.s) ;
 				strerr_dief1x(110,"logger detected - disabling is not allowed") ;
 		}
-		if (!ss_resolve_check(info,name,SS_RESOLVE_LIVE))
+		if (!ss_resolve_check(workdir.s,name))
 		{
 				cleanup(workdir.s) ;
 				strerr_dief2x(110,name," is not enabled") ;
diff --git a/src/lib66/ssexec_enable.c b/src/lib66/ssexec_enable.c
index 21d0a6e7..2967ff0a 100644
--- a/src/lib66/ssexec_enable.c
+++ b/src/lib66/ssexec_enable.c
@@ -125,14 +125,13 @@ int ssexec_enable(int argc, char const *const *argv,char const *const *envp,ssex
 	}
 	
 	if (argc < 1) exitusage(usage_enable) ;
-	
-	
-	if (!ss_resolve_pointo(&sares,info,SS_NOTYPE,SS_RESOLVE_LIVE)) strerr_diefu1sys(111,"set revolve pointer to source") ;
+		
+	if (!ss_resolve_pointo(&sares,info,SS_NOTYPE,SS_RESOLVE_SRC)) strerr_diefu1sys(111,"set revolve pointer to source") ;
 	
 	for(;*argv;argv++)
 	{
 		check_identifier(*argv) ;
-		if (ss_resolve_check(info,*argv,SS_RESOLVE_LIVE))
+		if (ss_resolve_check(sares.s,*argv))
 		{
 			if (!ss_resolve_read(&res,sares.s,*argv)) strerr_diefu2sys(111,"read resolve file of: ",*argv) ;
 			if (res.disen && !FORCE)
@@ -142,17 +141,21 @@ int ssexec_enable(int argc, char const *const *argv,char const *const *envp,ssex
 			}
 		}
 		unsigned int found = 0 ;
-		if (!ss_resolve_src(&gasrc,&sasrc,*argv,src,&found))
+		r = ss_resolve_src(&gasrc,&sasrc,*argv,src,&found) ;
+		if (r < 0) strerr_diefu2sys(111,"parse source directory: ",src) ;
+		if (!r)
 		{
 			src = SS_SERVICE_SYSDIR ;
-			if (!ss_resolve_src(&gasrc,&sasrc,*argv,src,&found))
+			r = ss_resolve_src(&gasrc,&sasrc,*argv,src,&found) ;
+			if (r < 0) strerr_diefu2sys(111,"parse source directory: ",src) ;
+			if (!r)
 			{
 				src = SS_SERVICE_PACKDIR ;
-				if (!ss_resolve_src(&gasrc,&sasrc,*argv,src,&found))
-					strerr_dief2sys(110,"unknow service: ",*argv) ;
+				r = ss_resolve_src(&gasrc,&sasrc,*argv,src,&found) ;
+				if (r < 0) strerr_diefu2sys(111,"parse source directory: ",src) ;
+				if (!r)	strerr_dief2sys(110,"unknow service: ",*argv) ;
 			}
 		}
-		
 	}
 	ss_resolve_free(&res) ;
 	stralloc_free(&sares) ;
diff --git a/src/lib66/ssexec_stop.c b/src/lib66/ssexec_stop.c
index 5994958d..68408cd5 100644
--- a/src/lib66/ssexec_stop.c
+++ b/src/lib66/ssexec_stop.c
@@ -70,11 +70,7 @@ int svc_down(ssexec_t *info,genalloc *ga,char const *const *envp)
 	}
 	else
 	{
-		if (!svc_send(info,ga,SIG,envp))
-		{
-			VERBO1 strerr_warnwu1x("stop services") ;
-			goto err ;
-		}
+		if (!svc_send(info,ga,SIG,envp))goto err ;
 	}
 		
 	return 1 ;
@@ -182,11 +178,7 @@ int rc_down(ssexec_t *info,genalloc *ga,char const *const *envp)
 	}
 	else
 	{	
-		if (!rc_send(info,ga,"-d",envp))
-		{
-			VERBO1 strerr_warnwu1x("stop services") ;
-			goto err ;
-		}
+		if (!rc_send(info,ga,"-d",envp)) goto err ;
 	}
 	
 	stralloc_free(&sares) ;
@@ -243,14 +235,15 @@ int ssexec_stop(int argc, char const *const *argv,char const *const *envp,ssexec
 	{
 		char const *name = *argv ;
 		ss_resolve_t res = RESOLVE_ZERO ;
-		if (!ss_resolve_check(info,name,SS_RESOLVE_LIVE)) strerr_dief2x(110,name," is not enabled") ;
+		if (!ss_resolve_check(sares.s,name)) strerr_dief2x(110,name," is not enabled") ;
 		if (!ss_resolve_read(&res,sares.s,name)) strerr_diefu2sys(111,"read resolve file of: ",name) ;
-		if (!ss_resolve_add_rdeps(&gagen,&res,info)) strerr_diefu2sys(111,"resolve recursive dependencies of: ",name) ;
+		if (!ss_resolve_add_rdeps(&gagen,&res,sares.s)) strerr_diefu2sys(111,"resolve recursive dependencies of: ",name) ;
+		if (!ss_resolve_add_logger(&gagen,sares.s)) strerr_diefu1sys(111,"resolve logger") ;
 		ss_resolve_free(&res) ;
 	}
 		
 	stralloc_free(&sares) ;
-		
+	genalloc_reverse(ss_resolve_t,&gagen) ;
 	for(unsigned int i = 0 ; i < genalloc_len(ss_resolve_t,&gagen) ; i++)
 	{
 		pres = &genalloc_s(ss_resolve_t,&gagen)[i] ;
@@ -313,7 +306,7 @@ int ssexec_stop(int argc, char const *const *argv,char const *const *envp,ssexec
 	{
 		VERBO2 strerr_warni1x("stop atomic services ...") ;
 		if (!rc_down(info,&nrc,envp))
-			strerr_diefu1x(111,"update atomic services") ;
+			strerr_diefu1x(111,"stop atomic services") ;
 		VERBO2 strerr_warni3x("switch atomic services of: ",info->treename.s," to source") ;
 		if (!db_switch_to(info,envp,SS_SWSRC))
 			strerr_diefu5x(111,"switch",info->livetree.s,"/",info->treename.s," to source") ;
@@ -326,7 +319,7 @@ int ssexec_stop(int argc, char const *const *argv,char const *const *envp,ssexec
 	{
 		VERBO2 strerr_warni1x("stop classic services ...") ;
 		if (!svc_down(info,&nclassic,envp))
-			strerr_diefu1x(111,"update classic services") ;
+			strerr_diefu1x(111,"stop classic services") ;
 		VERBO2 strerr_warni3x("switch classic services of: ",info->treename.s," to source") ;
 		if (!svc_switch_to(info,SS_SWSRC))
 			strerr_diefu3x(111,"switch classic service of: ",info->treename.s," to source") ;
diff --git a/src/lib66/ssexec_svctl.c b/src/lib66/ssexec_svctl.c
index 4453339c..420fc833 100644
--- a/src/lib66/ssexec_svctl.c
+++ b/src/lib66/ssexec_svctl.c
@@ -353,14 +353,14 @@ int ssexec_svctl(int argc, char const *const *argv,char const *const *envp,ssexe
 		ss_resolve_t res = RESOLVE_ZERO ;
 		char const *name = *argv ;
 	
-		if (!ss_resolve_check(info,name,SS_RESOLVE_LIVE)) strerr_dief2sys(111,"unknow service: ",name) ;
+		if (!ss_resolve_check(sares.s,name)) strerr_dief2sys(111,"unknow service or not initialized: ",name) ;
 		if (!ss_resolve_read(&res,sares.s,name)) strerr_diefu2sys(111,"read resolve file of: ",name) ;
 		if (res.type >= BUNDLE) strerr_dief3x(111,name," has type ",get_keybyid(res.type)) ;
 		if (SIGNAL <= SIGRR)
 		{
-			if (!ss_resolve_add_deps(&resdeps,&res,info)) strerr_diefu2sys(111,"resolve dependencies of: ",name) ;
+			if (!ss_resolve_add_deps(&resdeps,&res,sares.s)) strerr_diefu2sys(111,"resolve dependencies of: ",name) ;
 		}
-		else if (!ss_resolve_add_rdeps(&resdeps,&res,info)) strerr_diefu2sys(111,"resolve dependencies of: ",name) ;
+		else if (!ss_resolve_add_rdeps(&resdeps,&res,sares.s)) strerr_diefu2sys(111,"resolve dependencies of: ",name) ;
 		ss_resolve_free(&res) ;
 	}
 	genalloc_reverse(ss_resolve_t,&resdeps) ;
@@ -373,6 +373,7 @@ int ssexec_svctl(int argc, char const *const *argv,char const *const *envp,ssexe
 		size_t svoklen = strlen(svok) ;
 		char file[svoklen + 16 + 1] ;
 		memcpy(file,svok,svoklen) ;
+		if (!s6_svc_ok(svok)) strerr_dief2x(111,string + sv_signal.res.name," : is not initiated") ;
 		if (!s6_svstatus_read(svok,&status)) strerr_diefu2sys(111,"read status of: ",svok) ;
 		isup = status.pid && !status.flagfinishing ;
 			
-- 
GitLab