int test_add ( void ) { list_t *addTest; list_t *emplaceTest; // Sign on printf("**** Linked List Test - add\n"); /* * create a new list */ addTest = list_create(); printf("\tTest01a - add single element\n"); list_add_element(addTest,10); list_show(addTest); printf("\tTest01b - add more elements\n"); list_add_element(addTest,20); list_add_element(addTest,30); list_add_element(addTest,40); list_add_element(addTest,50); list_add_element(addTest,60); list_show(addTest); printf("\tTest01b - size of list %d\n", list_size(addTest)); printf("\tTest02a - add to front\n"); list_push_front(addTest, 111); list_show(addTest); printf("\tTest02a - size of list %d\n", list_size(addTest)); printf("\tTest03a - add to back\n");; list_push_back(addTest, 222); list_show(addTest); printf("\tTest03a - size of list %d\n", list_size(addTest)); emplaceTest = list_create(); printf("\tTest04a - emplace\n"); list_add_element(emplaceTest, 1); list_add_element(emplaceTest, 2); list_add_element(emplaceTest, 3); list_add_element(emplaceTest, 4); list_show(emplaceTest); printf("\tTest04a - size of list 4 = %d\n", list_size(emplaceTest)); printf("\tTest05a - emplace at position 2\n"); list_add_position(emplaceTest, 2, 5); list_show(emplaceTest); printf("\tTest05a - size of list %d\n", list_size(emplaceTest)); printf("\tTest05b get at position 2 (5) %d\n", list_get_position(emplaceTest, 2)); printf("\tTest05c - emplace at position 0\n"); list_add_position(emplaceTest, 0, 555); list_show(emplaceTest); printf("\tTest05c - size of list %d\n", list_size(emplaceTest)); printf("\tTest05c get at position 2 (555) %d\n", list_get_position(emplaceTest, 0)); printf("\tTest05d - emplace at position size+1\n"); list_add_position(emplaceTest, (list_size(emplaceTest)+1), 100); printf("**** Linked List Test - add Ends\n"); return 0; }
hash_t *port_hash_init(list_t * ports_list, list_t * packages, conf_t * conf) { hash_t *self; dict_t *pkgmk_confs_exploded; port_t *port, *found, *package; unsigned i; int cmp; char *locked_version, *pkgmk_conf; assert(ports_list != NULL && packages != NULL && conf != NULL); pkgmk_confs_exploded = pkgmk_confs_explode(conf->pkgmk_confs, ports_list); self = hash_new_with_size(1000); for (i = 0; i < ports_list->length; i++) { port = list_get(ports_list, i); if ((pkgmk_conf = dict_get(pkgmk_confs_exploded, port->name)) != NULL) port->pkgmk_conf = xstrdup(pkgmk_conf); if (list_get_position(conf->never_install, strequ, port->name) != -1) port->status = PRT_NEVERINSTALL; if ((locked_version = dict_get(conf->locked_versions, port->name))) { if (!strcmp(port->version, locked_version)) hash_add(self, port->name, port); } else if (locked_version == NULL && (found = dict_get(conf->favourite_repositories, port->name)) != NULL) { if (strcmp(found->repository->name, port->repository->name) == 0) hash_add(self, port->name, port); } else if (!locked_version && !(found = hash_get(self, port->name))) hash_add(self, port->name, port); else if (!locked_version && port->repository->priority > found->repository->priority) hash_add(self, port->name, port); else if (!locked_version && port->repository->priority == found->repository->priority && strverscmp(port->version, found->version) > 0) hash_add(self, port->name, port); } for (i = 0; i < packages->length; i++) { package = list_get(packages, i); if (!(port = hash_get(self, package->name))) { hash_add(self, package->name, package); continue; } if(port->status == PRT_NEVERINSTALL) continue; if ((cmp = strverscmp(port->version, package->version)) > 0) port->status = PRT_OUTDATED; else if (cmp < 0) port->status = PRT_DIFF; else port->status = PRT_INSTALLED; } dict_free(pkgmk_confs_exploded, free); return self; }