Exemple #1
0
/*
 * 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;
	}
}
Exemple #2
0
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);
}
Exemple #3
0
int
alphasort(const struct dirent **a, const struct dirent **b)
{
	return path_cmp((*a)->d_name, (*b)->d_name);
}