blob: 09dd9854edbd50745256151541d42d5b78196f93 [file] [log] [blame]
Brad Bishopf3df6b42017-01-06 10:14:09 -05001/**
2 * Copyright © 2016 IBM Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Brad Bishopf3df6b42017-01-06 10:14:09 -050017#include <cstdlib>
Tom Joseph1f8a9582017-06-12 20:10:59 +053018#include <fstream>
Patrick Venture9331ab72018-01-29 09:48:47 -080019
20#include "env.hpp"
Tom Joseph1f8a9582017-06-12 20:10:59 +053021#include "hwmon.hpp"
Brad Bishopf3df6b42017-01-06 10:14:09 -050022
Patrick Venture7a5285d2018-04-17 19:15:05 -070023namespace env {
24
Brad Bishopf3df6b42017-01-06 10:14:09 -050025std::string getEnv(
26 const char* prefix, const SensorSet::key_type& sensor)
27{
28 std::string key;
29 std::string value;
30
31 key.assign(prefix);
32 key.append(1, '_');
33 key.append(sensor.first);
34 key.append(sensor.second);
35 auto env = getenv(key.c_str());
36 if (env)
37 {
38 value.assign(env);
39 }
40
41 return value;
42}
43
Matt Spinler049e0dd2017-10-12 16:33:22 -050044std::string getEnv(
45 const char* prefix,
46 const std::string& type,
47 const std::string& id)
48{
49 SensorSet::key_type sensor{type, id};
50 return getEnv(prefix, sensor);
51}
52
Matt Spinler82d507d2017-10-12 16:36:57 -050053std::string getIndirectID(
54 std::string path,
55 const SensorSet::key_type& sensor)
56{
57 std::string content;
58
59 path.append(sensor.first);
60 path.append(sensor.second);
61 path.append(1, '_');
62 path.append(hwmon::entry::label);
63
64 std::ifstream handle(path.c_str());
65 if (!handle.fail())
66 {
67 content.assign(
68 (std::istreambuf_iterator<char>(handle)),
69 (std::istreambuf_iterator<char>()));
70
71 if (!content.empty())
72 {
73 //remove the newline
74 content.pop_back();
75 }
76 }
77
78 return content;
79}
80
Patrick Venture7a5285d2018-04-17 19:15:05 -070081} // namespace env
82
Brad Bishopf3df6b42017-01-06 10:14:09 -050083// vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4