summaryrefslogtreecommitdiffstats
path: root/src/libopkg/.svn/text-base/pkg_vec.c.svn-base
diff options
context:
space:
mode:
Diffstat (limited to 'src/libopkg/.svn/text-base/pkg_vec.c.svn-base')
-rw-r--r--src/libopkg/.svn/text-base/pkg_vec.c.svn-base208
1 files changed, 0 insertions, 208 deletions
diff --git a/src/libopkg/.svn/text-base/pkg_vec.c.svn-base b/src/libopkg/.svn/text-base/pkg_vec.c.svn-base
deleted file mode 100644
index 472962c..0000000
--- a/src/libopkg/.svn/text-base/pkg_vec.c.svn-base
+++ /dev/null
@@ -1,208 +0,0 @@
-/* pkg_vec.c - the opkg package management system
-
- Steven M. Ayer
-
- Copyright (C) 2002 Compaq Computer Corporation
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-*/
-
-#include <stdio.h>
-#include <fnmatch.h>
-
-#include "pkg.h"
-#include "opkg_message.h"
-#include "libbb/libbb.h"
-
-pkg_vec_t * pkg_vec_alloc(void)
-{
- pkg_vec_t * vec = xcalloc(1, sizeof(pkg_vec_t));
- vec->pkgs = NULL;
- vec->len = 0;
-
- return vec;
-}
-
-void pkg_vec_free(pkg_vec_t *vec)
-{
- if (!vec)
- return;
-
- if (vec->pkgs)
- free(vec->pkgs);
-
- free(vec);
-}
-
-/*
- * assumption: all names in a vector are identical
- * assumption: all version strings are trimmed,
- * so identical versions have identical version strings,
- * implying identical packages; let's marry these
- */
-void pkg_vec_insert_merge(pkg_vec_t *vec, pkg_t *pkg, int set_status)
-{
- int i;
- int found = 0;
-
- /* look for a duplicate pkg by name, version, and architecture */
- for (i = 0; i < vec->len; i++){
- opkg_msg(DEBUG2, "%s %s arch=%s vs. %s %s arch=%s.\n",
- pkg->name, pkg->version, pkg->architecture,
- vec->pkgs[i]->name, vec->pkgs[i]->version,
- vec->pkgs[i]->architecture);
- /* if the name,ver,arch matches, or the name matches and the
- * package is marked deinstall/hold */
- if ((!strcmp(pkg->name, vec->pkgs[i]->name))
- && ((pkg->state_want == SW_DEINSTALL
- && (pkg->state_flag & SF_HOLD))
- || ((pkg_compare_versions(pkg, vec->pkgs[i]) == 0)
- && (!strcmp(pkg->architecture, vec->pkgs[i]->architecture))))) {
- found = 1;
- opkg_msg(DEBUG2, "Duplicate for pkg=%s version=%s arch=%s.\n",
- pkg->name, pkg->version, pkg->architecture);
- break;
- }
- }
-
- /* we didn't find one, add it */
- if (!found){
- opkg_msg(DEBUG2, "Adding new pkg=%s version=%s arch=%s.\n",
- pkg->name, pkg->version, pkg->architecture);
- pkg_vec_insert(vec, pkg);
- return;
- }
-
- /* update the one that we have */
- opkg_msg(DEBUG2, "Merging %s %s arch=%s, set_status=%d.\n",
- pkg->name, pkg->version, pkg->architecture, set_status);
- if (set_status) {
- /* This is from the status file,
- * so need to merge with existing database */
- pkg_merge(pkg, vec->pkgs[i]);
- }
-
- /* overwrite the old one */
- pkg_deinit(vec->pkgs[i]);
- free(vec->pkgs[i]);
- vec->pkgs[i] = pkg;
-}
-
-void pkg_vec_insert(pkg_vec_t *vec, const pkg_t *pkg)
-{
- vec->pkgs = xrealloc(vec->pkgs, (vec->len + 1) * sizeof(pkg_t *));
- vec->pkgs[vec->len] = (pkg_t *)pkg;
- vec->len++;
-}
-
-int pkg_vec_contains(pkg_vec_t *vec, pkg_t *apkg)
-{
- int i;
- for (i = 0; i < vec->len; i++)
- if (vec->pkgs[i] == apkg)
- return 1;
- return 0;
-}
-
-void pkg_vec_sort(pkg_vec_t *vec, compare_fcn_t compar)
-{
- qsort(vec->pkgs, vec->len, sizeof(pkg_t *), compar);
-}
-
-int pkg_vec_clear_marks(pkg_vec_t *vec)
-{
- int npkgs = vec->len;
- int i;
- for (i = 0; i < npkgs; i++) {
- pkg_t *pkg = vec->pkgs[i];
- pkg->state_flag &= ~SF_MARKED;
- }
- return 0;
-}
-
-int pkg_vec_mark_if_matches(pkg_vec_t *vec, const char *pattern)
-{
- int matching_count = 0;
- pkg_t **pkgs = vec->pkgs;
- int npkgs = vec->len;
- int i;
- for (i = 0; i < npkgs; i++) {
- pkg_t *pkg = pkgs[i];
- if (fnmatch(pattern, pkg->name, 0)==0) {
- pkg->state_flag |= SF_MARKED;
- matching_count++;
- }
- }
- return matching_count;
-}
-
-
-abstract_pkg_vec_t * abstract_pkg_vec_alloc(void)
-{
- abstract_pkg_vec_t * vec ;
- vec = xcalloc(1, sizeof(abstract_pkg_vec_t));
- vec->pkgs = NULL;
- vec->len = 0;
-
- return vec;
-}
-
-void abstract_pkg_vec_free(abstract_pkg_vec_t *vec)
-{
- if (!vec)
- return;
- free(vec->pkgs);
- free(vec);
-}
-
-/*
- * assumption: all names in a vector are unique
- */
-void abstract_pkg_vec_insert(abstract_pkg_vec_t *vec, abstract_pkg_t *pkg)
-{
- vec->pkgs = xrealloc(vec->pkgs, (vec->len + 1) * sizeof(abstract_pkg_t *));
- vec->pkgs[vec->len] = pkg;
- vec->len++;
-}
-
-abstract_pkg_t * abstract_pkg_vec_get(abstract_pkg_vec_t *vec, int i)
-{
- if (vec->len > i)
- return vec->pkgs[i];
- else
- return NULL;
-}
-
-int abstract_pkg_vec_contains(abstract_pkg_vec_t *vec, abstract_pkg_t *apkg)
-{
- int i;
- for (i = 0; i < vec->len; i++)
- if (vec->pkgs[i] == apkg)
- return 1;
- return 0;
-}
-
-void abstract_pkg_vec_sort(pkg_vec_t *vec, compare_fcn_t compar)
-{
- 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));
-}
-