#pragma once

#include <fstream>
#include <string>

template <typename T>
void read_sysfs(const std::string& path, T& val)
{
    std::ifstream s(path);
    s >> val;
}

template <typename T>
void write_sysfs(const std::string& path, const T& val)
{
    std::ofstream s(path);
    s << val;
}

const std::string make_sysfs_path(const std::string& path,
                                  const std::string& type,
                                  const std::string& id,
                                  const std::string& entry)
{
    using namespace std::literals;

    return path + "/"s + type + id + "_"s + entry;
}

// vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
