summaryrefslogtreecommitdiff
path: root/extras/volume_id/volume_id.h
diff options
context:
space:
mode:
Diffstat (limited to 'extras/volume_id/volume_id.h')
-rw-r--r--extras/volume_id/volume_id.h75
1 files changed, 53 insertions, 22 deletions
diff --git a/extras/volume_id/volume_id.h b/extras/volume_id/volume_id.h
index a939743dc1..eb90390617 100644
--- a/extras/volume_id/volume_id.h
+++ b/extras/volume_id/volume_id.h
@@ -21,42 +21,72 @@
#ifndef _VOLUME_ID_H_
#define _VOLUME_ID_H_
-#define VOLUME_ID_VERSION 004
+#define VOLUME_ID_VERSION 022
#define VOLUME_ID_LABEL_SIZE 64
#define VOLUME_ID_UUID_SIZE 16
#define VOLUME_ID_UUID_STRING_SIZE 37
-#define VOLUME_ID_PATH_MAX 255
+#define VOLUME_ID_FORMAT_SIZE 32
+#define VOLUME_ID_PATH_MAX 256
+#define VOLUME_ID_PARTITIONS_MAX 16
+enum volume_id_usage {
+ VOLUME_ID_UNUSED,
+ VOLUME_ID_UNPROBED,
+ VOLUME_ID_OTHER,
+ VOLUME_ID_FILESYSTEM,
+ VOLUME_ID_PARTITIONTABLE,
+ VOLUME_ID_RAID
+};
+
+enum volume_id_type {
+ VOLUME_ID_ALL,
+ VOLUME_ID_MSDOSPARTTABLE,
+ VOLUME_ID_MSDOSEXTENDED,
+ VOLUME_ID_SWAP,
+ VOLUME_ID_EXT2,
+ VOLUME_ID_EXT3,
+ VOLUME_ID_REISERFS,
+ VOLUME_ID_XFS,
+ VOLUME_ID_JFS,
+ VOLUME_ID_VFAT,
+ VOLUME_ID_UDF,
+ VOLUME_ID_ISO9660,
+ VOLUME_ID_NTFS,
+ VOLUME_ID_MACPARTMAP,
+ VOLUME_ID_HFS,
+ VOLUME_ID_HFSPLUS,
+ VOLUME_ID_UFS,
+ VOLUME_ID_LINUX_RAID,
+ VOLUME_ID_LVM1,
+ VOLUME_ID_LVM2
+};
-enum filesystem_type {
- ALL,
- EXT2,
- EXT3,
- REISER,
- XFS,
- JFS,
- MSDOS,
- VFAT,
- UDF,
- ISO9660,
- NTFS,
- SWAP
+struct volume_id_partition {
+ enum volume_id_usage usage_id;
+ enum volume_id_type type_id;
+ char *type;
+ unsigned long long off;
+ unsigned long long len;
};
struct volume_id {
unsigned char label_raw[VOLUME_ID_LABEL_SIZE];
unsigned int label_raw_len;
- char label_string[VOLUME_ID_LABEL_SIZE+1];
- unsigned char uuid[VOLUME_ID_UUID_SIZE];
- char uuid_string[VOLUME_ID_UUID_STRING_SIZE];
- enum filesystem_type fs_type;
- char *fs_name;
+ char label[VOLUME_ID_LABEL_SIZE+1];
+ unsigned char uuid_raw[VOLUME_ID_UUID_SIZE];
+ char uuid[VOLUME_ID_UUID_STRING_SIZE];
+ enum volume_id_usage usage_id;
+ enum volume_id_type type_id;
+ char *type;
+ char type_version[VOLUME_ID_FORMAT_SIZE];
+ struct volume_id_partition *partitions;
+ unsigned int partition_count;
int fd;
unsigned char *sbbuf;
unsigned int sbbuf_len;
unsigned char *seekbuf;
- unsigned int seekbuf_off;
+ unsigned long long seekbuf_off;
unsigned int seekbuf_len;
int fd_close;
};
@@ -71,7 +101,8 @@ extern struct volume_id *volume_id_open_node(const char *path);
extern struct volume_id *volume_id_open_dev_t(dev_t devt);
/* probe volume for filesystem type and try to read label/uuid */
-extern int volume_id_probe(struct volume_id *id, enum filesystem_type fs_type);
+extern int volume_id_probe(struct volume_id *id, enum volume_id_type type,
+ unsigned long long off, unsigned long long size);
/* free allocated device info */
extern void volume_id_close(struct volume_id *id);