summaryrefslogblamecommitdiffstats
path: root/mount/fsprobe_blkid.c
blob: 4d288972920a9bd32db158a0270f6b014ffd24b2 (plain) (tree)
1
2
3
4
5
6
7
8
                  
                        
                    
 
                                           
                         

    


                     


    



                                       


            




                                                 



                                                            




                                                
                                                           


            




                                              



                                                      




                                               


                                                        






                                          
















                                                                              

 
#include <stdio.h>
#include <blkid/blkid.h>
#include "fsprobe.h"

#define BLKID_EMPTY_CACHE	"/dev/null"
static blkid_cache blkid;

void
fsprobe_init(void)
{
	blkid = NULL;
}

void
fsprobe_exit(void)
{
	if (blkid)
		blkid_put_cache(blkid);
}

const char *
fsprobe_get_label_by_devname(const char *devname)
{
	if (!blkid)
		blkid_get_cache(&blkid, NULL);

	return blkid_get_tag_value(blkid, "LABEL", devname);
}

const char *
fsprobe_get_uuid_by_devname(const char *devname)
{
	if (!blkid)
		blkid_get_cache(&blkid, NULL);

	return blkid_get_tag_value(blkid, "UUID", devname);
}

const char *
fsprobe_get_devname_by_uuid(const char *uuid)
{
	if (!blkid)
		blkid_get_cache(&blkid, NULL);

	return blkid_get_devname(blkid, "UUID", uuid);
}

const char *
fsprobe_get_devname_by_label(const char *label)
{
	if (!blkid)
		blkid_get_cache(&blkid, NULL);

	return blkid_get_devname(blkid, "LABEL", label);
}

int
fsprobe_known_fstype(const char *fstype)
{
	return blkid_known_fstype(fstype);
}

const char *
fsprobe_get_fstype_by_devname(const char *devname)
{
	blkid_cache c;
	const char *tp;

	if (blkid)
		return blkid_get_tag_value(blkid, "TYPE", devname);

	/* The cache is not initialized yet. Use empty cache rather than waste
	 * time with /etc/blkid.tab. It seems that probe FS is faster than
	 * parse the cache file.  -- kzak (17-May-2007)
	 */
	blkid_get_cache(&c, BLKID_EMPTY_CACHE);
	tp = blkid_get_tag_value(c, "TYPE", devname);
	blkid_put_cache(c);

	return tp;
}