do not free list in the fct
[ppastats.git] / src / lp.c
index c307a36..11866d7 100644 (file)
--- a/src/lp.c
+++ b/src/lp.c
 
 #include "list.h"
 #include "lp.h"
-
-char *time_to_str(time_t t)
-{
-       char *str;
-       struct tm *tm;
-       size_t ret;
-
-       tm = localtime(&t);
-
-       if (!tm)
-               return NULL;
-
-       str = malloc(strlen("YYYY-MM-DDThh:mm:ss") + 1);
-       ret = strftime(str, strlen("YYYY-MM-DDThh:mm:ss") + 1, "%FT%T", tm);
-
-       if (ret)
-               return str;
-
-       free(str);
-       return NULL;
-}
+#include <ptime.h>
 
 struct distro_series *distro_series_new(const char *name,
                                        const char *version,
@@ -195,7 +175,7 @@ void daily_download_total_list_free(struct daily_download_total **list)
 
 struct bpph **bpph_list_add(struct bpph **list, struct bpph *new)
 {
-       struct bpph **cur, *bpph;
+       struct bpph **cur, *bpph, **result;
 
        if (list)
                for (cur = list; *cur; cur++) {
@@ -205,7 +185,11 @@ struct bpph **bpph_list_add(struct bpph **list, struct bpph *new)
                                return list;
                }
 
-       return (struct bpph **)list_add((void **)list, new);
+       result = (struct bpph **)list_add((void **)list, new);
+
+       free(list);
+
+       return result;
 }
 
 struct bpph **bpph_list_append_list(struct bpph **list1, struct bpph **list2)
@@ -230,7 +214,7 @@ time_t ddts_get_last_date(struct daily_download_total **ddts)
                return 0;
 
        last_t = 0;
-       for(cur = ddts; *cur; cur++) {
+       for (cur = ddts; *cur; cur++) {
                t = mktime(&(*cur)->date);
                if (t > last_t)
                        last_t = t;
@@ -247,7 +231,7 @@ int ddts_length(struct daily_download_total **ddts)
        n = 0;
 
        if (ddts)
-               for(cur = ddts; *cur; cur++)
+               for (cur = ddts; *cur; cur++)
                        n++;
 
        return n;
@@ -291,7 +275,8 @@ ddts_merge(struct daily_download_total **ddts1,
        struct daily_download_total **ddts, **cur, **tmp;
 
        if (ddts1) {
-               ddts = malloc((ddts_length(ddts1) + 1) * sizeof(struct daily_download_total *));
+               ddts = malloc((ddts_length(ddts1) + 1)
+                             * sizeof(struct daily_download_total *));
                memcpy(ddts, ddts1, (ddts_length(ddts1) + 1) * sizeof(void *));
        } else {
                ddts = malloc(sizeof(struct daily_download_total *));
@@ -299,12 +284,23 @@ ddts_merge(struct daily_download_total **ddts1,
        }
 
        if (ddts2)
-               for(cur = ddts2; *cur; cur++) {
+               for (cur = ddts2; *cur; cur++) {
                        tmp = add_total(ddts, *cur);
-                       if (tmp != ddts) {
+                       if (tmp != ddts)
                                ddts = tmp;
-                       }
                }
 
        return ddts;
 }
+
+int ddts_get_count(struct daily_download_total **ddts)
+{
+       struct daily_download_total **cur;
+       int i;
+
+       i = 0;
+       for (cur = ddts; *cur; cur++)
+               i += (*cur)->count;
+
+       return i;
+}