From 7e5462aa48e3a452bbe2e50e369ac205a753563b Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Mon, 1 Apr 2019 17:25:23 +1100
Subject: [PATCH] pass info_walk func from void to int

---
 src/66/66-info.c | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/66/66-info.c b/src/66/66-info.c
index f516d276..68f27b20 100644
--- a/src/66/66-info.c
+++ b/src/66/66-info.c
@@ -16,6 +16,7 @@
 #include <sys/stat.h>
 #include <locale.h>
 #include <langinfo.h>
+#include <stdio.h>
 
 #include <oblibs/obgetopt.h>
 #include <oblibs/error2.h>
@@ -41,7 +42,7 @@
 
 #include <s6/s6-supervise.h>//s6_svc_ok
 
-#include <stdio.h>
+
 
 unsigned int VERBOSITY = 1 ;
 static stralloc base = STRALLOC_ZERO ;
@@ -324,13 +325,13 @@ int info_cmpnsort(genalloc *ga)
 	return 1 ;
 }
 
-void info_walk(ss_resolve_t *res,char const *src,int reverse, depth_t *depth)
+int info_walk(ss_resolve_t *res,char const *src,int reverse, depth_t *depth)
 {
 	genalloc gadeps = GENALLOC_ZERO ;
 	ss_resolve_t dres = RESOLVE_ZERO ;
 	
 	if((!res->ndeps) || (depth->level > MAXDEPTH))
-		goto err ;
+		goto freed ;
 
 	if (!clean_val(&gadeps,res->sa.s + res->deps)) goto err ;
 	if (reverse) genalloc_reverse(stralist,&gadeps) ;
@@ -366,14 +367,18 @@ void info_walk(ss_resolve_t *res,char const *src,int reverse, depth_t *depth)
 				else 
 					d.prev = NULL;
 			}
-			info_walk(&dres,src,reverse,&d);
+			if (!info_walk(&dres,src,reverse,&d)) goto err;
 			depth->next = NULL;
 		}
 	}
-	
+	freed:
+	ss_resolve_free(&dres) ;
+	genalloc_deepfree(stralist,&gadeps,stra_free) ;
+	return 1 ;
 	err: 
 		ss_resolve_free(&dres) ;
 		genalloc_deepfree(stralist,&gadeps,stra_free) ;
+		return 0 ;
 }
 
 /** what = 0 -> complete tree
@@ -385,7 +390,7 @@ int graph_display(char const *tree,char const *name,unsigned int what)
 	genalloc tokeep = GENALLOC_ZERO ; //stralist
 	ss_resolve_graph_t graph = RESOLVE_GRAPH_ZERO ;
 	stralloc inres = STRALLOC_ZERO ;
-	e = 1 ;
+	e = 0 ;
 	
 	size_t treelen = strlen(tree) ;
 	char src[treelen + SS_SVDIRS_LEN + 1] ;
@@ -403,7 +408,7 @@ int graph_display(char const *tree,char const *name,unsigned int what)
 		NULL,
 		1
 	} ;	
-	
+
 	if (!what)
 	{
 		if (!dir_get(&tokeep,srcres,SS_MASTER+1,S_IFREG)) goto err ;
@@ -411,6 +416,7 @@ int graph_display(char const *tree,char const *name,unsigned int what)
 		{
 			for (unsigned int i = 0 ; i < genalloc_len(stralist,&tokeep) ; i++)
 			{
+				
 				if (!ss_resolve_check(src,gaistr(&tokeep,i))) goto err ;
 				if (!ss_resolve_read(&res,src,gaistr(&tokeep,i))) goto err ;
 				if (!ss_resolve_graph_build(&graph,&res,src,REVERSE)) goto err ;
@@ -429,7 +435,7 @@ int graph_display(char const *tree,char const *name,unsigned int what)
 			ss_resolve_init(&res) ;
 			res.ndeps = genalloc_len(ss_resolve_t,&graph.sorted) ;
 			res.deps = ss_resolve_add_string(&res,inres.s) ;
-			info_walk(&res,src,0,&d) ;
+			if(!info_walk(&res,src,0,&d)) goto err ;
 		}
 		else
 		{
@@ -440,14 +446,15 @@ int graph_display(char const *tree,char const *name,unsigned int what)
 	{
 		if (!ss_resolve_check(src,name)) goto err ;
 		if (!ss_resolve_read(&res,src,name)) goto err ;
-		info_walk(&res,src,REVERSE,&d) ;
+		/*if (res.disen)*/ if(!info_walk(&res,src,REVERSE,&d)) goto err ;
+		
 	}
 	
 	ss_resolve_free(&res) ;
 	genalloc_deepfree(stralist,&tokeep,stra_free) ;
 	ss_resolve_graph_free(&graph) ;
 	stralloc_free(&inres) ;
-	return e ;
+	return 1 ;
 	
 	empty:
 		e = -1 ;
@@ -557,7 +564,7 @@ int tree_args(int argc, char const *const *argv)
 			r = graph_display(tree.s,"",0) ;
 			if (r < 0)
 			{
-				if (!bprintf(buffer_1," %s ","nothing to display")) goto err ;
+				if (!bprintf(buffer_1,"%s","nothing to display")) goto err ;
 				if (buffer_putflush(buffer_1,"\n",1) < 0) goto err ;
 			}else if (!r) goto err ;
 			if (buffer_putflush(buffer_1,"\n",1) < 0) goto err ;		
@@ -735,7 +742,7 @@ int sv_args(int argc, char const *const *argv,char const *const *envp)
 		if (res.type == BUNDLE){ if (!info_print_title("contents")) goto err ; }
 		else if (!info_print_title("dependencies")) goto err ;
 	
-		if (!graph_display(tree.s,svname,1)) strerr_diefu2x(111,"display graph of tree: ", treename.s) ;
+		if (!graph_display(tree.s,svname,1)) strerr_diefu2x(111,"display dependencies of: ", svname) ;
 		
 	}
 	/** scripts*/
-- 
GitLab