/*
 * The symbol versioning ensures that a new application requiring symbol foo()
 * can't run with old libblkid.so not providing foo() - the global SONAME
 * version info can't enforce this since we never change the SONAME.
 *
 * The original libblkid from e2fsprogs (<=1.41.4) does not to use
 * symbol versioning -- all the original symbols are in BLKID_1.0 now.
 */
BLKID_1.0 {
global:
	blkid_dev_devname;
	blkid_dev_has_tag;
	blkid_dev_iterate_begin;
	blkid_dev_iterate_end;
	blkid_dev_next;
	blkid_devno_to_devname;
	blkid_dev_set_search;
	blkid_find_dev_with_tag;
	blkid_gc_cache;
	blkid_get_cache;
	blkid_get_dev;
	blkid_get_devname;
	blkid_get_dev_size;
	blkid_get_library_version;
	blkid_get_tag_value;
	blkid_known_fstype;
	blkid_parse_tag_string;
	blkid_parse_version_string;
	blkid_probe_all;
	blkid_probe_all_new;
	blkid_put_cache;
	blkid_tag_iterate_begin;
	blkid_tag_iterate_end;
	blkid_tag_next;
	blkid_verify;
local:
	*;
};


/*
 * symbols since util-linux 2.15
 */
BLKID_2.15 {
global:
	blkid_do_probe;
	blkid_do_safeprobe;
	blkid_encode_string;
	blkid_evaluate_tag;
	blkid_free_probe;
	blkid_new_probe;
	blkid_probe_filter_types;
	blkid_probe_filter_usage;
	blkid_probe_get_value;
	blkid_probe_has_value;
	blkid_probe_invert_filter;
	blkid_probe_lookup_value;
	blkid_probe_numof_values;
	blkid_probe_reset_filter;
	blkid_probe_set_device;
	blkid_probe_set_request;
	blkid_reset_probe;
	blkid_safe_string;
	blkid_send_uevent;
} BLKID_1.0;

/*
 * symbols since util-linux 2.17
 */
BLKID_2.17 {
global:
	blkid_devno_to_wholedisk;
	blkid_do_fullprobe;
	blkid_known_pttype;
	blkid_new_probe_from_filename;
	blkid_partition_get_name;
	blkid_partition_get_partno;
	blkid_partition_get_size;
	blkid_partition_get_start;
	blkid_partition_get_table;
	blkid_partition_get_type;
	blkid_partition_get_type_string;
	blkid_partition_get_uuid;
	blkid_partition_is_extended;
	blkid_partition_is_logical;
	blkid_partition_is_primary;
	blkid_partlist_get_partition;
	blkid_partlist_numof_partitions;
	blkid_parttable_get_offset;
	blkid_parttable_get_parent;
	blkid_parttable_get_type;
	blkid_probe_enable_partitions;
	blkid_probe_enable_superblocks;
	blkid_probe_enable_topology;
	blkid_probe_filter_partitions_type;
	blkid_probe_filter_superblocks_type;
	blkid_probe_filter_superblocks_usage;
	blkid_probe_get_devno;
	blkid_probe_get_partitions;
	blkid_probe_get_sectorsize;
	blkid_probe_get_sectors;
	blkid_probe_get_size;
	blkid_probe_get_topology;
	blkid_probe_invert_partitions_filter;
	blkid_probe_invert_superblocks_filter;
	blkid_probe_reset_partitions_filter;
	blkid_probe_reset_superblocks_filter;
	blkid_probe_set_partitions_flags;
	blkid_probe_set_superblocks_flags;
	blkid_topology_get_alignment_offset;
	blkid_topology_get_logical_sector_size;
	blkid_topology_get_minimum_io_size;
	blkid_topology_get_optimal_io_size;
	blkid_topology_get_physical_sector_size;
} BLKID_2.15;

/*
 * symbols since util-linux 2.18
 */
BLKID_2.18 {
global:
	blkid_partition_get_flags;
	blkid_partlist_devno_to_partition;
	blkid_partlist_get_table;
	blkid_probe_all_removable;
	blkid_probe_get_fd;
	blkid_probe_get_offset;
	blkid_probe_get_wholedisk_devno;
	blkid_probe_is_wholedisk;
} BLKID_2.17;

/*
 * symbols since util-linux 2.20
 */
BLKID_2.20 {
global:
	blkid_evaluate_spec;
	blkid_superblocks_get_name;
} BLKID_2.18;

/*
 * symbols since util-linux 2.21
 */
BLKID_2.21 {
global:
	blkid_do_wipe;
} BLKID_2.20;

