+static int projects_length(struct project **list)
+{
+ int n;
+
+ if (!list)
+ return 0;
+
+ n = 0;
+ while (*list) {
+ n++;
+ list++;
+ }
+
+ return n;
+}
+
+static struct project **projects_add(struct project **list, void *item)
+{
+ int n;
+ struct project **result;
+
+ n = projects_length(list);
+
+ result = (struct project **)malloc
+ ((n + 1 + 1) * sizeof(struct project *));
+
+ if (list)
+ memcpy(result, list, n * sizeof(struct project *));
+
+ result[n] = item;
+ result[n + 1] = NULL;
+
+ return result;
+}
+