summaryrefslogtreecommitdiff
path: root/hyprctl
diff options
context:
space:
mode:
authorAbdalrahman Shaban <abdalrahmanshaban52@gmail.com>2025-03-06 01:50:28 +0200
committerGitHub <noreply@github.com>2025-03-06 00:50:28 +0100
commit243376078655f304b01e5097c59108745bbb9da9 (patch)
tree2598e65bd5e2e4d0699906a997f1366ed7e7410b /hyprctl
parentb51ab182ae3e8d88426af856b59dd28c6a9722ef (diff)
hyprctl: Error handling improvements, minor cleanups (#9536)
Diffstat (limited to 'hyprctl')
-rw-r--r--hyprctl/main.cpp56
1 files changed, 29 insertions, 27 deletions
diff --git a/hyprctl/main.cpp b/hyprctl/main.cpp
index 517773d3..25a4eef3 100644
--- a/hyprctl/main.cpp
+++ b/hyprctl/main.cpp
@@ -12,10 +12,8 @@
#include <sys/un.h>
#include <pwd.h>
#include <unistd.h>
-#include <ranges>
#include <algorithm>
#include <csignal>
-#include <format>
#include <iostream>
#include <string>
@@ -151,8 +149,16 @@ int rollingRead(const int socket) {
int request(std::string arg, int minArgs = 0, bool needRoll = false) {
const auto SERVERSOCKET = socket(AF_UNIX, SOCK_STREAM, 0);
- auto t = timeval{.tv_sec = 5, .tv_usec = 0};
- setsockopt(SERVERSOCKET, SOL_SOCKET, SO_RCVTIMEO, &t, sizeof(struct timeval));
+ if (SERVERSOCKET < 0) {
+ log("Couldn't open a socket (1)");
+ return 1;
+ }
+
+ auto t = timeval{.tv_sec = 5, .tv_usec = 0};
+ if (setsockopt(SERVERSOCKET, SOL_SOCKET, SO_RCVTIMEO, &t, sizeof(struct timeval)) < 0) {
+ log("Couldn't set socket timeout (2)");
+ return 2;
+ }
const auto ARGS = std::count(arg.begin(), arg.end(), ' ');
@@ -161,14 +167,9 @@ int request(std::string arg, int minArgs = 0, bool needRoll = false) {
return -1;
}
- if (SERVERSOCKET < 0) {
- log("Couldn't open a socket (1)");
- return 1;
- }
-
if (instanceSignature.empty()) {
- log("HYPRLAND_INSTANCE_SIGNATURE was not set! (Is Hyprland running?)");
- return 2;
+ log("HYPRLAND_INSTANCE_SIGNATURE was not set! (Is Hyprland running?) (3)");
+ return 3;
}
const std::string USERID = std::to_string(getUID());
@@ -181,39 +182,40 @@ int request(std::string arg, int minArgs = 0, bool needRoll = false) {
strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1);
if (connect(SERVERSOCKET, (sockaddr*)&serverAddress, SUN_LEN(&serverAddress)) < 0) {
- log("Couldn't connect to " + socketPath + ". (3)");
- return 3;
+ log("Couldn't connect to " + socketPath + ". (4)");
+ return 4;
}
auto sizeWritten = write(SERVERSOCKET, arg.c_str(), arg.length());
if (sizeWritten < 0) {
- log("Couldn't write (4)");
- return 4;
+ log("Couldn't write (5)");
+ return 5;
}
if (needRoll)
return rollingRead(SERVERSOCKET);
- std::string reply = "";
- char buffer[8192] = {0};
+ std::string reply = "";
+ constexpr size_t BUFFER_SIZE = 8192;
+ char buffer[BUFFER_SIZE] = {0};
- sizeWritten = read(SERVERSOCKET, buffer, 8192);
+ sizeWritten = read(SERVERSOCKET, buffer, BUFFER_SIZE);
if (sizeWritten < 0) {
if (errno == EWOULDBLOCK)
log("Hyprland IPC didn't respond in time\n");
- log("Couldn't read (5)");
- return 5;
+ log("Couldn't read (6)");
+ return 6;
}
reply += std::string(buffer, sizeWritten);
- while (sizeWritten == 8192) {
- sizeWritten = read(SERVERSOCKET, buffer, 8192);
+ while (sizeWritten == BUFFER_SIZE) {
+ sizeWritten = read(SERVERSOCKET, buffer, BUFFER_SIZE);
if (sizeWritten < 0) {
- log("Couldn't read (5)");
- return 5;
+ log("Couldn't read (6)");
+ return 6;
}
reply += std::string(buffer, sizeWritten);
}
@@ -261,10 +263,10 @@ int requestIPC(std::string filename, std::string arg) {
log("Couldn't write (4)");
return 4;
}
+ constexpr size_t BUFFER_SIZE = 8192;
+ char buffer[BUFFER_SIZE] = {0};
- char buffer[8192] = {0};
-
- sizeWritten = read(SERVERSOCKET, buffer, 8192);
+ sizeWritten = read(SERVERSOCKET, buffer, BUFFER_SIZE);
if (sizeWritten < 0) {
log("Couldn't read (5)");