+static int version_cmp(const void *o1, const void *o2)
+{
+ struct version_stats **v1, **v2;
+
+ v1 = (struct version_stats **)o1;
+ v2 = (struct version_stats **)o2;
+
+ return (*v1)->date_created <= (*v2)->date_created;
+}
+
+static struct version_stats **sort_versions(struct version_stats **vers)
+{
+ size_t n;
+ struct version_stats **tmp, **result;
+
+ tmp = vers;
+ n = 0;
+ while(*tmp) {
+ n++;
+ tmp++;
+ }
+
+ result = malloc((n + 1) * sizeof(struct version_stats *));
+ memcpy(result, vers, n * sizeof(struct version_stats *));
+ result[n] = NULL;
+
+ qsort(result, n, sizeof(struct version_stats *), version_cmp);
+
+ return result;
+}
+