projects
/
ppastats.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
some cleanup
[ppastats.git]
/
src
/
ppastats.c
diff --git
a/src/ppastats.c
b/src/ppastats.c
index
56293d5
..
74ed02b
100644
(file)
--- a/
src/ppastats.c
+++ b/
src/ppastats.c
@@
-161,8
+161,7
@@
static struct arch_stats *get_arch_stats(struct distro_stats *distro,
static struct daily_download_total **add_total
(struct daily_download_total **totals, struct daily_download_total *total)
{
static struct daily_download_total **add_total
(struct daily_download_total **totals, struct daily_download_total *total)
{
- struct daily_download_total **cur, **result;
- struct daily_download_total *item;
+ struct daily_download_total **cur, **result, *item;
if (totals) {
cur = totals;
if (totals) {
cur = totals;
@@
-180,28
+179,24
@@
static struct daily_download_total **add_total
}
}
}
}
- item = malloc(sizeof(struct daily_download_total));
- memcpy(item, total, sizeof(struct daily_download_total));
-
- result = (struct daily_download_total **)
- list_add((void **)totals, (void *)item);
-
- free(totals);
+ result = (struct daily_download_total **)list_add((void **)totals,
+ ddt_clone(total));
return result;
}
return result;
}
-struct daily_download_total **add_totals
+st
atic st
ruct daily_download_total **add_totals
(struct daily_download_total **total1, struct daily_download_total **total2)
{
(struct daily_download_total **total1, struct daily_download_total **total2)
{
- struct daily_download_total **cur;
- struct daily_download_total **result;
+ struct daily_download_total **cur, **result, **tmp;
result = total1;
cur = total2;
while (*cur) {
result = total1;
cur = total2;
while (*cur) {
- result = add_total(result, *cur);
-
+ tmp = add_total(result, *cur);
+ if (result != total1 && result != tmp)
+ free(result);
+ result = tmp;
cur++;
}
cur++;
}
@@
-215,6
+210,7
@@
pkg_add_distro(struct package_stats *pkg,
struct daily_download_total **ddts)
{
struct distro_stats **pkg_distros, *pkg_distro, **tmp;
struct daily_download_total **ddts)
{
struct distro_stats **pkg_distros, *pkg_distro, **tmp;
+ struct daily_download_total **tmp_ddts;
pkg_distros = pkg->distros;
pkg_distro = NULL;
pkg_distros = pkg->distros;
pkg_distro = NULL;
@@
-231,15
+227,18
@@
pkg_add_distro(struct package_stats *pkg,
if (!pkg_distro) {
pkg_distro = distro_stats_new(distro_name);
if (!pkg_distro) {
pkg_distro = distro_stats_new(distro_name);
- tmp
- = (struct distro_stats **)
- list_add((void **)pkg->distros, (void *)pkg_distro);
+ tmp = (struct distro_stats **)list_add((void **)pkg->distros,
+ (void *)pkg_distro);
free(pkg->distros);
pkg->distros = tmp;
}
pkg_distro->download_count += distro_count;
free(pkg->distros);
pkg->distros = tmp;
}
pkg_distro->download_count += distro_count;
- pkg_distro->ddts = add_totals(pkg_distro->ddts, ddts);
+
+ tmp_ddts = add_totals(pkg_distro->ddts, ddts);
+ if (pkg_distro->ddts && pkg_distro->ddts != tmp_ddts)
+ free(pkg_distro->ddts);
+ pkg_distro->ddts = tmp_ddts;
}
struct ppa_stats *
}
struct ppa_stats *
@@
-258,7
+257,7
@@
create_ppa_stats(const char *owner,
struct distro_stats *distro;
struct arch_stats *arch;
int count;
struct distro_stats *distro;
struct arch_stats *arch;
int count;
- struct daily_download_total **totals;
+ struct daily_download_total **totals
, **tmp
;
ppa_url = get_archive_url(owner, ppa_name);
history = get_bpph_list(ppa_url, package_status, ws_size);
ppa_url = get_archive_url(owner, ppa_name);
history = get_bpph_list(ppa_url, package_status, ws_size);
@@
-293,18
+292,24
@@
create_ppa_stats(const char *owner,
= get_distro_series(arch_series->distroseries_link);
ppa->download_count += count;
= get_distro_series(arch_series->distroseries_link);
ppa->download_count += count;
- ppa->daily_download_totals
- = add_totals(ppa->daily_download_totals, totals);
+ tmp = add_totals(ppa->daily_download_totals, totals);
+ if (ppa->daily_download_totals != tmp)
+ free(ppa->daily_download_totals);
+ ppa->daily_download_totals = tmp;
pkg = get_package_stats(ppa, pkg_name);
pkg->download_count += count;
pkg = get_package_stats(ppa, pkg_name);
pkg->download_count += count;
- pkg->daily_download_totals
- = add_totals(pkg->daily_download_totals, totals);
+ tmp = add_totals(pkg->daily_download_totals, totals);
+ if (pkg->daily_download_totals != tmp)
+ free(pkg->daily_download_totals);
+ pkg->daily_download_totals = tmp;
version = get_version_stats(pkg, pkg_version);
version->download_count += count;
version = get_version_stats(pkg, pkg_version);
version->download_count += count;
- version->daily_download_totals
- = add_totals(version->daily_download_totals, totals);
+ tmp = add_totals(version->daily_download_totals, totals);
+ if (version->daily_download_totals != tmp)
+ free(version->daily_download_totals);
+ version->daily_download_totals = tmp;
distro = get_distro_stats(version, distro_series->name);
distro->download_count += count;
distro = get_distro_stats(version, distro_series->name);
distro->download_count += count;
@@
-345,6
+350,16
@@
static void distro_stats_free(struct distro_stats *distro)
free(distro);
}
free(distro);
}
+static void distro_stats_list_free(struct distro_stats **distros)
+{
+ if (distros) {
+ while (*distros) {
+ distro_stats_free(*distros);
+ distros++;
+ }
+ }
+}
+
static void version_stats_free(struct version_stats *version)
{
struct distro_stats **distros;
static void version_stats_free(struct version_stats *version)
{
struct distro_stats **distros;
@@
-374,7
+389,7
@@
static void package_stats_free(struct package_stats *package)
}
free(package->versions);
}
}
free(package->versions);
}
-
+ distro_stats_list_free(package->distros);
free(package->name);
free(package);
}
free(package->name);
free(package);
}