| libblkid - a library to handle device identification and token extraction |
| |
| Basic usage is as follows - there are two normal usage patterns: |
| |
| For cases where a program wants information about multiple devices, or |
| expects to be doing multiple token searches, the program should |
| directly initialize cache file via (second parameter is cache |
| filename, NULL = default): |
| |
| blkid_cache cache = NULL; |
| if (blkid_get_cache(&cache, NULL) < 0) |
| /* error reading the cache file, not really fatal */ |
| |
| Note that if no cache file exists, an empty cache struct is still |
| allocated. Usage of libblkid functions will use the cache to avoid |
| needless device scans. |
| |
| The model of the blkid cache is that each device has a number of |
| attributes that can be associated with it. Currently the attributes |
| which are supported (and set) by blkid are: |
| |
| TYPE filesystem type |
| UUID filesystem uuid |
| LABEL filesystem label |
| |
| |
| How to use libblkid? Normally, you either want to find a device with |
| a specific NAME=value token, or you want to output token(s) from a |
| device. To find a device that matches a following attribute, you |
| simply call the blkid_get_devname() function: |
| |
| if ((devname = blkid_get_devname(cache, attribute_name, value))) { |
| /* do something with devname */ |
| string_free(devname); |
| } |
| |
| The cache parameter is optional; if it is NULL, then the blkid library |
| will load the default blkid.tab cache file, and then release the cache |
| before function call returns. The return value is an allocated string |
| which holds the resulting device name (if it is found). If the value |
| is NULL, then attribute_name is parsed as if it were |
| "<attribute_name>=<value>"; if it cannot be so parsed, then the |
| original attribute_name is returned in a copied allocated string. |
| This is a convenience to allow user programs to want to translate user |
| input, whether it is of the form: "/dev/hda1", "LABEL=root", |
| "UUID=082D-26E3", and get back a device name that it can use. |
| |
| Alternatively, of course, the programmer can pass an attribute name of |
| "LABEL", and value of "root", if that is more convenient. |
| |
| Another common usage is to retrieve the value of a specific attribute |
| for a particular device. This can be used to determine the filesystem |
| type, or label, or uuid for a particular device: |
| |
| if ((value = blkid_get_tag_value(cache, attribute_name, devname))) { |
| /* do something with value */ |
| string_free(value); |
| } |
| |
| If a program needs to call multiple blkid functions, then passing in a |
| cache value of NULL is not recommended, since the /etc/blkid.tab file |
| will be repeatedly parsed over and over again, with memory allocated |
| and deallocated. To initialize the blkid cache, blkid_get_cache() |
| function is used: |
| |
| if (blkid_get_cache(&cache, NULL) < 0) |
| goto errout; |
| |
| The second parameter of blkid_get_cache (if non-zero) is the alternate |
| filename of the blkid cache file (where the default is |
| /etc/blkid.tab). Normally, programs should just pass in NULL. |
| |
| If you have called blkid_get_cache(), you should call blkid_put_cache() |
| when you are done using the blkid library functions. This will save the |
| cache to the blkid.tab file, if you have write access to the file. It |
| will also free all associated devices and tags: |
| |
| blkid_put_cache(cache); |