libfdisk: add version.c
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
dee59a1ee6
commit
791da22d0e
|
@ -127,6 +127,9 @@ edit_cmd = sed \
|
||||||
-e 's|@LIBSMARTCOLS_VERSION[@]|$(LIBSMARTCOLS_VERSION)|g' \
|
-e 's|@LIBSMARTCOLS_VERSION[@]|$(LIBSMARTCOLS_VERSION)|g' \
|
||||||
-e 's|@LIBFDISK_PC_REQUIRES[@]|$(LIBFDISK_PC_REQUIRES)|g' \
|
-e 's|@LIBFDISK_PC_REQUIRES[@]|$(LIBFDISK_PC_REQUIRES)|g' \
|
||||||
-e 's|@LIBFDISK_VERSION[@]|$(LIBFDISK_VERSION)|g' \
|
-e 's|@LIBFDISK_VERSION[@]|$(LIBFDISK_VERSION)|g' \
|
||||||
|
-e 's|@LIBFDISK_MAJOR_VERSION[@]|$(LIBFDISK_MAJOR_VERSION)|g' \
|
||||||
|
-e 's|@LIBFDISK_MINOR_VERSION[@]|$(LIBFDISK_MINOR_VERSION)|g' \
|
||||||
|
-e 's|@LIBFDISK_PATCH_VERSION[@]|$(LIBFDISK_PATCH_VERSION)|g' \
|
||||||
-e 's|@LIBBLKID_VERSION[@]|$(LIBBLKID_VERSION)|g'
|
-e 's|@LIBBLKID_VERSION[@]|$(LIBBLKID_VERSION)|g'
|
||||||
|
|
||||||
CLEANFILES += $(PATHFILES)
|
CLEANFILES += $(PATHFILES)
|
||||||
|
|
|
@ -880,6 +880,9 @@ AS_IF([test "x$build_libblkid" = xyes],
|
||||||
AC_SUBST([LIBFDISK_PC_REQUIRES])
|
AC_SUBST([LIBFDISK_PC_REQUIRES])
|
||||||
|
|
||||||
AC_SUBST([LIBFDISK_VERSION])
|
AC_SUBST([LIBFDISK_VERSION])
|
||||||
|
AC_SUBST([LIBFDISK_MAJOR_VERSION], $PACKAGE_VERSION_MAJOR)
|
||||||
|
AC_SUBST([LIBFDISK_MINOR_VERSION], $PACKAGE_VERSION_MINOR)
|
||||||
|
AC_SUBST([LIBFDISK_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
|
||||||
AC_SUBST([LIBFDISK_VERSION_INFO])
|
AC_SUBST([LIBFDISK_VERSION_INFO])
|
||||||
AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string])
|
AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string])
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,8 @@ available from ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
|
||||||
<xi:include href="xml/iter.xml"/>
|
<xi:include href="xml/iter.xml"/>
|
||||||
<xi:include href="xml/utils.xml"/>
|
<xi:include href="xml/utils.xml"/>
|
||||||
<xi:include href="xml/init.xml"/>
|
<xi:include href="xml/init.xml"/>
|
||||||
|
<xi:include href="xml/version-utils.xml"/>
|
||||||
|
|
||||||
</part>
|
</part>
|
||||||
<index id="api-index-full">
|
<index id="api-index-full">
|
||||||
<title>API Index</title>
|
<title>API Index</title>
|
||||||
|
|
|
@ -1,9 +1,19 @@
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>init</FILE>
|
<FILE>init</FILE>
|
||||||
LIBFDISK_VERSION
|
|
||||||
fdisk_init_debug
|
fdisk_init_debug
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>version-utils</FILE>
|
||||||
|
LIBFDISK_MAJOR_VERSION
|
||||||
|
LIBFDISK_MINOR_VERSION
|
||||||
|
LIBFDISK_PATCH_VERSION
|
||||||
|
fdisk_parse_version_string
|
||||||
|
fdisk_get_library_version
|
||||||
|
fdisk_get_library_features
|
||||||
|
LIBFDISK_VERSION
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>ask</FILE>
|
<FILE>ask</FILE>
|
||||||
fdisk_info
|
fdisk_info
|
||||||
|
|
|
@ -20,6 +20,7 @@ libfdisk_la_SOURCES = \
|
||||||
libfdisk/src/table.c \
|
libfdisk/src/table.c \
|
||||||
libfdisk/src/iter.c \
|
libfdisk/src/iter.c \
|
||||||
libfdisk/src/script.c \
|
libfdisk/src/script.c \
|
||||||
|
libfdisk/src/version.c \
|
||||||
\
|
\
|
||||||
libfdisk/src/sun.c \
|
libfdisk/src/sun.c \
|
||||||
libfdisk/src/sgi.c \
|
libfdisk/src/sgi.c \
|
||||||
|
@ -64,7 +65,8 @@ if BUILD_LIBFDISK_TESTS
|
||||||
check_PROGRAMS += \
|
check_PROGRAMS += \
|
||||||
test_fdisk_ask \
|
test_fdisk_ask \
|
||||||
test_fdisk_script \
|
test_fdisk_script \
|
||||||
test_fdisk_utils
|
test_fdisk_utils \
|
||||||
|
test_fdisk_version
|
||||||
|
|
||||||
libfdisk_tests_cflags = -DTEST_PROGRAM $(libfdisk_la_CFLAGS)
|
libfdisk_tests_cflags = -DTEST_PROGRAM $(libfdisk_la_CFLAGS)
|
||||||
libfdisk_tests_ldflags = libuuid.la -static
|
libfdisk_tests_ldflags = libuuid.la -static
|
||||||
|
@ -89,6 +91,11 @@ test_fdisk_script_CFLAGS = $(libfdisk_tests_cflags)
|
||||||
test_fdisk_script_LDFLAGS = $(libfdisk_tests_ldflags)
|
test_fdisk_script_LDFLAGS = $(libfdisk_tests_ldflags)
|
||||||
test_fdisk_script_LDADD = $(libfdisk_tests_ldadd)
|
test_fdisk_script_LDADD = $(libfdisk_tests_ldadd)
|
||||||
|
|
||||||
|
test_fdisk_version_SOURCES = libfdisk/src/version.c
|
||||||
|
test_fdisk_version_CFLAGS = $(libfdisk_tests_cflags)
|
||||||
|
test_fdisk_version_LDFLAGS = $(libfdisk_tests_ldflags)
|
||||||
|
test_fdisk_version_LDADD = $(libfdisk_tests_ldadd)
|
||||||
|
|
||||||
endif # BUILD_LIBFDISK_TESTS
|
endif # BUILD_LIBFDISK_TESTS
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,10 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
#define LIBFDISK_VERSION "@LIBFDISK_VERSION@"
|
#define LIBFDISK_VERSION "@LIBFDISK_VERSION@"
|
||||||
|
|
||||||
|
#define LIBFDISK_MAJOR_VERSION @LIBFDISK_MAJOR_VERSION@
|
||||||
|
#define LIBFDISK_MINOR_VERSION @LIBFDISK_MINOR_VERSION@
|
||||||
|
#define LIBFDISK_PATCH_VERSION @LIBFDISK_PATCH_VERSION@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fdisk_context:
|
* fdisk_context:
|
||||||
*
|
*
|
||||||
|
@ -139,6 +143,11 @@ enum fdisk_asktype {
|
||||||
/* init.c */
|
/* init.c */
|
||||||
extern void fdisk_init_debug(int mask);
|
extern void fdisk_init_debug(int mask);
|
||||||
|
|
||||||
|
/* version.c */
|
||||||
|
extern int fdisk_parse_version_string(const char *ver_string);
|
||||||
|
extern int fdisk_get_library_version(const char **ver_string);
|
||||||
|
extern int fdisk_get_library_features(const char ***features);
|
||||||
|
|
||||||
/* context.h */
|
/* context.h */
|
||||||
|
|
||||||
#define FDISK_PLURAL 0
|
#define FDISK_PLURAL 0
|
||||||
|
|
|
@ -71,6 +71,8 @@ global:
|
||||||
fdisk_get_grain_size;
|
fdisk_get_grain_size;
|
||||||
fdisk_get_label;
|
fdisk_get_label;
|
||||||
fdisk_get_last_lba;
|
fdisk_get_last_lba;
|
||||||
|
fdisk_get_library_features;
|
||||||
|
fdisk_get_library_version;
|
||||||
fdisk_get_minimal_iosize;
|
fdisk_get_minimal_iosize;
|
||||||
fdisk_get_nlabels;
|
fdisk_get_nlabels;
|
||||||
fdisk_get_npartitions;
|
fdisk_get_npartitions;
|
||||||
|
@ -125,6 +127,7 @@ global:
|
||||||
fdisk_new_unknown_parttype;
|
fdisk_new_unknown_parttype;
|
||||||
fdisk_next_label;
|
fdisk_next_label;
|
||||||
fdisk_override_geometry;
|
fdisk_override_geometry;
|
||||||
|
fdisk_parse_version_string;
|
||||||
fdisk_partition_cmp_partno;
|
fdisk_partition_cmp_partno;
|
||||||
fdisk_partition_cmp_start;
|
fdisk_partition_cmp_start;
|
||||||
fdisk_partition_end_follow_default;
|
fdisk_partition_end_follow_default;
|
||||||
|
@ -159,7 +162,6 @@ global:
|
||||||
fdisk_partition_size_explicit;
|
fdisk_partition_size_explicit;
|
||||||
fdisk_partition_start_follow_default;
|
fdisk_partition_start_follow_default;
|
||||||
fdisk_partition_start_is_default;
|
fdisk_partition_start_is_default;
|
||||||
fdisk_toggle_partition_flag;
|
|
||||||
fdisk_partition_to_string;
|
fdisk_partition_to_string;
|
||||||
fdisk_partition_unset_partno;
|
fdisk_partition_unset_partno;
|
||||||
fdisk_partition_unset_size;
|
fdisk_partition_unset_size;
|
||||||
|
@ -218,6 +220,7 @@ global:
|
||||||
fdisk_table_remove_partition;
|
fdisk_table_remove_partition;
|
||||||
fdisk_table_sort_partitions;
|
fdisk_table_sort_partitions;
|
||||||
fdisk_table_wrong_order;
|
fdisk_table_wrong_order;
|
||||||
|
fdisk_toggle_partition_flag;
|
||||||
fdisk_unref_ask;
|
fdisk_unref_ask;
|
||||||
fdisk_unref_context;
|
fdisk_unref_context;
|
||||||
fdisk_unref_partition;
|
fdisk_unref_partition;
|
||||||
|
|
|
@ -0,0 +1,125 @@
|
||||||
|
/*
|
||||||
|
* version.c - Return the version of the library
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015 Karel Zak <kzak@redhat.com>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION: version-utils
|
||||||
|
* @title: Version functions
|
||||||
|
* @short_description: functions to get the library version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#include "fdiskP.h"
|
||||||
|
|
||||||
|
static const char *lib_version = LIBFDISK_VERSION;
|
||||||
|
static const char *lib_features[] = {
|
||||||
|
#ifdef CONFIG_LIBFDISK_ASSERT
|
||||||
|
"assert",
|
||||||
|
#endif
|
||||||
|
"debug", /* always enabled */
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdisk_parse_version_string:
|
||||||
|
* @ver_string: version string (e.g "2.18.0")
|
||||||
|
*
|
||||||
|
* Returns: release version code.
|
||||||
|
*/
|
||||||
|
int fdisk_parse_version_string(const char *ver_string)
|
||||||
|
{
|
||||||
|
const char *cp;
|
||||||
|
int version = 0;
|
||||||
|
|
||||||
|
assert(ver_string);
|
||||||
|
|
||||||
|
for (cp = ver_string; *cp; cp++) {
|
||||||
|
if (*cp == '.')
|
||||||
|
continue;
|
||||||
|
if (!isdigit(*cp))
|
||||||
|
break;
|
||||||
|
version = (version * 10) + (*cp - '0');
|
||||||
|
}
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdisk_get_library_version:
|
||||||
|
* @ver_string: return pointer to the static library version string if not NULL
|
||||||
|
*
|
||||||
|
* Returns: release version number.
|
||||||
|
*/
|
||||||
|
int fdisk_get_library_version(const char **ver_string)
|
||||||
|
{
|
||||||
|
if (ver_string)
|
||||||
|
*ver_string = lib_version;
|
||||||
|
|
||||||
|
return fdisk_parse_version_string(lib_version);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fdisk_get_library_features:
|
||||||
|
* @features: returns a pointer to the static array of strings, the array is
|
||||||
|
* terminated by NULL.
|
||||||
|
*
|
||||||
|
* Returns: number of items in the features array not including the last NULL,
|
||||||
|
* or less than zero in case of error
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* <informalexample>
|
||||||
|
* <programlisting>
|
||||||
|
* const char *features;
|
||||||
|
*
|
||||||
|
* fdisk_get_library_features(&features);
|
||||||
|
* while (features && *features)
|
||||||
|
* printf("%s\n", *features++);
|
||||||
|
* </programlisting>
|
||||||
|
* </informalexample>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int fdisk_get_library_features(const char ***features)
|
||||||
|
{
|
||||||
|
if (!features)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
*features = lib_features;
|
||||||
|
return ARRAY_SIZE(lib_features) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef TEST_PROGRAM
|
||||||
|
int test_version(struct fdisk_test *ts, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
const char *ver;
|
||||||
|
const char **features;
|
||||||
|
|
||||||
|
fdisk_get_library_version(&ver);
|
||||||
|
|
||||||
|
printf("Library version: %s\n", ver);
|
||||||
|
printf("Library API version: " LIBFDISK_VERSION "\n");
|
||||||
|
printf("Library features:");
|
||||||
|
|
||||||
|
fdisk_get_library_features(&features);
|
||||||
|
while (features && *features)
|
||||||
|
printf(" %s", *features++);
|
||||||
|
|
||||||
|
if (fdisk_get_library_version(NULL) ==
|
||||||
|
fdisk_parse_version_string(LIBFDISK_VERSION))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
struct fdisk_test ts[] = {
|
||||||
|
{ "--print", test_version, "print versions" },
|
||||||
|
{ NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
return fdisk_run_test(ts, argc, argv);
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
Reference in New Issue