/* * Close logger <logger>. */ void logClose(Logger *logger) { LOG_Output *out; LOG_Prefix *pfx; if (logger == NULL) { return; } pthread_mutex_lock(&logger->access); bufReset(&logger->scratch); while ((out = listRemoveHead(&logger->outputs)) != NULL) { log_close_output(out); } while ((pfx = listRemoveHead(&logger->prefixes)) != NULL) { if (pfx->type == LOG_PT_STR && pfx->u.string != NULL) { free(pfx->u.string); } free(pfx); } pthread_mutex_unlock(&logger->access); pthread_mutex_destroy(&logger->access); free(logger); }
void test_listRemoveHead_given_list_of_0x100_0x200_0x300_should_return_0x100() { LinkedList list ; ListElement listElement1 ; ListElement listElement2; ListElement listElement3; ListElement *returnElement; initLinkedList(&list); listElementCreate(&listElement1,0x100); listElementCreate(&listElement2,0x200); listElementCreate(&listElement3,0x300); listAddTail(&list,&listElement1); listAddTail(&list,&listElement2); listAddTail(&list,&listElement3); returnElement = listRemoveHead(&list); TEST_ASSERT_EQUAL(&listElement1,returnElement); TEST_ASSERT_EQUAL(0x100,returnElement->data); TEST_ASSERT_EQUAL(NULL,returnElement->next); TEST_ASSERT_EQUAL(&listElement2,list.head); TEST_ASSERT_EQUAL(&listElement3,list.tail); }
/*--------listRemoveHead---------*/ void_test_listRemoveHead_given_emptyList_should_return_NULL() { LinkedList list ; ListElement *listElement ; initLinkedList(&list); listElement = listRemoveHead(&list); TEST_ASSERT_NULL(listElement); }
/* * Process (and subsequently discard) the first pending timeout. */ void disHandleTimer(Dispatcher *dis) { DIS_Timer *timer = listRemoveHead(&dis->timers); dbgAssert(stderr, timer != NULL, "no pending timer.\n"); timer->cb(dis, timer->t, (void *) timer->udata); free(timer); }
/* * Close dispatcher <dis>. This removes all file descriptors and timers, which will * cause disRun() to return. */ void disClose(Dispatcher *dis) { int fd; DIS_Timer *timer; for (fd = 0; fd < paCount(&dis->files); fd++) { DIS_File *file = paGet(&dis->files, fd); if (file != NULL) { paDrop(&dis->files, fd); bufReset(&file->outgoing); free(file); } } while ((timer = listRemoveHead(&dis->timers)) != NULL) { free(timer); } }
int main(int argc, char *argv[]) { List list; Data *data[6]; int i, errors = 0; for (i = 0; i < 6; i++) { data[i] = calloc(1, sizeof(Data)); } listInitialize(&list); TEST_INT(listLength(&list), 0); TEST_INT(listIsEmpty(&list), TRUE); listAppendTail(&list, data[0]); listAppendTail(&list, data[1]); listAppendTail(&list, data[2]); listAppendTail(&list, data[3]); TEST_INT(listLength(&list), 4); TEST_INT(listIsEmpty(&list), FALSE); TEST_PTR(listHead(&list), data[0]); TEST_PTR(listTail(&list), data[3]); TEST_PTR(listNext(data[0]), data[1]); TEST_PTR(listNext(data[1]), data[2]); TEST_PTR(listNext(data[2]), data[3]); TEST_PTR(listNext(data[3]), NULL); TEST_PTR(listPrev(data[3]), data[2]); TEST_PTR(listPrev(data[2]), data[1]); TEST_PTR(listPrev(data[1]), data[0]); TEST_PTR(listPrev(data[0]), NULL); TEST_PTR(listContaining(data[0]), &list); TEST_PTR(listContaining(data[1]), &list); TEST_PTR(listContaining(data[2]), &list); TEST_PTR(listContaining(data[3]), &list); listRemove(&list, data[0]); listRemove(&list, data[1]); listRemove(&list, data[2]); listRemove(&list, data[3]); TEST_INT(listLength(&list), 0); TEST_INT(listIsEmpty(&list), TRUE); TEST_PTR(listContaining(data[0]), NULL); TEST_PTR(listContaining(data[1]), NULL); TEST_PTR(listContaining(data[2]), NULL); TEST_PTR(listContaining(data[3]), NULL); listInsertHead(&list, data[3]); listInsertHead(&list, data[2]); listInsertHead(&list, data[1]); listInsertHead(&list, data[0]); TEST_INT(listLength(&list), 4); TEST_INT(listIsEmpty(&list), FALSE); TEST_PTR(listHead(&list), data[0]); TEST_PTR(listTail(&list), data[3]); TEST_PTR(listNext(data[0]), data[1]); TEST_PTR(listNext(data[1]), data[2]); TEST_PTR(listNext(data[2]), data[3]); TEST_PTR(listNext(data[3]), NULL); TEST_PTR(listPrev(data[3]), data[2]); TEST_PTR(listPrev(data[2]), data[1]); TEST_PTR(listPrev(data[1]), data[0]); TEST_PTR(listPrev(data[0]), NULL); TEST_PTR(listRemoveHead(&list), data[0]); TEST_PTR(listRemoveHead(&list), data[1]); TEST_PTR(listRemoveTail(&list), data[3]); TEST_PTR(listRemoveTail(&list), data[2]); TEST_INT(listLength(&list), 0); TEST_INT(listIsEmpty(&list), TRUE); listAppendTail(&list, data[0]); listAppendTail(&list, data[3]); listAppend(&list, data[1], data[0]); listInsert(&list, data[2], data[3]); TEST_PTR(listRemoveHead(&list), data[0]); TEST_PTR(listRemoveHead(&list), data[1]); TEST_PTR(listRemoveTail(&list), data[3]); TEST_PTR(listRemoveTail(&list), data[2]); data[0]->i = 3; data[1]->i = 4; data[2]->i = 5; data[3]->i = 1; data[4]->i = 2; data[5]->i = 3; listAppendTail(&list, data[0]); listAppendTail(&list, data[1]); listAppendTail(&list, data[2]); listAppendTail(&list, data[3]); listAppendTail(&list, data[4]); listAppendTail(&list, data[5]); listSort(&list, cmp); TEST_PTR(listRemoveHead(&list), data[3]); TEST_PTR(listRemoveHead(&list), data[4]); TEST_PTR(listRemoveHead(&list), data[0]); TEST_PTR(listRemoveHead(&list), data[5]); TEST_PTR(listRemoveHead(&list), data[1]); TEST_PTR(listRemoveHead(&list), data[2]); exit(errors); }