From 40c9c3a6b7e6c4cda627d76edb14e92e823451c3 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 12 May 2016 14:37:29 +0200 Subject: [PATCH] libfdisk: add API for work with labelitems Signed-off-by: Karel Zak --- libfdisk/docs/libfdisk-sections.txt | 31 +++- libfdisk/src/Makemodule.am | 9 +- libfdisk/src/fdiskP.h | 4 +- libfdisk/src/init.c | 1 + libfdisk/src/item.c | 243 ++++++++++++++++++++++++++++ libfdisk/src/label.c | 11 +- libfdisk/src/libfdisk.h.in | 14 +- libfdisk/src/libfdisk.sym | 10 ++ 8 files changed, 309 insertions(+), 14 deletions(-) create mode 100644 libfdisk/src/item.c diff --git a/libfdisk/docs/libfdisk-sections.txt b/libfdisk/docs/libfdisk-sections.txt index 14d770b7e..7ae7d9a96 100644 --- a/libfdisk/docs/libfdisk-sections.txt +++ b/libfdisk/docs/libfdisk-sections.txt @@ -91,13 +91,6 @@ fdisk_get_nlabels fdisk_next_label fdisk_get_npartitions -fdisk_field -fdisk_field_get_id -fdisk_field_get_name -fdisk_field_get_width -fdisk_field_is_number -fdisk_fieldtype - fdisk_label fdisk_is_label fdisk_label_get_field @@ -347,3 +340,27 @@ fdisk_iter_get_direction fdisk_new_iter fdisk_reset_iter + +
+item +fdisk_new_labelitem +fdisk_ref_labelitem +fdisk_reset_labelitem +fdisk_unref_labelitem +fdisk_labelitem_get_name +fdisk_labelitem_get_id +fdisk_labelitem_get_data_u64 +fdisk_labelitem_get_data_string +fdisk_labelitem_is_string +fdisk_labelitem_is_number +
+ +
+field +fdisk_field +fdisk_field_get_id +fdisk_field_get_name +fdisk_field_get_width +fdisk_field_is_number +fdisk_fieldtype +
diff --git a/libfdisk/src/Makemodule.am b/libfdisk/src/Makemodule.am index e24ae5620..e3baf9038 100644 --- a/libfdisk/src/Makemodule.am +++ b/libfdisk/src/Makemodule.am @@ -10,6 +10,7 @@ libfdisk_la_SOURCES = \ libfdisk/src/fdiskP.h \ libfdisk/src/init.c \ libfdisk/src/field.c \ + libfdisk/src/item.c \ libfdisk/src/test.c \ libfdisk/src/ask.c \ libfdisk/src/alignment.c \ @@ -72,7 +73,8 @@ check_PROGRAMS += \ test_fdisk_gpt \ test_fdisk_script \ test_fdisk_utils \ - test_fdisk_version + test_fdisk_version \ + test_fdisk_item libfdisk_tests_cflags = -DTEST_PROGRAM $(libfdisk_la_CFLAGS) $(NO_UNUSED_WARN_CFLAGS) libfdisk_tests_ldflags = libuuid.la -static @@ -107,6 +109,11 @@ test_fdisk_version_CFLAGS = $(libfdisk_tests_cflags) test_fdisk_version_LDFLAGS = $(libfdisk_tests_ldflags) test_fdisk_version_LDADD = $(libfdisk_tests_ldadd) +test_fdisk_item_SOURCES = libfdisk/src/item.c +test_fdisk_item_CFLAGS = $(libfdisk_tests_cflags) +test_fdisk_item_LDFLAGS = $(libfdisk_tests_ldflags) +test_fdisk_item_LDADD = $(libfdisk_tests_ldadd) + endif # BUILD_LIBFDISK_TESTS diff --git a/libfdisk/src/fdiskP.h b/libfdisk/src/fdiskP.h index 6444c3d3e..e20723e61 100644 --- a/libfdisk/src/fdiskP.h +++ b/libfdisk/src/fdiskP.h @@ -39,6 +39,7 @@ #define LIBFDISK_DEBUG_TAB (1 << 8) #define LIBFDISK_DEBUG_SCRIPT (1 << 9) #define LIBFDISK_DEBUG_WIPE (1 << 10) +#define LIBFDISK_DEBUG_ITEM (1 << 11) #define LIBFDISK_DEBUG_ALL 0xFFFF UL_DEBUG_DECLARE_MASK(libfdisk); @@ -420,9 +421,10 @@ extern int fdisk_probe_labels(struct fdisk_context *cxt); extern void fdisk_deinit_label(struct fdisk_label *lb); struct fdisk_labelitem { + int refcount; /* reference counter */ int id; /*