Esempio n. 1
0
trienode *trsearch(trienode *root, key *target)
{
    int i;
    printf("search for: "); show_target(target);
    for (i = 0; i < MAXLENGTH && root; i++) {
        if (target->kval[i] == INVALID_KEY) break;
        else root = root->branch[target->kval[i]];
    }
    if ((root && !root->ref) || (!root))
    { printf("not found => "); show_target(target); printf("\n"); }
    else printf("found => %s\n", root->ref->name);
    return root;
}
Esempio n. 2
0
STATIC int
do_list_targets(int argc, char **argv, iscsid_list_kind_t kind)
{
	iscsid_get_list_req_t lst;
	iscsid_response_t *rsp;
	iscsid_get_list_rsp_t *list;
	unsigned i;

	check_extra_args(argc, argv);

	/* get the list of targets */
	lst.list_kind = kind;
	send_request(ISCSID_GET_LIST, sizeof(lst), &lst);
	rsp = get_response(TRUE);
	if (rsp->status) {
		status_error(rsp->status);
	}
	list = (iscsid_get_list_rsp_t *)(void *)rsp->parameter;

	/* display all targets */
	for (i = 0; i < list->num_entries; i++) {
		show_target(list->id[i], kind);
	}
	free_response(rsp);
	return 0;
}
Esempio n. 3
0
trienode *trdelete(trienode *root, key *target)
{
    int i;
    printf("delete: "); show_target(target);
    for (i = 0; i < MAXLENGTH && root; i++) {
        if (target->kval[i] == INVALID_KEY) break;
        else root = root->branch[target->kval[i]];
    }
    if (root && !root->ref) { printf("null root\n"); return NULL; }
    else if (!root) { printf("not found: "); show_target(target); printf("\n"); }
    else {
        printf("=> %s\n", root->ref->name);
        free(root->ref);
        root->ref = NULL;
    }
    return root;
}
Esempio n. 4
0
trienode *trinsert(trienode *root, key *newkey, entry *newentry)
{
    int i;
    trienode *saveroot;
    printf("inserting: "); show_target(newkey); printf(" = %s\n", newentry->name);
    if (!root) root = trcreatenode();
    saveroot = root;
    for (i = 0; i < MAXLENGTH; i++) {
        if (newkey->kval[i] == INVALID_KEY) break;
        else {
            if (!root->branch[newkey->kval[i]]) /* make a new node on root for newkey */
                root->branch[newkey->kval[i]] = trcreatenode();
            root = root->branch[newkey->kval[i]]; /* move down appropriate branch */
        }
    } /* at this point, we have tested for all characters of newkey */
    if (root->ref != NULL)
    { printf("warning: tried to insert a duplicate key..."); show_target(newkey); printf("\n"); }
    else
        root->ref = newentry;
    return saveroot;
}