free(tasks);
}
-static struct project *project_list_get(struct project **prj, const char *name)
+static void project_free(struct project *p)
{
- while (*prj)
- if (!strcmp((*prj)->name, name))
- return *prj;
- else
- prj++;
+ if (!p)
+ return ;
+
+ free(p->name);
+ free(p);
+}
+
+void tw_project_list_free(struct project **prjs)
+{
+ struct project **cur;
+
+ if (!prjs)
+ return ;
+
+ for (cur = prjs; *cur; cur++)
+ project_free(*cur);
+
+ free(prjs);
+}
+
+static struct project *project_list_get(struct project **prjs, const char *name)
+{
+ struct project **cur;
+
+ for (cur = prjs; *cur; cur++)
+ if (!strcmp((*cur)->name, name))
+ return *cur;
+
return NULL;
}
struct project **prjs, **tmp, *prj;
const char *prj_name;
- log_debug("tw_get_projects()");
+ log_fct_enter();
- prjs = malloc(sizeof(struct project *));
- *prjs = NULL;
+ prjs = malloc(2 * sizeof(struct project *));
+ prjs[0] = project_new("ALL", 0);
+ prjs[1] = NULL;
for (t_cur = tasks; *t_cur; t_cur++) {
prj_name = (*t_cur)->project;
prj->count++;
} else {
prj = project_new(prj_name, 1);
-
+
tmp = (struct project **)list_add((void **)prjs, prj);
-
- list_free((void **)prjs);
+
+ free(prjs);
prjs = tmp;
}
+ prjs[0]->count++;
}
+ log_fct_exit();
+
return prjs;
}