diff --git a/src/lib66/resolve/resolve_write_g.c b/src/lib66/resolve/resolve_write_g.c index ca225ce730dbb69e61dac1ab12599a49c225b57d..5a094de225c0593ba2626b96b3bc31c5565dfce0 100644 --- a/src/lib66/resolve/resolve_write_g.c +++ b/src/lib66/resolve/resolve_write_g.c @@ -27,7 +27,7 @@ int resolve_write_g(resolve_wrapper_t *wres, char const *base, char const *name) size_t baselen = strlen(base) ; size_t namelen = strlen(name) ; - char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + SS_SERVICE_LEN + 1 + namelen + 1] ; + char path[baselen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + namelen + 1] ; if (wres->type == DATA_SERVICE) { diff --git a/src/lib66/service/service_resolve_write.c b/src/lib66/service/service_resolve_write.c index 65355b859c9323e4b0303eeb5aeafe6e572ea90c..b8cd0d30a69eaa4221c18f726700bc23ed62ebba 100644 --- a/src/lib66/service/service_resolve_write.c +++ b/src/lib66/service/service_resolve_write.c @@ -30,18 +30,21 @@ int service_resolve_write(resolve_service_t *res) int r, e = 0 ; char *name = res->sa.s + res->name ; - size_t namelen = strlen(name) ; - char sym[strlen(res->sa.s + res->path.home) + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + namelen + 1] ; - char dst[strlen(res->sa.s + res->path.home) + SS_SYSTEM_LEN + SS_SERVICE_LEN + 1] ; + size_t namelen = strlen(name), homelen = strlen(res->sa.s + res->path.home) ; + char sym[homelen + SS_SYSTEM_LEN + SS_RESOLVE_LEN + SS_SERVICE_LEN + 1 + namelen + 1] ; + char dst[homelen + SS_SYSTEM_LEN + SS_SERVICE_LEN + SS_SVC_LEN + 1 + namelen + 1] ; + resolve_wrapper_t_ref wres = resolve_set_struct(DATA_SERVICE, res) ; auto_strings(sym, res->sa.s + res->path.home, SS_SYSTEM, SS_RESOLVE, SS_SERVICE, "/", name) ; - auto_strings(dst, res->sa.s + res->path.home, SS_SYSTEM, SS_SERVICE) ; + auto_strings(dst, res->sa.s + res->path.home, SS_SYSTEM, SS_SERVICE, SS_SVC, "/", name) ; + log_trace("write resolve file: ",dst, SS_RESOLVE, "/", name) ; if (!resolve_write(wres, dst, name)) goto err ; + log_trace("symlink: ", sym, " to: ", dst) ; r = symlink(dst, sym) ; if (r < 0 && errno != EEXIST) { log_warnusys("point symlink: ", sym, " to: ", dst) ;