From 86044a6507dcef81564dc1a08b0d2d74034a8490 Mon Sep 17 00:00:00 2001 From: Jakub Trzeciak Date: Tue, 12 Sep 2023 08:46:18 +0200 Subject: Jptrzy's patches --- patches/dwmblocks-statuscmd-fork.diff | 77 ----------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 patches/dwmblocks-statuscmd-fork.diff (limited to 'patches/dwmblocks-statuscmd-fork.diff') diff --git a/patches/dwmblocks-statuscmd-fork.diff b/patches/dwmblocks-statuscmd-fork.diff deleted file mode 100644 index 1ae7d7a..0000000 --- a/patches/dwmblocks-statuscmd-fork.diff +++ /dev/null @@ -1,77 +0,0 @@ -diff --git a/dwmblocks.c b/dwmblocks.c -index 7d7a564..e2c5dd0 100644 ---- a/dwmblocks.c -+++ b/dwmblocks.c -@@ -34,8 +34,6 @@ static int screen; - static Window root; - static char statusbar[LENGTH(blocks)][CMDLENGTH] = {0}; - static char statusstr[2][256]; --static char exportstring[CMDLENGTH + 22] = "export BLOCK_BUTTON=-;"; --static int button = 0; - static int statusContinue = 1; - static void (*writestatus) () = setroot; - -@@ -55,21 +53,8 @@ void getcmd(const Block *block, char *output) - output[0] = block->signal; - output++; - } -- char* cmd; -- FILE *cmdf; -- if (button) -- { -- cmd = strcat(exportstring, block->command); -- cmd[20] = '0' + button; -- button = 0; -- cmdf = popen(cmd,"r"); -- cmd[22] = '\0'; -- } -- else -- { -- cmd = block->command; -- cmdf = popen(cmd,"r"); -- } -+ char *cmd = block->command; -+ FILE *cmdf = popen(cmd,"r"); - if (!cmdf) - return; - fgets(output, CMDLENGTH, cmdf); -@@ -117,6 +102,7 @@ void setupsignals() - sa.sa_sigaction = buttonhandler; - sa.sa_flags = SA_SIGINFO; - sigaction(SIGUSR1, &sa, NULL); -+ signal(SIGCHLD, SIG_IGN); - - } - #endif -@@ -179,9 +165,29 @@ void sighandler(int signum) - - void buttonhandler(int sig, siginfo_t *si, void *ucontext) - { -- button = si->si_value.sival_int & 0xff; -- getsigcmds(si->si_value.sival_int >> 8); -+ int button = si->si_value.sival_int & 0xff; -+ sig = si->si_value.sival_int >> 8; -+ getsigcmds(sig); - writestatus(); -+ if (fork() == 0) -+ { -+ static char exportstring[CMDLENGTH + 22] = "export BLOCK_BUTTON=-;"; -+ const Block *current; -+ int i; -+ for (i = 0; i < LENGTH(blocks); i++) -+ { -+ current = blocks + i; -+ if (current->signal == sig) -+ break; -+ } -+ char *cmd = strcat(exportstring, blocks[i].command); -+ cmd[20] = '0' + button; -+ char *command[] = { "/bin/sh", "-c", cmd, NULL }; -+ setsid(); -+ execvp(command[0], command); -+ exit(EXIT_SUCCESS); -+ cmd[22] = '\0'; -+ } - } - - #endif -- cgit v1.2.3