- struct ppa_stats *ppastats;
- struct binary_package_publishing_history **history;
- struct binary_package_publishing_history **h_cur;
- struct binary_package_publishing_history *h;
- char *ppa_url, *package_name, *package_version;
- struct package_stats *package;
+ struct daily_download_total **cur;
+ struct daily_download_total **result;
+
+ result = total1;
+ cur = total2;
+ while (*cur) {
+ result = add_total(result, *cur);
+
+ cur++;
+ }
+
+ return result;
+}
+
+static void
+pkg_add_distro(struct package_stats *pkg,
+ const char *distro_name,
+ int distro_count,
+ struct daily_download_total **ddts)
+{
+ struct distro_stats **pkg_distros, *pkg_distro;
+
+ pkg_distros = pkg->distros;
+ pkg_distro = NULL;
+
+ if (pkg_distros)
+ while (*pkg_distros) {
+ if (!strcmp((*pkg_distros)->name, distro_name)) {
+ pkg_distro = *pkg_distros;
+ break;
+ }
+
+ pkg_distros++;
+ }
+
+ if (!pkg_distro) {
+ pkg_distro = distro_stats_new(distro_name);
+ pkg->distros
+ = (struct distro_stats **)
+ list_add((void **)pkg->distros, (void *)pkg_distro);
+ }
+
+ pkg_distro->download_count += distro_count;
+ pkg_distro->ddts = add_totals(pkg_distro->ddts, ddts);
+}
+
+struct ppa_stats *
+create_ppa_stats(const char *owner,
+ const char *ppa_name,
+ const char *package_status)
+{
+ struct ppa_stats *ppa;
+ struct bpph **history, **h_cur, *h;
+ char *ppa_url, *pkg_name, *pkg_version;
+ struct package_stats *pkg;