From: Arvin Schnell Date: Tue, 29 Mar 2016 13:57:16 +0000 (+0200) Subject: - added function to format qgroup X-Git-Tag: v0.3.3~17^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8ec57ec5da585717a358ceba3c60b97411dc3ff2;p=thirdparty%2Fsnapper.git - added function to format qgroup --- diff --git a/snapper/BtrfsUtils.cc b/snapper/BtrfsUtils.cc index bd2d87cf..22bc4110 100644 --- a/snapper/BtrfsUtils.cc +++ b/snapper/BtrfsUtils.cc @@ -358,6 +358,16 @@ namespace snapper } + string + format_qgroup(qgroup_t qgroup) + { + std::ostringstream ret; + classic(ret); + ret << (qgroup >> 48) << "/" << (qgroup & ((1LLU << 48) - 1)); + return ret.str(); + } + + void qgroup_create(int fd, qgroup_t qgroup) { diff --git a/snapper/BtrfsUtils.h b/snapper/BtrfsUtils.h index f76b130a..1e4421b5 100644 --- a/snapper/BtrfsUtils.h +++ b/snapper/BtrfsUtils.h @@ -65,6 +65,7 @@ namespace snapper qgroup_t calc_qgroup(uint64_t level, subvolid_t id); qgroup_t parse_qgroup(const string& str); + string format_qgroup(qgroup_t qgroup); void qgroup_create(int fd, qgroup_t qgroup); void qgroup_destroy(int fd, qgroup_t qgroup); diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am index a29ccd4b..90c19580 100644 --- a/testsuite/Makefile.am +++ b/testsuite/Makefile.am @@ -7,7 +7,7 @@ AM_CPPFLAGS = -I$(top_srcdir) $(DBUS_CFLAGS) LDADD = ../snapper/libsnapper.la ../dbus/libdbus.la -lboost_unit_test_framework check_PROGRAMS = sysconfig-get1.test dirname1.test basename1.test \ - equal-date.test dbus-escape.test cmp-lt.test + equal-date.test dbus-escape.test cmp-lt.test qgroup1.test TESTS = $(check_PROGRAMS) diff --git a/testsuite/qgroup1.cc b/testsuite/qgroup1.cc new file mode 100644 index 00000000..1e563067 --- /dev/null +++ b/testsuite/qgroup1.cc @@ -0,0 +1,28 @@ + +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MODULE qgroup1 + +#include + +#include + +using namespace snapper; +using namespace BtrfsUtils; + + +BOOST_AUTO_TEST_CASE(parse) +{ + BOOST_CHECK_EQUAL(parse_qgroup("0/0"), 0); + BOOST_CHECK_EQUAL(parse_qgroup("0/2"), 2); + BOOST_CHECK_EQUAL(parse_qgroup("1/0"), 1LLU << 48); + BOOST_CHECK_EQUAL(parse_qgroup("1/2"), (1LLU << 48) + 2); +} + + +BOOST_AUTO_TEST_CASE(format) +{ + BOOST_CHECK_EQUAL(format_qgroup(0), "0/0"); + BOOST_CHECK_EQUAL(format_qgroup(2), "0/2"); + BOOST_CHECK_EQUAL(format_qgroup(1LLU << 48), "1/0"); + BOOST_CHECK_EQUAL(format_qgroup((1LLU << 48) + 2), "1/2"); +}