INSTALL_LIB = ${INSTALL} -m 755
SHLIB_CUR = 0
-SHLIB_REV = 76
+SHLIB_REV = 77
SHLIB_AGE = 0
SHLIB = libvolume_id.so.$(SHLIB_CUR).$(SHLIB_REV).$(SHLIB_AGE)
{ global:
volume_id_log_fn;
+
+ volume_id_get_label;
+ volume_id_get_label_raw;
+ volume_id_get_uuid;
+ volume_id_get_uuid_raw;
+ volume_id_get_usage;
+ volume_id_get_type;
+ volume_id_get_type_version;
+
volume_id_open_fd;
volume_id_open_node;
volume_id_probe_all;
/*
* volume_id - reads volume label and uuid
*
- * Copyright (C) 2005 Kay Sievers <kay.sievers@vrfy.org>
+ * Copyright (C) 2005-2007 Kay Sievers <kay.sievers@vrfy.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
#include <stdint.h>
#include <stddef.h>
-#ifndef PACKED
-#define PACKED __attribute__((packed))
-#endif
-
-
typedef void (*volume_id_log_fn_t)(int priority, const char *file, int line, const char *format, ...)
__attribute__ ((format(printf, 4, 5)));
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);
#include <byteswap.h>
#include <syslog.h>
+#ifndef PACKED
+#define PACKED __attribute__((packed))
+#endif
+
#define err(format, arg...) volume_id_log_fn(LOG_ERR, __FILE__, __LINE__, format, ##arg)
#define info(format, arg...) volume_id_log_fn(LOG_INFO, __FILE__, __LINE__, format, ##arg)
#ifdef DEBUG
/*
* volume_id - reads volume label and uuid
*
- * Copyright (C) 2005 Kay Sievers <kay.sievers@vrfy.org>
+ * Copyright (C) 2005-2007 Kay Sievers <kay.sievers@vrfy.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
volume_id_log_fn_t volume_id_log_fn = default_log;
+int volume_id_get_label(struct volume_id *id, const char **label)
+{
+ if (id == NULL)
+ return -EINVAL;
+ if (label == NULL)
+ return -EINVAL;
+ if (id->usage_id == VOLUME_ID_UNUSED)
+ return 0;
+
+ *label = id->label;
+ return 1;
+}
+
+int volume_id_get_label_raw(struct volume_id *id, const uint8_t **label, size_t *len)
+{
+ if (id == NULL)
+ return -EINVAL;
+ if (label == NULL)
+ return -EINVAL;
+ if (len == NULL)
+ return -EINVAL;
+ if (id->usage_id == VOLUME_ID_UNUSED)
+ return 0;
+
+ *label = id->label_raw;
+ *len = id->label_raw_len;
+ return 1;
+}
+
+int volume_id_get_uuid(struct volume_id *id, const char **uuid)
+{
+ if (id == NULL)
+ return -EINVAL;
+ if (uuid == NULL)
+ return -EINVAL;
+ if (id->usage_id == VOLUME_ID_UNUSED)
+ return 0;
+
+ *uuid = id->uuid;
+ return 1;
+}
+
+int volume_id_get_uuid_raw(struct volume_id *id, const uint8_t **uuid, size_t *len)
+{
+ if (id == NULL)
+ return -EINVAL;
+ if (uuid == NULL)
+ return -EINVAL;
+ if (len == NULL)
+ return -EINVAL;
+ if (id->usage_id == VOLUME_ID_UNUSED)
+ return 0;
+
+ *uuid = id->uuid_raw;
+ *len = id->uuid_raw_len;
+ return 1;
+}
+
+int volume_id_get_usage(struct volume_id *id, const char **usage)
+{
+ if (id == NULL)
+ return -EINVAL;
+ if (usage == NULL)
+ return -EINVAL;
+ if (id->usage_id == VOLUME_ID_UNUSED)
+ return 0;
+
+ *usage = id->usage;
+ return 1;
+}
+
+int volume_id_get_type(struct volume_id *id, const char **type)
+{
+ if (id == NULL)
+ return -EINVAL;
+ if (type == NULL)
+ return -EINVAL;
+ if (id->usage_id == VOLUME_ID_UNUSED)
+ return 0;
+
+ *type = id->type;
+ return 1;
+}
+
+int volume_id_get_type_version(struct volume_id *id, const char **type_version)
+{
+ if (id == NULL)
+ return -EINVAL;
+ if (type_version == NULL)
+ return -EINVAL;
+ if (id->usage_id == VOLUME_ID_UNUSED)
+ return 0;
+
+ *type_version = id->type_version;
+ return 1;
+}
+
int volume_id_probe_raid(struct volume_id *id, uint64_t off, uint64_t size)
{
if (id == NULL)