X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fppastats.c;h=aa07ba9fe51755b3e1861a419def0760624c720b;hb=a7b62fd8f906191e2932a35dda971a07e057f292;hp=754cf4e1aa76bab377e8f4f302770dcdd06370bd;hpb=46db2198db02ed75562dd331d68ddbbbb1f1cff4;p=ppastats.git diff --git a/src/ppastats.c b/src/ppastats.c index 754cf4e..aa07ba9 100644 --- a/src/ppastats.c +++ b/src/ppastats.c @@ -1,20 +1,20 @@ /* - * Copyright (C) 2011-2014 jeanfi@gmail.com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301 USA + Copyright (C) 2011-2014 jeanfi@gmail.com + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA */ #include @@ -24,10 +24,10 @@ #include #include -#include "list.h" -#include "lp_ws.h" +#include +#include #include -#include "ppastats.h" +#include static struct package_stats *get_package_stats(struct ppa_stats *stats, const char *name) @@ -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,12 +108,31 @@ 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) { - struct distro_stats **cur = version->distros; - struct distro_stats *d; - struct distro_stats **tmp; + struct distro_stats **cur, *d, **tmp; + + cur = version->distros; while (cur && *cur) { d = *cur; @@ -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; @@ -228,7 +251,8 @@ pkg_add_distro(struct package_stats *pkg, pkg_distro = distro_stats_new(distro_name); tmp = (struct distro_stats **)list_add((void **)pkg->distros, (void *)pkg_distro); - free(pkg->distros); + if (pkg->distros != tmp) + free(pkg->distros); pkg->distros = tmp; } @@ -335,54 +359,23 @@ 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); } } static void version_stats_free(struct version_stats *version) { - struct distro_stats **distros; - - distros = version->distros; - if (distros) { - while (*distros) { - distro_stats_free(*distros); - distros++; - } - free(version->distros); - } - + distro_stats_list_free(version->distros); daily_download_total_list_free(version->daily_download_totals); free(version->version);