#include #include /** * asort - typesafe array sort (qsort) * * qsort() is the standard routine for sorting an array of objects. * Unfortunately, it has two problems: * 1) It isn't typesafe, * 2) The comparison function doesn't take a context pointer. * * asort does both. * * Licence: LGPL * Author: Rusty Russell * * Example: * #include * #include * #include * * static int cmp(char *const *a, char *const *n, bool *casefold) * { * if (*casefold) * return strcasecmp(*a, *n); * else * return strcmp(*a, *n); * } * * int main(int argc, char *argv[]) * { * bool casefold = false; * unsigned int i; * * if (argc < 2) { * fprintf(stderr, "Usage: %s [-i] ...\n" * "Sort arguments (-i = ignore case)\n", * argv[0]); * exit(1); * } * * if (strcmp(argv[1], "-i") == 0) { * casefold = true; * argc--; * argv++; * } * asort(&argv[1], argc-1, cmp, &casefold); * for (i = 1; i < argc; i++) * printf("%s ", argv[i]); * printf("\n"); * return 0; * } */ int main(int argc, char *argv[]) { if (argc != 2) return 1; if (strcmp(argv[1], "depends") == 0) { printf("ccan/typesafe_cb\n"); printf("ccan/array_size\n"); return 0; } return 1; }