Improve CMDLENGTH logic

This commit is contained in:
Utkarsh Verma 2021-10-13 06:37:55 +05:30
parent 47e7097dbc
commit 68ffb1f8ed
No known key found for this signature in database
GPG Key ID: 817656CF818EFCCC
1 changed files with 9 additions and 8 deletions

17
main.c
View File

@ -1,3 +1,4 @@
#define _GNU_SOURCE
#include <X11/Xlib.h>
#include <limits.h>
#include <signal.h>
@ -10,7 +11,7 @@
#define LEN(arr) (sizeof(arr) / sizeof(arr[0]))
#define STR2(a) #a
#define STR(a) STR2(a)
#define BLOCK(cmd, interval, signal) { .command = "echo \"" STR(__COUNTER__) "$(" cmd ")\"", interval, signal },
#define BLOCK(cmd, interval, signal) {"echo \"" STR(__COUNTER__) "$(" cmd ")\"", interval, signal},
typedef struct {
const char *command;
const unsigned int interval;
@ -72,7 +73,7 @@ int getStatus(char *new, char *old) {
new[0] = 0;
for (int i = 0; i < LEN(blocks); i++) {
const Block *block = blocks + i;
if (strlen(outputs[i]) > 0)
if (strlen(outputs[i]) > (block->signal > 0))
strcat(new, DELIMITER);
strcat(new, outputs[i]);
}
@ -123,14 +124,14 @@ void childHandler() {
i -= '0';
char ch;
char buffer[LEN(outputs[0])];
char buffer[LEN(outputs[0]) - 1];
int j = 0;
while (j < LEN(buffer) && read(pipeFD[0], &ch, 1) == 1) {
while (j < LEN(buffer) - 1 && read(pipeFD[0], &ch, 1) == 1 && ch != '\n')
buffer[j++] = ch;
if (ch == '\n')
break;
}
buffer[j - 1] = 0;
buffer[j] = 0;
// Clear the pipe until newline
while (ch != '\n' && read(pipeFD[0], &ch, 1) == 1);
const Block *block = blocks + i;
char *output = outputs[i];