#include "xregex.h"
#include "pkg.h"
#include "opkg_message.h"
+#include "libbb/libbb.h"
pkg_vec_t * pkg_vec_alloc(void)
{
- pkg_vec_t * vec = (pkg_vec_t *)calloc(1, sizeof(pkg_vec_t));
- if (!vec) {
- fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
- return NULL;
- }
+ pkg_vec_t * vec = xcalloc(1, sizeof(pkg_vec_t));
vec->pkgs = NULL;
vec->len = 0;
/* we didn't find one, add it */
if (!found){
- opkg_message(conf, OPKG_DEBUG2, "Function: %s. Adding new pkg=%s version=%s arch=%s\n",
+ opkg_message(conf, OPKG_DEBUG2, "Function: %s. Adding new pkg=%s version=%s arch=%s\n",
__FUNCTION__, pkg->name, pkg->version, pkg->architecture);
-
- vec->pkgs = (pkg_t **)realloc(vec->pkgs, (vec->len + 1) * sizeof(pkg_t *));
- vec->pkgs[vec->len] = pkg;
- vec->len++;
+ pkg_vec_insert(vec, pkg);
return pkg;
}
/* update the one that we have */
}
}
-int pkg_vec_insert_called=0;
void pkg_vec_insert(pkg_vec_t *vec, const pkg_t *pkg)
{
- vec->pkgs = (pkg_t **)realloc(vec->pkgs, (vec->len + 1) * sizeof(pkg_t *));
- pkg_vec_insert_called++;
- *(const pkg_t **)&vec->pkgs[vec->len] = pkg;
+ vec->pkgs = xrealloc(vec->pkgs, (vec->len + 1) * sizeof(pkg_t *));
+ vec->pkgs[vec->len] = (pkg_t *)pkg;
vec->len++;
}
abstract_pkg_vec_t * abstract_pkg_vec_alloc(void)
{
abstract_pkg_vec_t * vec ;
- vec = (abstract_pkg_vec_t *)calloc(1, sizeof(abstract_pkg_vec_t));
- if (!vec) {
- fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
- return NULL;
- }
+ vec = xcalloc(1, sizeof(abstract_pkg_vec_t));
vec->pkgs = NULL;
vec->len = 0;
*/
void abstract_pkg_vec_insert(abstract_pkg_vec_t *vec, abstract_pkg_t *pkg)
{
- vec->pkgs = (abstract_pkg_t **) realloc(vec->pkgs, (vec->len + 1) * sizeof(abstract_pkg_t *));
+ vec->pkgs = xrealloc(vec->pkgs, (vec->len + 1) * sizeof(abstract_pkg_t *));
vec->pkgs[vec->len] = pkg;
vec->len++;
}
qsort(vec->pkgs, vec->len, sizeof(pkg_t *), compar);
}
+int pkg_compare_names(const void *p1, const void *p2)
+{
+ const pkg_t *pkg1 = *(const pkg_t **)p1;
+ const pkg_t *pkg2 = *(const pkg_t **)p2;
+ if (pkg1->name == NULL)
+ return 1;
+ if (pkg2->name == NULL)
+ return -1;
+ return(strcmp(pkg1->name, pkg2->name));
+}
+