aboutsummaryrefslogtreecommitdiffstats
path: root/src/jo_exec.cpp
blob: 04efb66a857a21e1e662f2915947eb63f20bd326 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <jo_lowbat.hpp>
#include <array>
#include <memory>

string
jo_exec(const char* cmd) {
    array<char, 128> buffer;
    string result;
    unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd, "r"), pclose);
    if (!pipe) {
        throw runtime_error("popen() failed!");
    }
    while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
        result += buffer.data();
    }
    return result;
}