diff --git a/src/lib66/parse/parse_compute_resolve.c b/src/lib66/parse/parse_compute_resolve.c index 845584c66a484d0b17e3941de5483d5498d61c55..f55bd73bb1a808ad0c556eadd6e0a66815918723 100644 --- a/src/lib66/parse/parse_compute_resolve.c +++ b/src/lib66/parse/parse_compute_resolve.c @@ -114,18 +114,23 @@ static uint32_t compute_log_dir(resolve_wrapper_t_ref wres, resolve_service_t *r log_flow() ; size_t namelen = strlen(res->sa.s + res->name) ; - size_t syslen = res->owner ? strlen(res->sa.s + res->path.home) + strlen(SS_LOGGER_USERDIR) + strlen(SS_USER_DIR) : strlen(SS_LOGGER_SYSDIR) ; + size_t syslen = res->owner ? strlen(res->sa.s + res->path.home) + strlen(SS_LOGGER_USERDIR) : strlen(SS_LOGGER_SYSDIR) ; size_t dstlen = res->logger.destination ? strlen(res->sa.s + res->logger.destination) : strlen(SS_LOGGER_SYSDIR) ; char dstlog[syslen + dstlen + namelen + 1] ; if (!res->logger.destination) { - if (res->owner) - // + strlen(SS_USER_DIR) to avoid double SS_USER_DIR e.g. /home/<user>/.66/.66/log - auto_strings(dstlog, res->sa.s + res->path.home, SS_LOGGER_USERDIR + strlen(SS_USER_DIR), res->sa.s + res->name) ; + if (res->owner) { + + char home[SS_MAX_PATH_LEN + 1 + strlen(SS_LOGGER_USERDIR) + 1] ; - else + if (!set_ownerhome_stack(home)) + log_dieusys(LOG_EXIT_SYS,"set home directory") ; + + auto_strings(dstlog, home, SS_LOGGER_USERDIR, res->sa.s + res->name) ; + + } else auto_strings(dstlog, SS_LOGGER_SYSDIR, res->sa.s + res->name) ;