/* * Key comparison function in database * meta keys are sorted by num of slashes and then memcpy * data keys are sorted by memcpy directly */ static int env_keycmp(DB *DB, DBT const *a, DBT const *b) { if (IS_DATA_KEY_DBT(a)) { int r; struct ftfs_data_key *ka = (struct ftfs_data_key *)a->data; struct ftfs_data_key *kb = (struct ftfs_data_key *)b->data; BUG_ON(!IS_DATA_KEY_DBT(b)); r = circle_id_cmp(data_key_get_circle_id(ka), data_key_get_circle_id(kb)); if (r) return r; r = path_cmp(data_key_get_path(ka), data_key_get_path(kb), DBT_PATH_LEN(a->size, *ka), DBT_PATH_LEN(b->size, *kb)); if (r) return r; r = block_num_cmp(data_key_get_block_num(ka), data_key_get_block_num(kb)); return r; } else { int r; struct ftfs_meta_key * ka = (struct ftfs_meta_key *)a->data; struct ftfs_meta_key * kb = (struct ftfs_meta_key *)b->data; BUG_ON(!IS_META_KEY_DBT(a)); BUG_ON(!IS_META_KEY_DBT(b)); r = circle_id_cmp(meta_key_get_circle_id(ka), meta_key_get_circle_id(kb)); if (r) return r; r = path_cmp(meta_key_get_path(ka), meta_key_get_path(kb), DBT_PATH_LEN(a->size, *ka), DBT_PATH_LEN(b->size, *kb)); return r; } }
int vh_scanner_path_cmp (scanner_t *scanner, const char *file) { vh_log (VALHALLA_MSG_VERBOSE, __FUNCTION__); if (!scanner) return -1; return path_cmp (scanner->paths, file); }
int alphasort(const struct dirent **a, const struct dirent **b) { return path_cmp((*a)->d_name, (*b)->d_name); }