-/* pkg_vec.c - the itsy package management system
+/* pkg_vec.c - the opkg package management system
Steven M. Ayer
General Public License for more details.
*/
-#include <stdlib.h>
+#include "includes.h"
#include <fnmatch.h>
#include "xregex.h"
-#include "opkg.h"
#include "pkg.h"
+#include "opkg_message.h"
pkg_vec_t * pkg_vec_alloc(void)
{
void pkg_vec_free(pkg_vec_t *vec)
{
- free(vec->pkgs);
+ if (!vec)
+ return;
+
+ if (vec->pkgs)
+ free(vec->pkgs);
+
free(vec);
}
void pkg_vec_insert(pkg_vec_t *vec, const pkg_t *pkg)
{
- int i;
int found = 0;
-#if 0
- /* look for a duplicate pkg by name, version, and architecture */
- for (i = 0; i < vec->len; i++)
- if ((strcmp(pkg->name, vec->pkgs[i]->name) == 0)
- && (pkg_compare_versions(pkg, vec->pkgs[i]) == 0)
- && (strcmp(pkg->architecture, vec->pkgs[i]->name) == 0)) {
- found = 1;
- break;
- }
-#endif
-
/* we didn't find one, add it */
if(!found){
vec->pkgs = (pkg_t **)realloc(vec->pkgs, (vec->len + 1) * sizeof(pkg_t *));
return 0;
}
-typedef int (*compare_fcn_t)(const void *, const void *);
-void pkg_vec_sort(pkg_vec_t *vec, int (*compar)(pkg_t *, pkg_t *))
+void pkg_vec_sort(pkg_vec_t *vec, compare_fcn_t compar)
{
- qsort(vec->pkgs, vec->len, sizeof(pkg_t *), (compare_fcn_t)compar);
+ qsort(vec->pkgs, vec->len, sizeof(pkg_t *), compar);
}
int pkg_vec_clear_marks(pkg_vec_t *vec)
void abstract_pkg_vec_free(abstract_pkg_vec_t *vec)
{
+ if (!vec)
+ return;
free(vec->pkgs);
free(vec);
}
*/
void abstract_pkg_vec_insert(abstract_pkg_vec_t *vec, abstract_pkg_t *pkg)
{
- int i;
-
-#if 0
- /* look for a duplicate pkg by name */
- for(i = 0; i < vec->len; i++)
- if (strcmp(pkg->name, vec->pkgs[i]->name) == 0)
- break;
- /* we didn't find one, add it */
- if(i == vec->len){
-#endif
vec->pkgs =
(abstract_pkg_t **)
realloc(vec->pkgs, (vec->len + 1) * sizeof(abstract_pkg_t *));
vec->pkgs[vec->len] = pkg;
vec->len++;
-#if 0
- }
-#endif
}
abstract_pkg_t * abstract_pkg_vec_get(abstract_pkg_vec_t *vec, int i)
return 0;
}
-void abstract_pkg_vec_sort(pkg_vec_t *vec, int (*compar)(abstract_pkg_t *, abstract_pkg_t *))
+void abstract_pkg_vec_sort(pkg_vec_t *vec, compare_fcn_t compar)
{
- qsort(vec->pkgs, vec->len, sizeof(pkg_t *), (compare_fcn_t)compar);
+ qsort(vec->pkgs, vec->len, sizeof(pkg_t *), compar);
}