summaryrefslogtreecommitdiffstats
path: root/sensorset.C
blob: 8b59ac141c6d400de5bc2d8f5d34a8aac1208804 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <regex>
#include <iostream>
#include "sensorset.H"
#include "directory.H"

// TODO: Issue#2 - STL regex generates really bloated code.  Use POSIX regex
//       interfaces instead.
static const std::regex sensors_regex =
    std::regex("^(fan|in|temp)([0-9]+)_([a-z]*)", std::regex::extended);
static const auto sensor_regex_match_count = 4;

SensorSet::SensorSet(const std::string& path)
{
    Directory d(path);
    std::string file;

    while(d.next(file))
    {
        std::smatch match;
        std::regex_search(file, match, sensors_regex);

        if (match.size() != sensor_regex_match_count) continue;

        container[make_pair(match[1],match[2])].emplace(match[3]);
    }
}
OpenPOWER on IntegriCloud