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|@LIBFDISK_PC_REQUIRES[@]|$(LIBFDISK_PC_REQUIRES)|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'
|
||||
|
||||
CLEANFILES += $(PATHFILES)
|
||||
|
|
|
@ -880,6 +880,9 @@ AS_IF([test "x$build_libblkid" = xyes],
|
|||
AC_SUBST([LIBFDISK_PC_REQUIRES])
|
||||
|
||||
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_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/utils.xml"/>
|
||||
<xi:include href="xml/init.xml"/>
|
||||
<xi:include href="xml/version-utils.xml"/>
|
||||
|
||||
</part>
|
||||
<index id="api-index-full">
|
||||
<title>API Index</title>
|
||||
|
|
|
@ -1,9 +1,19 @@
|
|||
<SECTION>
|
||||
<FILE>init</FILE>
|
||||
LIBFDISK_VERSION
|
||||
fdisk_init_debug
|
||||
</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>
|
||||
<FILE>ask</FILE>
|
||||
fdisk_info
|
||||
|
|
|
@ -20,6 +20,7 @@ libfdisk_la_SOURCES = \
|
|||
libfdisk/src/table.c \
|
||||
libfdisk/src/iter.c \
|
||||
libfdisk/src/script.c \
|
||||
libfdisk/src/version.c \
|
||||
\
|
||||
libfdisk/src/sun.c \
|
||||
libfdisk/src/sgi.c \
|
||||
|
@ -64,7 +65,8 @@ if BUILD_LIBFDISK_TESTS
|
|||
check_PROGRAMS += \
|
||||
test_fdisk_ask \
|
||||
test_fdisk_script \
|
||||
test_fdisk_utils
|
||||
test_fdisk_utils \
|
||||
test_fdisk_version
|
||||
|
||||
libfdisk_tests_cflags = -DTEST_PROGRAM $(libfdisk_la_CFLAGS)
|
||||
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_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
|
||||
|
||||
|
||||
|
|
|
@ -36,6 +36,10 @@ extern "C" {
|
|||
*/
|
||||
#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:
|
||||
*
|
||||
|
@ -139,6 +143,11 @@ enum fdisk_asktype {
|
|||
/* init.c */
|
||||
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 */
|
||||
|
||||
#define FDISK_PLURAL 0
|
||||
|
|
|
@ -71,6 +71,8 @@ global:
|
|||
fdisk_get_grain_size;
|
||||
fdisk_get_label;
|
||||
fdisk_get_last_lba;
|
||||
fdisk_get_library_features;
|
||||
fdisk_get_library_version;
|
||||
fdisk_get_minimal_iosize;
|
||||
fdisk_get_nlabels;
|
||||
fdisk_get_npartitions;
|
||||
|
@ -125,6 +127,7 @@ global:
|
|||
fdisk_new_unknown_parttype;
|
||||
fdisk_next_label;
|
||||
fdisk_override_geometry;
|
||||
fdisk_parse_version_string;
|
||||
fdisk_partition_cmp_partno;
|
||||
fdisk_partition_cmp_start;
|
||||
fdisk_partition_end_follow_default;
|
||||
|
@ -159,7 +162,6 @@ global:
|
|||
fdisk_partition_size_explicit;
|
||||
fdisk_partition_start_follow_default;
|
||||
fdisk_partition_start_is_default;
|
||||
fdisk_toggle_partition_flag;
|
||||
fdisk_partition_to_string;
|
||||
fdisk_partition_unset_partno;
|
||||
fdisk_partition_unset_size;
|
||||
|
@ -218,6 +220,7 @@ global:
|
|||
fdisk_table_remove_partition;
|
||||
fdisk_table_sort_partitions;
|
||||
fdisk_table_wrong_order;
|
||||
fdisk_toggle_partition_flag;
|
||||
fdisk_unref_ask;
|
||||
fdisk_unref_context;
|
||||
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