Esempio n. 1
0
static void search_requirements(struct hash *hash, struct node *n,
                                struct tree *d)
{
    struct tree_node *t, *u;
    struct tree *providers;

    t = tree_first(n->need->root);

    while (t) {
        providers = tree_new();

        get_all_providers(t->n, providers);

        u = tree_first(providers->root);

        while (u) {
            if (!tree_search_node(d, u->n->name))
                tree_insert(d, hash_search(hash, u->n->name));

            u = tree_next(u);
        }

        tree_free_all_nodes(providers);
        tree_free(providers);

        t = tree_next(t);
    }

    t = tree_first(n->provide->root);

    while (t) {
        search_requirements(hash, t->n, d);
        t = tree_next(t);
    }
}
Esempio n. 2
0
void*
tree_search(void* Tree, const void* key)
{
    tree_node* node = tree_search_node(Tree, key);

    return node ? node->datum : NULL;
}
Esempio n. 3
0
static void search_dependencies(struct hash *hash, struct node *n,
                                struct tree *d)
{
    struct tree_node *t;
    char *pkgname;

    t = tree_first(n->neededby->root);

    while (t) {
        if (is_virtual_file(t->n->name)) {
            pkgname = get_pkgname(t->n->name);
            if (!tree_search_node(d, pkgname))
                tree_insert(d, hash_search(hash, pkgname));
            free(pkgname);
        }

        t = tree_next(t);
    }

    t = tree_first(n->provide->root);

    while (t) {
        search_dependencies(hash, t->n, d);
        t = tree_next(t);
    }
}
Esempio n. 4
0
bool
tree_iterator_search(void* Iterator, const void* key)
{
    ASSERT(Iterator != NULL);
    tree_iterator* iterator = Iterator;
    ASSERT(iterator->tree != NULL);
    return (iterator->node = tree_search_node(iterator->tree, key)) != NULL;
}
Esempio n. 5
0
File: hash.c Progetto: fpellanda/bee
struct node *hash_safe_insert(struct hash *hash, struct node *n)
{
    unsigned long index = hash_index(n->name);
    struct node *r;

    r = tree_search_node(hash->tbl[index], n->name);

    if (r)
        return r;

    tree_insert(hash->tbl[index], n);
    return n;
}
Esempio n. 6
0
static void get_all_providers(struct node *n, struct tree *all)
{
    struct tree_node *t;

    t = tree_first(n->providedby->root);

    while (t) {
        if (IS_PKG(t->n) && !tree_search_node(all, t->n->name))
            tree_insert(all, node_new(t->n->name, ""));

        get_all_providers(t->n, all);

        t = tree_next(t);
    }
}
Esempio n. 7
0
int get_virtual_files(struct node *n, char *name, struct tree *all)
{
    struct tree_node *t;

    t = tree_first(n->providedby->root);

    while (t) {
        if (!strcmp(name, get_filename(t->n->name))
            && !tree_search_node(all, t->n->name))
            tree_insert(all, t->n);

        t = tree_next(t);
    }

    return tree_count(all);
}
Esempio n. 8
0
File: hash.c Progetto: fpellanda/bee
struct node *hash_search(struct hash *hash, char *key)
{
    return tree_search_node(hash->tbl[hash_index(key)], key);
}