Mercurial > xbps-search-tv
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 } |
