Skip to content
This repository has been archived by the owner on Sep 4, 2021. It is now read-only.

Commit

Permalink
[os] df/free: do not rely on btrfs tool presence
Browse files Browse the repository at this point in the history
Signed-off-by: Denis Zalevskiy <denis.zalevskiy@jolla.com>
  • Loading branch information
Denis Zalevskiy committed Oct 28, 2014
1 parent 46110d0 commit 4ea6aac
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
1 change: 1 addition & 0 deletions rpm/qtaround.spec
Expand Up @@ -48,6 +48,7 @@ License: LGPLv2.1
Group: System Environment/Libraries
Requires: %{name} = %{version}-%{release}
Requires: %{name}-dbus = %{version}-%{release}
Requires: btrfs-progs
%description tests
%summary

Expand Down
24 changes: 21 additions & 3 deletions src/os.cpp
Expand Up @@ -307,9 +307,11 @@ class BtrFs {

QVariantMap df()
{
QStringList cmd_options = {"-c", "btrfs fi df " + singleQuoted(path)};
auto out = str(subprocess::check_output("sh", cmd_options));
auto data = filterEmpty(out.trimmed().split("\n"));
bool isOk;
QStringList data;
std::tie(isOk, data) = fiDf();
if (!isOk)
return QVariantMap{};

auto split_colon = [](QString const &l) { return l.split(":"); };
auto name_fields = util::map<QStringList>(split_colon, data);
Expand All @@ -335,6 +337,8 @@ class BtrFs {
auto kb = bs / kb_bytes;
auto total = kb * b;
auto info = df();
// no btrfs exec
if (info.isEmpty()) return total;

auto used = util::map<double>([](QString const &, QVariant const &v) {
auto get_used = [](QString const &k, QVariant const &v) {
Expand All @@ -347,6 +351,20 @@ class BtrFs {
}

private:

std::tuple<bool, QStringList> fiDf()
{
QStringList cmd_options = {"-c", "btrfs fi df " + singleQuoted(path)};
auto ps = subprocess::start("sh", cmd_options);
ps.wait(-1);
if (!ps.rc()) {
auto out = str(ps.stdout());
return std::make_tuple(true, filterEmpty(out.trimmed().split("\n")));
} else {
return std::make_tuple(false, QStringList());
}
}

static const size_t kb_bytes = 1024;
QString path;
};
Expand Down

0 comments on commit 4ea6aac

Please sign in to comment.