From ba0a7bfb983305ac7f86db1e7bbfeb456e11bbd8 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 18 Sep 2018 08:58:42 +0900 Subject: [PATCH] tree-wide: use typesafe_qsort_r() --- src/basic/format-table.c | 13 +++---------- src/hwdb/hwdb.c | 14 +++++--------- src/udev/udevadm-hwdb.c | 14 +++++--------- 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/src/basic/format-table.c b/src/basic/format-table.c index 8ef2782..e30460e 100644 --- a/src/basic/format-table.c +++ b/src/basic/format-table.c @@ -729,9 +729,7 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t return 0; } -static int table_data_compare(const void *x, const void *y, void *userdata) { - const size_t *a = x, *b = y; - Table *t = userdata; +static int table_data_compare(const size_t *a, const size_t *b, Table *t) { size_t i; int r; @@ -759,12 +757,7 @@ static int table_data_compare(const void *x, const void *y, void *userdata) { } /* Order identical lines by the order there were originally added in */ - if (*a < *b) - return -1; - if (*a > *b) - return 1; - - return 0; + return CMP(*a, *b); } static const char *table_data_format(TableData *d) { @@ -944,7 +937,7 @@ int table_print(Table *t, FILE *f) { for (i = 0; i < n_rows; i++) sorted[i] = i * t->n_columns; - qsort_r_safe(sorted, n_rows, sizeof(size_t), table_data_compare, t); + typesafe_qsort_r(sorted, n_rows, table_data_compare, t); } if (t->display_map) diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c index 913cefa..d9a6d83 100644 --- a/src/hwdb/hwdb.c +++ b/src/hwdb/hwdb.c @@ -133,13 +133,9 @@ static void trie_free(struct trie *trie) { DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free); -static int trie_values_cmp(const void *v1, const void *v2, void *arg) { - const struct trie_value_entry *val1 = v1; - const struct trie_value_entry *val2 = v2; - struct trie *trie = arg; - - return strcmp(trie->strings->buf + val1->key_off, - trie->strings->buf + val2->key_off); +static int trie_values_cmp(const struct trie_value_entry *a, const struct trie_value_entry *b, struct trie *trie) { + return strcmp(trie->strings->buf + a->key_off, + trie->strings->buf + b->key_off); } static int trie_node_add_value(struct trie *trie, struct trie_node *node, @@ -164,7 +160,7 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node, .value_off = v, }; - val = xbsearch_r(&search, node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp, trie); + val = xbsearch_r(&search, node->values, node->values_count, sizeof(struct trie_value_entry), (__compar_d_fn_t) trie_values_cmp, trie); if (val) { /* At this point we have 2 identical properties on the same match-string. * Since we process files in order, we just replace the previous value. @@ -189,7 +185,7 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node, node->values[node->values_count].file_priority = file_priority; node->values[node->values_count].line_number = line_number; node->values_count++; - qsort_r(node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp, trie); + typesafe_qsort_r(node->values, node->values_count, trie_values_cmp, trie); return 0; } diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index 3e9a194..55bd060 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -132,13 +132,9 @@ static void trie_free(struct trie *trie) { DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free); -static int trie_values_cmp(const void *v1, const void *v2, void *arg) { - const struct trie_value_entry *val1 = v1; - const struct trie_value_entry *val2 = v2; - struct trie *trie = arg; - - return strcmp(trie->strings->buf + val1->key_off, - trie->strings->buf + val2->key_off); +static int trie_values_cmp(const struct trie_value_entry *a, const struct trie_value_entry *b, struct trie *trie) { + return strcmp(trie->strings->buf + a->key_off, + trie->strings->buf + b->key_off); } static int trie_node_add_value(struct trie *trie, struct trie_node *node, @@ -159,7 +155,7 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node, .value_off = v, }; - val = xbsearch_r(&search, node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp, trie); + val = xbsearch_r(&search, node->values, node->values_count, sizeof(struct trie_value_entry), (__compar_d_fn_t) trie_values_cmp, trie); if (val) { /* replace existing earlier key with new value */ val->value_off = v; @@ -176,7 +172,7 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node, node->values[node->values_count].key_off = k; node->values[node->values_count].value_off = v; node->values_count++; - qsort_r(node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp, trie); + typesafe_qsort_r(node->values, node->values_count, trie_values_cmp, trie); return 0; } -- 2.7.4