From 5218114520e47f50bef59606d32d9434ee4b6f47 Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Thu, 3 Mar 2016 12:59:18 +0100 Subject: [PATCH 6/9] rpmmd diskusage: prepend a '/' to the dir if not already there Makes the code consistent with repo_susetags. --- ext/repo_rpmmd.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/ext/repo_rpmmd.c b/ext/repo_rpmmd.c index 5ef5c25..78264cc 100644 --- a/ext/repo_rpmmd.c +++ b/ext/repo_rpmmd.c @@ -1014,15 +1014,24 @@ startElement(void *userData, const char *name, const char **atts) { long filesz = 0, filenum = 0; Id dirid; - if ((str = find_attr("name", atts)) != 0) - dirid = repodata_str2dir(pd->data, str, 1); - else - { + if ((str = find_attr("name", atts)) == 0) + { pd->ret = pool_error(pool, -1, " tag without 'name' attribute"); break; - } - if (!dirid) - dirid = repodata_str2dir(pd->data, "/", 1); + } + if (*str != '/') + { + int l = strlen(str) + 2; + if (l > pd->acontent) + { + pd->content = solv_realloc(pd->content, l + 256); + pd->acontent = l + 256; + } + *pd->content = '/'; + strcpy(pd->content + 1, str); + str = pd->content; + } + dirid = repodata_str2dir(pd->data, str, 1); if ((str = find_attr("size", atts)) != 0) filesz = strtol(str, 0, 0); if ((str = find_attr("count", atts)) != 0) -- 2.5.0