~pr0gg3d/ubuntu/oneiric/util-linux/bug-805886

« back to all changes in this revision

Viewing changes to libs/blkid/README.blkid

  • Committer: Bazaar Package Importer
  • Author(s): Scott James Remnant
  • Date: 2009-07-16 15:48:23 UTC
  • mfrom: (1.3.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20090716154823-i26fshvs4v8h90qh
Tags: 2.16-1ubuntu1
* Merge from Debian, remaining changes:
  - Since udev is required in Ubuntu, the hwclock.sh init script is
    not called on startup and the hwclockfirst.sh init script is
    removed.
  - Remove /etc/adjtime on upgrade if it was not used.
  - Install custom blkid.conf to use /dev/.blkid.tab since we don't
    expect device names to survive a reboot
  - No lsb_release call in mount.preinst since we'd need Pre-Depends
    (LP: #383697).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
libblkid - a library to handle device identification and token extraction
2
 
 
3
 
Basic usage is as follows - there are two normal usage patterns:
4
 
 
5
 
For cases where a program wants information about multiple devices, or
6
 
expects to be doing multiple token searches, the program should
7
 
directly initialize cache file via (second parameter is cache
8
 
filename, NULL = default):
9
 
 
10
 
        blkid_cache cache = NULL;
11
 
        if (blkid_get_cache(&cache, NULL) < 0)
12
 
                /* error reading the cache file, not really fatal */
13
 
 
14
 
Note that if no cache file exists, an empty cache struct is still
15
 
allocated.  Usage of libblkid functions will use the cache to avoid
16
 
needless device scans.
17
 
 
18
 
The model of the blkid cache is that each device has a number of
19
 
attributes that can be associated with it.  Currently the attributes
20
 
which are supported (and set) by blkid are:
21
 
 
22
 
        TYPE            filesystem type
23
 
        UUID            filesystem uuid
24
 
        LABEL           filesystem label
25
 
 
26
 
 
27
 
How to use libblkid?  Normally, you either want to find a device with
28
 
a specific NAME=value token, or you want to output token(s) from a
29
 
device.  To find a device that matches a following attribute, you
30
 
simply call the blkid_get_devname() function:
31
 
 
32
 
        if ((devname = blkid_get_devname(cache, attribute_name, value))) {
33
 
                /* do something with devname */
34
 
                string_free(devname);
35
 
        }
36
 
 
37
 
The cache parameter is optional; if it is NULL, then the blkid library
38
 
will load the default blkid.tab cache file, and then release the cache
39
 
before function call returns.  The return value is an allocated string
40
 
which holds the resulting device name (if it is found).  If the value
41
 
is NULL, then attribute_name is parsed as if it were
42
 
"<attribute_name>=<value>"; if it cannot be so parsed, then the
43
 
original attribute_name is returned in a copied allocated string.
44
 
This is a convenience to allow user programs to want to translate user
45
 
input, whether it is of the form: "/dev/hda1", "LABEL=root",
46
 
"UUID=082D-26E3", and get back a device name that it can use.
47
 
 
48
 
Alternatively, of course, the programmer can pass an attribute name of
49
 
"LABEL", and value of "root", if that is more convenient.
50
 
 
51
 
Another common usage is to retrieve the value of a specific attribute
52
 
for a particular device.  This can be used to determine the filesystem
53
 
type, or label, or uuid for a particular device:
54
 
 
55
 
        if ((value = blkid_get_tag_value(cache, attribute_name, devname))) {
56
 
                /* do something with value */
57
 
                string_free(value);
58
 
        }
59
 
 
60
 
If a program needs to call multiple blkid functions, then passing in a
61
 
cache value of NULL is not recommended, since the /etc/blkid.tab file
62
 
will be repeatedly parsed over and over again, with memory allocated
63
 
and deallocated.  To initialize the blkid cache, blkid_get_cache()
64
 
function is used:
65
 
 
66
 
        if (blkid_get_cache(&cache, NULL) < 0)
67
 
                goto errout;
68
 
 
69
 
The second parameter of blkid_get_cache (if non-zero) is the alternate
70
 
filename of the blkid cache file (where the default is
71
 
/etc/blkid.tab).  Normally, programs should just pass in NULL.
72
 
 
73
 
If you have called blkid_get_cache(), you should call blkid_put_cache()
74
 
when you are done using the blkid library functions.  This will save the
75
 
cache to the blkid.tab file, if you have write access to the file.  It
76
 
will also free all associated devices and tags:
77
 
 
78
 
        blkid_put_cache(cache);