aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortorrinfail <torrinfail@gmail.com>2024-08-23 15:13:53 -0600
committerGitHub <noreply@github.com>2024-08-23 15:13:53 -0600
commit8cedd220684064f1433749ed2a19a6184c22cf07 (patch)
tree06216d7c3412e3a69fc81209e48fb38daf91277b
parent58a426b68a507afd3e681f2ea70a245167d3c3fb (diff)
parent5fb7fcd7e1d89a5fad0d5e5144c1eff43d910a4b (diff)
Merge pull request #71 from mehmetumit/master
-rw-r--r--dwmblocks.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/dwmblocks.c b/dwmblocks.c
index befd252..c8f77b7 100644
--- a/dwmblocks.c
+++ b/dwmblocks.c
@@ -58,25 +58,26 @@ static int returnStatus = 0;
//opens process *cmd and stores output in *output
void getcmd(const Block *block, char *output)
{
- strcpy(output, block->icon);
+ //make sure status is same until output is ready
+ char tempstatus[CMDLENGTH] = {0};
+ strcpy(tempstatus, block->icon);
FILE *cmdf = popen(block->command, "r");
if (!cmdf)
return;
int i = strlen(block->icon);
- fgets(output+i, CMDLENGTH-i-delimLen, cmdf);
- i = strlen(output);
- if (i == 0) {
- //return if block and command output are both empty
- pclose(cmdf);
- return;
- }
- //only chop off newline if one is present at the end
- i = output[i-1] == '\n' ? i-1 : i;
- if (delim[0] != '\0') {
- strncpy(output+i, delim, delimLen);
+ fgets(tempstatus+i, CMDLENGTH-i-delimLen, cmdf);
+ i = strlen(tempstatus);
+ //if block and command output are both not empty
+ if (i != 0) {
+ //only chop off newline if one is present at the end
+ i = tempstatus[i-1] == '\n' ? i-1 : i;
+ if (delim[0] != '\0') {
+ strncpy(tempstatus+i, delim, delimLen);
+ }
+ else
+ tempstatus[i++] = '\0';
}
- else
- output[i++] = '\0';
+ strcpy(output, tempstatus);
pclose(cmdf);
}