From cd1abee536ee7ffbed089a4542c7e9e6a4cdd19b Mon Sep 17 00:00:00 2001 From: obarun <eric@obarun.org> Date: Sun, 5 Dec 2021 17:24:10 +1100 Subject: [PATCH] pass through auto_strings function --- src/lib66/backup_cmd_switcher.c | 68 +++++++++++------------------- src/lib66/backup_make_new.c | 50 +++++++++------------- src/lib66/backup_realpath_sym.c | 27 ++++++------ src/lib66/db_compile.c | 15 ++----- src/lib66/db_find_compiled_state.c | 14 +++--- src/lib66/db_ok.c | 12 +++--- src/lib66/db_switch_to.c | 7 ++- src/lib66/db_update.c | 11 +---- 8 files changed, 76 insertions(+), 128 deletions(-) diff --git a/src/lib66/backup_cmd_switcher.c b/src/lib66/backup_cmd_switcher.c index bd1bfbe6..e16c5f92 100644 --- a/src/lib66/backup_cmd_switcher.c +++ b/src/lib66/backup_cmd_switcher.c @@ -80,28 +80,20 @@ int backup_switcher(int argc, char const *const *argv,ssexec_t *info) //base.len-- ; size_t psymlen ; char *psym = NULL ; - if (type == TYPE_CLASSIC) - { + if (type == TYPE_CLASSIC) { psym = SS_SYM_SVC ; psymlen = SS_SYM_SVC_LEN ; - } - else - { + + } else { psym = SS_SYM_DB ; psymlen = SS_SYM_DB_LEN ; } + char sym[info->base.len + SS_SYSTEM_LEN + 1 + treelen + SS_SVDIRS_LEN + 1 + psymlen + 1] ; - memcpy(sym,info->base.s,info->base.len) ; - memcpy(sym + info->base.len, SS_SYSTEM,SS_SYSTEM_LEN) ; - sym[info->base.len + SS_SYSTEM_LEN] = '/' ; - memcpy(sym + info->base.len + SS_SYSTEM_LEN + 1, tree, treelen) ; - memcpy(sym + info->base.len + SS_SYSTEM_LEN + 1 + treelen, SS_SVDIRS, SS_SVDIRS_LEN) ; - sym[info->base.len + SS_SYSTEM_LEN + 1 + treelen + SS_SVDIRS_LEN] = '/' ; - memcpy(sym + info->base.len + SS_SYSTEM_LEN + 1 + treelen + SS_SVDIRS_LEN + 1 ,psym,psymlen) ; - sym[info->base.len + SS_SYSTEM_LEN + 1 + treelen + SS_SVDIRS_LEN + 1 + psymlen] = 0 ; - - if (back) - { + auto_strings(sym, info->base.s, SS_SYSTEM, "/", tree, SS_SVDIRS, "/", psym) ; + + if (back) { + if(lstat(sym,&st) < 0) return -1 ; if(!(S_ISLNK(st.st_mode))) log_warnusys_return(LOG_EXIT_LESSONE,"find symlink: ",sym) ; @@ -122,23 +114,22 @@ int backup_switcher(int argc, char const *const *argv,ssexec_t *info) return SS_SWBACK ; } - if (change) - { + if (change) { + size_t psrclen ; size_t pbacklen ; char *psrc = NULL ; char *pback = NULL ; - if (type == TYPE_CLASSIC) - { + if (type == TYPE_CLASSIC) { psrc = SS_SVC ; psrclen = SS_SVC_LEN ; pback = SS_SVC ; pbacklen = SS_SVC_LEN ; - } - else - { + + } else { + psrc = SS_DB ; psrclen = SS_DB_LEN ; @@ -149,29 +140,18 @@ int backup_switcher(int argc, char const *const *argv,ssexec_t *info) char dstsrc[info->base.len + SS_SYSTEM_LEN + 1 + treelen + SS_SVDIRS_LEN + psrclen + 1] ; char dstback[info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN + 1 + treelen + pbacklen + 1] ; - memcpy(dstsrc, info->base.s, info->base.len) ; - memcpy(dstsrc + info->base.len, SS_SYSTEM, SS_SYSTEM_LEN) ; - dstsrc[info->base.len + SS_SYSTEM_LEN] = '/' ; - memcpy(dstsrc + info->base.len + SS_SYSTEM_LEN + 1, tree, treelen) ; - memcpy(dstsrc + info->base.len + SS_SYSTEM_LEN + 1 + treelen, SS_SVDIRS,SS_SVDIRS_LEN) ; - memcpy(dstsrc + info->base.len + SS_SYSTEM_LEN + 1 + treelen + SS_SVDIRS_LEN,psrc,psrclen) ; - dstsrc[info->base.len + SS_SYSTEM_LEN + 1 + treelen + SS_SVDIRS_LEN + psrclen] = 0 ; - - memcpy(dstback, info->base.s, info->base.len) ; - memcpy(dstback + info->base.len, SS_SYSTEM, SS_SYSTEM_LEN) ; - memcpy(dstback + info->base.len + SS_SYSTEM_LEN, SS_BACKUP, strlen(SS_BACKUP)) ; - dstback[info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN] = '/' ; - memcpy(dstback + info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN + 1, tree, treelen) ; - memcpy(dstback + info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN + 1 + treelen, pback,pbacklen) ; - dstback[info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN + 1 + treelen + pbacklen] = 0 ; - - if (what) - { + auto_strings(dstsrc, info->base.s, SS_SYSTEM, "/", tree, SS_SVDIRS, psrc) ; + + auto_strings(dstback, info->base.s, SS_SYSTEM, SS_BACKUP, "/", tree, pback) ; + + if (what) { + if (!atomic_symlink(dstback, sym,"backup_switcher")) log_warnusys_return(LOG_EXIT_LESSONE,"symlink: ", dstback) ; } - if (!what) - { + + if (!what) { + if (!atomic_symlink(dstsrc, sym,"backup_switcher")) log_warnusys_return(LOG_EXIT_LESSONE,"symlink: ", dstsrc) ; } @@ -201,7 +181,7 @@ int backup_cmd_switcher(unsigned int verbosity,char const *cmd,ssexec_t *info) newargv[m++] = "-v" ; newargv[m++] = fmt ; - for (;pos < opts.len; pos += strlen(opts.s + pos) + 1) + FOREACH_SASTR(&opts, pos) newargv[m++] = opts.s + pos ; newargv[m++] = info->treename.s ; diff --git a/src/lib66/backup_make_new.c b/src/lib66/backup_make_new.c index 355a2891..c67b9a5d 100644 --- a/src/lib66/backup_make_new.c +++ b/src/lib66/backup_make_new.c @@ -35,57 +35,45 @@ int backup_make_new(ssexec_t *info, unsigned int type) int r ; - size_t newsrc ; - size_t newback ; - size_t typelen ; + size_t newsrc, newback, typelen ; char *ptype = NULL ; - if (type == TYPE_CLASSIC) - { + if (type == TYPE_CLASSIC) { + ptype = SS_SVC ; typelen = SS_SVC_LEN ; - } - else - { + + } else { + ptype = SS_DB ; typelen = SS_DB_LEN ; } char src[info->base.len + SS_SYSTEM_LEN + 1 + info->treename.len + SS_SVDIRS_LEN + SS_RESOLVE_LEN + 1] ; - memcpy(src,info->base.s,info->base.len) ; - memcpy(src + info->base.len, SS_SYSTEM, SS_SYSTEM_LEN) ; - src[info->base.len + SS_SYSTEM_LEN] = '/' ; - memcpy(src + info->base.len + SS_SYSTEM_LEN + 1,info->treename.s,info->treename.len) ; - memcpy(src+ info->base.len + SS_SYSTEM_LEN + 1 + info->treename.len,SS_SVDIRS, SS_SVDIRS_LEN) ; + auto_strings(src, info->base.s, SS_SYSTEM, "/", info->treename.s, SS_SVDIRS, ptype) newsrc = info->base.len + SS_SYSTEM_LEN + 1 + info->treename.len + SS_SVDIRS_LEN ; - memcpy(src+ info->base.len + SS_SYSTEM_LEN + 1 + info->treename.len + SS_SVDIRS_LEN, ptype,typelen) ; - src[info->base.len + SS_SYSTEM_LEN + 1 + info->treename.len + SS_SVDIRS_LEN + typelen] = 0 ; char back[info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN + 1 + info->treename.len + SS_RESOLVE_LEN + 1] ; - memcpy(back, info->base.s, info->base.len) ; - memcpy(back + info->base.len, SS_SYSTEM, SS_SYSTEM_LEN) ; - memcpy(back + info->base.len + SS_SYSTEM_LEN, SS_BACKUP, SS_BACKUP_LEN) ; - back[info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN] = '/' ; - memcpy(back + info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN + 1, info->treename.s, info->treename.len) ; + auto_strings(back, info->base.s, SS_SYSTEM, SS_BACKUP, "/", info->treename.s, ptype) ; newback = info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN + 1 + info->treename.len ; - memcpy(back + info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN + 1 + info->treename.len, ptype,typelen) ; - back[info->base.len + SS_SYSTEM_LEN + SS_BACKUP_LEN + 1 + info->treename.len + typelen] = 0 ; r = scan_mode(back,S_IFDIR) ; - if (r || (r < 0)) - { + if (r || (r < 0)) { + log_trace("rm directory: ", back) ; if (rm_rf(back) < 0) log_warnusys_return(LOG_EXIT_ZERO,"remove: ",back) ; r = 0 ; } - if (!r) - { + + if (!r) { + log_trace("create directory: ", back) ; if (!dir_create(back,0755)) log_warnusys_return(LOG_EXIT_ZERO,"create directory: ",back) ; } + log_trace("copy: ",src," to: ", back) ; if (!hiercopy(src, back)) log_warnusys_return(LOG_EXIT_ZERO,"copy: ",src," to ",back) ; @@ -97,20 +85,22 @@ int backup_make_new(ssexec_t *info, unsigned int type) back[newback + SS_RESOLVE_LEN] = 0 ; r = scan_mode(back,S_IFDIR) ; - if (r || (r < 0)) - { + if (r || (r < 0)) { + log_trace("rm directory: ", back) ; if (rm_rf(back) < 0) log_warnusys_return(LOG_EXIT_ZERO,"remove: ",back) ; r = 0 ; } - if (!r) - { + + if (!r) { + log_trace("create directory: ", back) ; if (!dir_create(back,0755)) log_warnusys_return(LOG_EXIT_ZERO,"create directory: ",back) ; } + log_trace("copy: ",src," to: ", back) ; if (!hiercopy(src, back)) log_warnusys_return(LOG_EXIT_ZERO,"copy: ",src," to ",back) ; diff --git a/src/lib66/backup_realpath_sym.c b/src/lib66/backup_realpath_sym.c index 84d9c2a2..72eea70d 100644 --- a/src/lib66/backup_realpath_sym.c +++ b/src/lib66/backup_realpath_sym.c @@ -35,31 +35,30 @@ int backup_realpath_sym(stralloc *sa, ssexec_t *info,unsigned int type) size_t typelen ; char *ptype = 0 ; - if (type == TYPE_CLASSIC) - { + if (type == TYPE_CLASSIC) { ptype = SS_SYM_SVC ; typelen = SS_SYM_SVC_LEN; - } - else - { + + } else { + ptype = SS_SYM_DB ; typelen = SS_SYM_DB_LEN; } char sym[info->tree.len + SS_SVDIRS_LEN + 1 + typelen + 1] ; - memcpy(sym,info->tree.s,info->tree.len) ; - memcpy(sym + info->tree.len, SS_SVDIRS, SS_SVDIRS_LEN) ; - sym[info->tree.len + SS_SVDIRS_LEN] = '/' ; - memcpy(sym + info->tree.len + SS_SVDIRS_LEN + 1, ptype,typelen) ; - sym[info->tree.len + SS_SVDIRS_LEN + 1 + typelen] = '/' ; - sym[info->tree.len + SS_SVDIRS_LEN + 1 + typelen + 1] = 0 ; + auto_strings(sym, info->tree.s, SS_SVDIRS, "/", ptype, "/") ; r = scan_mode(sym,S_IFDIR) ; - if(r <= 0) return 0 ; + if(r <= 0) + return 0 ; + sa->len = 0 ; r = sarealpath(sa,sym) ; - if (r == -1 ) return 0 ; - if (!stralloc_0(sa)) log_warnsys_return(LOG_EXIT_ZERO,"stralloc") ; + if (r == -1 ) + return 0 ; + + if (!stralloc_0(sa)) + log_warnsys_return(LOG_EXIT_ZERO,"stralloc") ; return 1 ; } diff --git a/src/lib66/db_compile.c b/src/lib66/db_compile.c index 5d1db77d..9488f412 100644 --- a/src/lib66/db_compile.c +++ b/src/lib66/db_compile.c @@ -39,21 +39,14 @@ int db_compile(char const *workdir, char const *tree, char const *treename, char size_t wlen = strlen(workdir), treelen = strlen(treename) ; char dest[wlen + SS_DB_LEN + 1 + treelen + 1] ; - memcpy(dest,workdir,wlen) ; - memcpy(dest + wlen,SS_DB,SS_DB_LEN) ; - dest[wlen + SS_DB_LEN] = '/' ; - memcpy(dest + wlen + SS_DB_LEN + 1,treename,treelen) ; - dest[wlen + SS_DB_LEN + 1 + treelen] = 0 ; + auto_strings(dest, workdir, SS_DB, "/", treename) ; char src[wlen + SS_DB_LEN + SS_SRC_LEN + 1] ; - memcpy(src,workdir,wlen) ; - memcpy(src + wlen,SS_DB,SS_DB_LEN) ; - memcpy(src + wlen + SS_DB_LEN,SS_SRC,SS_SRC_LEN) ; - src[wlen + SS_DB_LEN + SS_SRC_LEN] = 0 ; + auto_strings(src, workdir, SS_DB, SS_SRC) r = scan_mode(dest,S_IFDIR) ; - if (r) - { + if (r) { + if (rm_rf(dest) < 0) log_warnusys_return(LOG_EXIT_ZERO,"remove: ", dest) ; } diff --git a/src/lib66/db_find_compiled_state.c b/src/lib66/db_find_compiled_state.c index 42a4a55d..c19d3ed9 100644 --- a/src/lib66/db_find_compiled_state.c +++ b/src/lib66/db_find_compiled_state.c @@ -31,17 +31,12 @@ int db_find_compiled_state(char const *livetree, char const *treename) log_flow() ; int r ; - size_t treelen = strlen(livetree) ; - size_t namelen = strlen(treename) ; + size_t treelen = strlen(livetree), namelen = strlen(treename) ; struct stat st ; char current[treelen + 1 + namelen + 9 + 1] ; - memcpy(current, livetree, treelen) ; - current[treelen] = '/' ; - memcpy(current + treelen + 1, treename,namelen) ; - memcpy(current + treelen + 1 + namelen, "/compiled", 9) ; - current[treelen + 1 + namelen + 9] = 0 ; + auto_strings(current, livetree, "/", treename, "/compiled") ; if(lstat(current,&st) < 0) return -1 ; if(!(S_ISLNK(st.st_mode))) @@ -50,11 +45,12 @@ int db_find_compiled_state(char const *livetree, char const *treename) stralloc symreal = STRALLOC_ZERO ; r = sarealpath(&symreal,current) ; - if (r < 0 ) - { + if (r < 0 ) { + stralloc_free(&symreal) ; log_warnu_return(LOG_EXIT_LESSONE,"find real path: ",current) ; } + char *b = NULL ; b = memmem(symreal.s,symreal.len,SS_BACKUP,SS_BACKUP_LEN) ; diff --git a/src/lib66/db_ok.c b/src/lib66/db_ok.c index 53b97c73..11c9aa35 100644 --- a/src/lib66/db_ok.c +++ b/src/lib66/db_ok.c @@ -24,18 +24,16 @@ int db_ok(char const *livetree, char const *treename) { log_flow() ; - size_t treelen = strlen(livetree) ; - size_t namelen = strlen(treename) ; + size_t treelen = strlen(livetree), namelen = strlen(treename) ; struct stat st ; char sym[treelen + 1 + namelen + 1] ; - memcpy(sym, livetree, treelen) ; - sym[treelen] = '/' ; - memcpy(sym + treelen + 1, treename,namelen) ; - sym[treelen + 1 + namelen] = 0 ; + auto_strings(sym, livetree, "/", treename) ; + + if(lstat(sym,&st) < 0) + return 0 ; - if(lstat(sym,&st) < 0) return 0 ; if(!(S_ISLNK(st.st_mode))) return 0 ; diff --git a/src/lib66/db_switch_to.c b/src/lib66/db_switch_to.c index f181eb91..5c37a094 100644 --- a/src/lib66/db_switch_to.c +++ b/src/lib66/db_switch_to.c @@ -33,7 +33,7 @@ int db_switch_to(ssexec_t *info, char const *const *envp,unsigned int where) { log_flow() ; - int r ; + int r, e = 0 ; stralloc db = STRALLOC_ZERO ; char type[UINT_FMT] ; @@ -135,10 +135,9 @@ int db_switch_to(ssexec_t *info, char const *const *envp,unsigned int where) } } - stralloc_free(&db) ; - return 1 ; + e = 1 ; err: stralloc_free(&db) ; - return 0 ; + return e ; } diff --git a/src/lib66/db_update.c b/src/lib66/db_update.c index a9a530c4..4d568bc9 100644 --- a/src/lib66/db_update.c +++ b/src/lib66/db_update.c @@ -35,18 +35,11 @@ int db_update(char const *newdb, ssexec_t *info,char const *const *envp) int wstat ; size_t newdblen = strlen(newdb) ; - char db[newdblen + 1 + info->treename.len + 1] ; - memcpy(db, newdb, newdblen) ; - memcpy(db + newdblen, "/", 1) ; - memcpy(db + newdblen + 1, info->treename.s, info->treename.len) ; - db[newdblen + 1 + info->treename.len] = 0 ; + auto_strings(db, newdb, "/", info->treename.s) ; char newlive[info->livetree.len + 1 + info->treename.len + 1] ; - memcpy(newlive, info->livetree.s,info->livetree.len) ; - memcpy(newlive + info->livetree.len , "/", 1) ; - memcpy(newlive + info->livetree.len + 1, info->treename.s,info->treename.len) ; - newlive[info->livetree.len + 1 + info->treename.len] = 0 ; + auto_strings(newlive, info->livetree.s, "/", info->treename.s) ; char const *newargv[10] ; unsigned int m = 0 ; -- GitLab