X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fppastats.c;h=aa07ba9fe51755b3e1861a419def0760624c720b;hb=a7b62fd8f906191e2932a35dda971a07e057f292;hp=9ce7dee1bccf53d1a7a30ab7841c6baf4728af8e;hpb=420bf860b4cc35c49af96c000f6e72a39bbe51fb;p=ppastats.git diff --git a/src/ppastats.c b/src/ppastats.c index 9ce7dee..aa07ba9 100644 --- a/src/ppastats.c +++ b/src/ppastats.c @@ -89,6 +89,12 @@ static struct version_stats *get_version_stats(struct package_stats *package, return v; } +static void arch_stats_free(struct arch_stats *arch) +{ + free(arch->name); + free(arch); +} + static struct distro_stats *distro_stats_new(const char *name) { struct distro_stats *d; @@ -102,6 +108,25 @@ static struct distro_stats *distro_stats_new(const char *name) return d; } +static void distro_stats_free(struct distro_stats *distro) +{ + struct arch_stats **archs; + + archs = distro->archs; + if (archs) { + while (*archs) { + arch_stats_free(*archs); + archs++; + } + free(distro->archs); + } + + daily_download_total_list_free(distro->ddts); + + free(distro->name); + free(distro); +} + static struct distro_stats *get_distro_stats(struct version_stats *version, const char *name) { @@ -120,9 +145,8 @@ static struct distro_stats *get_distro_stats(struct version_stats *version, d = distro_stats_new(name); - tmp = (struct distro_stats **)list_add((void **)version->distros, - d); + d); free(version->distros); version->distros = tmp; @@ -132,10 +156,9 @@ static struct distro_stats *get_distro_stats(struct version_stats *version, static struct arch_stats *get_arch_stats(struct distro_stats *distro, const char *name) { - struct arch_stats **cur = distro->archs; - struct arch_stats *a; - struct arch_stats **tmp; + struct arch_stats **cur, *a, **tmp; + cur = distro->archs; while (cur && *cur) { a = *cur; @@ -336,37 +359,15 @@ create_ppa_stats(const char *owner, return ppa; } -static void arch_stats_free(struct arch_stats *arch) -{ - free(arch->name); - free(arch); -} - -static void distro_stats_free(struct distro_stats *distro) -{ - struct arch_stats **archs; - - archs = distro->archs; - if (archs) { - while (*archs) { - arch_stats_free(*archs); - archs++; - } - free(distro->archs); - } - - daily_download_total_list_free(distro->ddts); - - free(distro->name); - free(distro); -} - static void distro_stats_list_free(struct distro_stats **distros) { + struct distro_stats **cur; + if (distros) { - while (*distros) { - distro_stats_free(*distros); - distros++; + cur = distros; + while (*cur) { + distro_stats_free(*cur); + cur++; } free(distros); }