#include "list.h" #include #include #include struct arg { const char *str; struct list_link link; }; bool test_sort(const void *p1, const void *p2, void *u) { const struct arg *a1 = p1, *a2 = p2; return strcmp(a1->str, a2->str) <= 0; } int main(int argc, const char **argv) { struct list list; struct arg *item; const char **arg; list_init(&list); if (argc < 3) { fprintf(stderr, "Usage: test REVERSE [STR]..\n"); return 1; } for (arg = argv + 2; *arg; arg++) { item = malloc(sizeof(struct arg)); if (!item) return 0; item->str = *arg; item->link = LIST_LINK_INIT; list_insert_back(&list, &item->link); } list_insertion_sort(&list, atoi(argv[1]), test_sort, LIST_OFFSET(struct arg, link), NULL); for (LIST_ITER_ITEMS(&list, item, struct arg, link)) printf("%s\n", item->str); list_free_items(&list, free, LIST_OFFSET(struct arg, link)); }