X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=extras%2Fvolume_id%2Flib%2Flibvolume_id.h;h=19aee68d010cef74be2dec56022760ce054df3b5;hp=523543f7ee413f8cb925d6b280db6ed22eb4f0df;hb=8b5238670d2e741bc71ae3e79b499682965dc2fd;hpb=e7ea9c50e8eaab772206268739db2d59ba7bd709 diff --git a/extras/volume_id/lib/libvolume_id.h b/extras/volume_id/lib/libvolume_id.h index 523543f7e..19aee68d0 100644 --- a/extras/volume_id/lib/libvolume_id.h +++ b/extras/volume_id/lib/libvolume_id.h @@ -16,9 +16,39 @@ typedef void (*volume_id_log_fn_t)(int priority, const char *file, int line, const char *format, ...) __attribute__ ((format(printf, 4, 5))); - extern volume_id_log_fn_t volume_id_log_fn; +struct volume_id; +typedef int (*volume_id_probe_fn_t)(struct volume_id *id, uint64_t off, uint64_t size); +typedef int (*all_probers_fn_t)(volume_id_probe_fn_t probe_fn, + struct volume_id *id, uint64_t off, uint64_t size, + void *data); + +extern struct volume_id *volume_id_open_fd(int fd); +extern void volume_id_close(struct volume_id *id); +extern int volume_id_probe_filesystem(struct volume_id *id, uint64_t off, uint64_t size); +extern int volume_id_probe_raid(struct volume_id *id, uint64_t off, uint64_t size); +extern int volume_id_probe_all(struct volume_id *id, uint64_t off, uint64_t size); +extern const volume_id_probe_fn_t *volume_id_get_prober_by_type(const char *type); +extern void volume_id_all_probers(all_probers_fn_t all_probers_fn, + struct volume_id *id, uint64_t off, uint64_t size, + void *data); +extern int volume_id_get_label(struct volume_id *id, const char **label); +extern int volume_id_get_label_raw(struct volume_id *id, const uint8_t **label, size_t *len); +extern int volume_id_get_uuid(struct volume_id *id, const char **uuid); +extern int volume_id_get_uuid_raw(struct volume_id *id, const uint8_t **uuid, size_t *len); +extern int volume_id_get_usage(struct volume_id *id, const char **usage); +extern int volume_id_get_type(struct volume_id *id, const char **type); +extern int volume_id_get_type_version(struct volume_id *id, const char **type_version); +extern int volume_id_encode_string(const char *str, char *str_enc, size_t len); + +/* + * Note: everything below will be made private or removed from + * a future version, and a new major release of libvolume_id + */ + +extern struct volume_id *volume_id_open_node(const char *path); + #define VOLUME_ID_LABEL_SIZE 64 #define VOLUME_ID_UUID_SIZE 36 #define VOLUME_ID_FORMAT_SIZE 32 @@ -56,21 +86,6 @@ struct volume_id { int fd_close:1; }; -extern int volume_id_get_label(struct volume_id *id, const char **label); -extern int volume_id_get_label_raw(struct volume_id *id, const uint8_t **label, size_t *len); -extern int volume_id_get_uuid(struct volume_id *id, const char **uuid); -extern int volume_id_get_uuid_raw(struct volume_id *id, const uint8_t **uuid, size_t *len); -extern int volume_id_get_usage(struct volume_id *id, const char **usage); -extern int volume_id_get_type(struct volume_id *id, const char **type); -extern int volume_id_get_type_version(struct volume_id *id, const char **type_version); - -extern struct volume_id *volume_id_open_fd(int fd); -extern struct volume_id *volume_id_open_node(const char *path); -extern int volume_id_probe_all(struct volume_id *id, uint64_t off, uint64_t size); -extern int volume_id_probe_filesystem(struct volume_id *id, uint64_t off, uint64_t size); -extern int volume_id_probe_raid(struct volume_id *id, uint64_t off, uint64_t size); -extern void volume_id_close(struct volume_id *id); - /* filesystems */ extern int volume_id_probe_cramfs(struct volume_id *id, uint64_t off, uint64_t size); extern int volume_id_probe_ext(struct volume_id *id, uint64_t off, uint64_t size); @@ -103,6 +118,7 @@ extern int volume_id_probe_luks(struct volume_id *id, uint64_t off, uint64_t siz extern int volume_id_probe_linux_raid(struct volume_id *id, uint64_t off, uint64_t size); extern int volume_id_probe_lvm1(struct volume_id *id, uint64_t off, uint64_t size); extern int volume_id_probe_lvm2(struct volume_id *id, uint64_t off, uint64_t size); +extern int volume_id_probe_ddf_raid(struct volume_id *id, uint64_t off, uint64_t size); /* bios raid */ extern int volume_id_probe_intel_software_raid(struct volume_id *id, uint64_t off, uint64_t size);