From 0ebd554b91fa5623aef6deccfa1e1ffa57eced02 Mon Sep 17 00:00:00 2001 From: obarun <eric@obarun.org> Date: Wed, 1 Dec 2021 10:10:27 +1100 Subject: [PATCH] use of new sastr_dir_get interface --- src/lib66/ss_resolve.c | 23 +++++++++++++++++------ src/lib66/ssexec_all.c | 33 ++++++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/src/lib66/ss_resolve.c b/src/lib66/ss_resolve.c index 0bf628a4..12afd2db 100644 --- a/src/lib66/ss_resolve.c +++ b/src/lib66/ss_resolve.c @@ -268,6 +268,7 @@ int ss_resolve_src(stralloc *sasrc, char const *name, char const *src,int *found stralloc sainsta = STRALLOC_ZERO ; stralloc satmp = STRALLOC_ZERO ; stralloc sort = STRALLOC_ZERO ; + char const *exclude[1] = { 0 } ; if (!ss_resolve_sort_byfile_first(&sort,src)) { @@ -307,8 +308,8 @@ int ss_resolve_src(stralloc *sasrc, char const *name, char const *src,int *found int rd = ss_resolve_service_isdir(dname,bname) ; if (rd == -1) goto err ; if (!rd) - r = sastr_dir_get(&satmp,dname,"",S_IFREG|S_IFDIR) ; - else r = sastr_dir_get(&satmp,dname,"",S_IFREG) ; + r = sastr_dir_get(&satmp,dname,exclude,S_IFREG|S_IFDIR) ; + else r = sastr_dir_get(&satmp,dname,exclude,S_IFREG) ; if (!r) { log_warnusys("get services from directory: ",dname) ; @@ -433,6 +434,12 @@ int ss_resolve_read(ss_resolve_t *res, char const *src, char const *name) return 1 ; } +/** not used + * + * + * + * + * int ss_resolve_check_insrc(ssexec_t *info, char const *name) { log_flow() ; @@ -446,6 +453,9 @@ int ss_resolve_check_insrc(ssexec_t *info, char const *name) stralloc_free(&sares) ; return 0 ; } +* +* +*/ int ss_resolve_check(char const *src, char const *name) { @@ -789,7 +799,7 @@ int ss_resolve_cmp(genalloc *ga,char const *name) { char *string = genalloc_s(ss_resolve_t,ga)[i].sa.s ; char *s = string + genalloc_s(ss_resolve_t,ga)[i].name ; - if (obstr_equal(name,s)) return 1 ; + if (!strcmp(name,s)) return 1 ; } return 0 ; } @@ -898,6 +908,7 @@ int ss_resolve_add_rdeps(genalloc *tokeep, ss_resolve_t *res, char const *src) stralloc tmp = STRALLOC_ZERO ; stralloc nsv = STRALLOC_ZERO ; ss_state_t sta = STATE_ZERO ; + char const *exclude[2] = { SS_MASTER + 1, 0 } ; char *name = res->sa.s + res->name ; size_t srclen = strlen(src), a = 0, b = 0, c = 0 ; @@ -909,7 +920,7 @@ int ss_resolve_add_rdeps(genalloc *tokeep, ss_resolve_t *res, char const *src) if (res->type == TYPE_CLASSIC) type = 0 ; else type = 1 ; - if (!sastr_dir_get(&nsv,s,SS_MASTER+1,S_IFREG)) goto err ; + if (!sastr_dir_get(&nsv,s,exclude,S_IFREG)) goto err ; if (!ss_resolve_cmp(tokeep,name) && (!obstr_equal(name,SS_MASTER+1))) { @@ -1396,7 +1407,7 @@ int ss_resolve_svtree(stralloc *svtree,char const *svname,char const *tree) size_t pos, newlen ; stralloc satree = STRALLOC_ZERO ; stralloc tmp = STRALLOC_ZERO ; - + char const *exclude[3] = { SS_BACKUP + 1, SS_RESOLVE + 1, 0 } ; if (!set_ownersysdir(svtree,owner)) { log_warnusys("set owner directory") ; goto err ; } if (!auto_stra(svtree,SS_SYSTEM)) goto err ; @@ -1412,7 +1423,7 @@ int ss_resolve_svtree(stralloc *svtree,char const *svname,char const *tree) if (!stralloc_copy(&tmp,svtree)) goto err ; - if (!sastr_dir_get(&satree, svtree->s,SS_BACKUP + 1, S_IFDIR)) { + if (!sastr_dir_get(&satree, svtree->s,exclude, S_IFDIR)) { log_warnu("get list of trees from directory: ",svtree->s) ; goto err ; } diff --git a/src/lib66/ssexec_all.c b/src/lib66/ssexec_all.c index f8dc8854..be758090 100644 --- a/src/lib66/ssexec_all.c +++ b/src/lib66/ssexec_all.c @@ -73,6 +73,7 @@ int all_doit(ssexec_t *info, unsigned int what, char const *const *envp) int r ; stralloc salist = STRALLOC_ZERO ; + char const *exclude[2] = { SS_LIVETREE_INIT, 0 } ; char ownerstr[UID_FMT] ; size_t ownerlen = uid_fmt(ownerstr,info->owner) ; @@ -90,7 +91,7 @@ int all_doit(ssexec_t *info, unsigned int what, char const *const *envp) src[info->live.len + SS_STATE_LEN + 1 + ownerlen + 1 + info->treename.len] = 0 ; - if (!sastr_dir_get(&salist,src,SS_LIVETREE_INIT,S_IFREG)) + if (!sastr_dir_get(&salist,src,exclude,S_IFREG)) log_dieusys(LOG_EXIT_SYS,"get contents of directory: ",src) ; if (salist.len) @@ -164,6 +165,7 @@ void all_unsupervise(ssexec_t *info, char const *const *envp,int what) log_flow() ; size_t newlen = info->livetree.len + 1, pos = 0 ; + char const *exclude[1] = { 0 } ; char ownerstr[UID_FMT] ; size_t ownerlen = uid_fmt(ownerstr,info->owner) ; @@ -188,7 +190,7 @@ void all_unsupervise(ssexec_t *info, char const *const *envp,int what) char livetree[newlen + info->treename.len + SS_SVDIRS_LEN + 1] ; auto_strings(livetree,info->livetree.s,"/",info->treename.s,SS_SVDIRS) ; - if (!sastr_dir_get(&salist,livetree,"",S_IFDIR)) log_dieusys(LOG_EXIT_SYS,"get service list at: ",livetree) ; + if (!sastr_dir_get(&salist,livetree,exclude,S_IFDIR)) log_dieusys(LOG_EXIT_SYS,"get service list at: ",livetree) ; livetree[newlen + info->treename.len] = 0 ; @@ -327,9 +329,30 @@ int ssexec_all(int argc, char const *const *argv,char const *const *envp,ssexec_ if (!auto_stra(&info->tree,contents.s + pos)) log_die_nomem("stralloc") ; - - r = tree_sethome(&info->tree,info->base.s,info->owner) ; - if (r < 0 || !r) log_dieusys(LOG_EXIT_SYS,"find tree: ", info->treename.s) ; + /** + * + * + * + * + * + * + * + * Attention ici avec le nouveau format de tree_sethome() + * + * + * + * + * + * + * + * + * + * + * + * + * */ + r = tree_sethome(info) ; + if (r <= 0) log_dieusys(LOG_EXIT_SYS,"find tree: ", info->treename.s) ; if (!tree_get_permissions(info->tree.s,info->owner)) log_die(LOG_EXIT_USER,"You're not allowed to use the tree: ",info->tree.s) ; -- GitLab