comparison main.cpp @ 2:00b62a080354

fix numerous bugs
author Yasuri <yasuri@charliesmp.net>
date Sun, 13 Sep 2026 19:40:11 +0000
parents 21b543c7aa14
children ae3a6d7bcca6
comparison
equal deleted inserted replaced
1:a17d9d25e9ea 2:00b62a080354
7 iss >> marker >> pkgver; 7 iss >> marker >> pkgver;
8 return pkgver; 8 return pkgver;
9 } 9 }
10 int main() { 10 int main() {
11 char* const query_argv[] = { const_cast<char*>("xbps-query"), const_cast<char*>("-Rs"), const_cast<char*>(""), nullptr }; 11 char* const query_argv[] = { const_cast<char*>("xbps-query"), const_cast<char*>("-Rs"), const_cast<char*>(""), nullptr };
12 std::string package_list = run_piped("/usr/bin/xbps-query", query_argv, ""); 12 std::string package_list = run_piped(query_argv, "");
13 char* const fzf_argv[] = { const_cast<char*>("fzf"), nullptr }; 13 char* const fzf_argv[] = { const_cast<char*>("fzf"), nullptr };
14 std::string result = run_piped("/usr/bin/fzf", fzf_argv, package_list); 14 std::string result = run_piped(fzf_argv, package_list);
15 15
16 // strip trailing newline fzf adds 16 // strip trailing newline fzf adds
17 if (!result.empty() && result.back() == '\n') { 17 if (!result.empty() && result.back() == '\n') {
18 result.pop_back(); 18 result.pop_back();
19 } 19 }
23 const_cast<char*>("xbps-install"), 23 const_cast<char*>("xbps-install"),
24 const_cast<char*>("-Sy"), 24 const_cast<char*>("-Sy"),
25 pkgname.data(), 25 pkgname.data(),
26 nullptr 26 nullptr
27 }; 27 };
28 std::string status = spawn(install_argv, "/usr/bin/doas"); 28 std::string status = spawn(install_argv);
29 29 if (status == "error") {
30 std::cerr << "failed to launch doas/xbps-install\n";
31 return 1;
32 }
33 if (status.rfind("sig:", 0) == 0) {
34 std::cerr << "xbps-install was killed by signal " << status.substr(4) << "\n";
35 return 1;
36 }
37 if (status != "0") {
38 std::cerr << "xbps-install exited with code " << status << "\n";
39 return 1;
40 }
30 return 0; 41 return 0;
31 } 42 }