2 * volume_id - reads partition label and uuid
4 * Copyright (C) 2005 Kay Sievers <kay.sievers@vrfy.org>
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation version 2 of the License.
16 #define VOLUME_ID_VERSION 50
18 #define VOLUME_ID_LABEL_SIZE 64
19 #define VOLUME_ID_UUID_SIZE 36
20 #define VOLUME_ID_FORMAT_SIZE 32
21 #define VOLUME_ID_PATH_MAX 256
22 #define VOLUME_ID_PARTITIONS_MAX 256
24 enum volume_id_usage {
29 VOLUME_ID_PARTITIONTABLE,
35 struct volume_id_partition {
36 enum volume_id_usage usage_id;
41 uint8_t partition_type_raw;
45 uint8_t label_raw[VOLUME_ID_LABEL_SIZE];
47 char label[VOLUME_ID_LABEL_SIZE+1];
48 uint8_t uuid_raw[VOLUME_ID_UUID_SIZE];
50 char uuid[VOLUME_ID_UUID_SIZE+1];
51 enum volume_id_usage usage_id;
54 char type_version[VOLUME_ID_FORMAT_SIZE];
56 struct volume_id_partition *partitions;
57 size_t partition_count;
68 extern struct volume_id *volume_id_open_fd(int fd);
69 extern struct volume_id *volume_id_open_node(const char *path);
70 extern struct volume_id *volume_id_open_dev_t(dev_t devt);
71 extern int volume_id_probe_all(struct volume_id *id, uint64_t off, uint64_t size);
72 extern void volume_id_close(struct volume_id *id);