fixed output from commands without a newline end.

This is useful when using commands such as tr -d '\n' to strip newlines
from output.
This commit is contained in:
aidan 2020-08-27 04:47:07 +00:00
parent 904e407908
commit 500b1fbb0f

View file

@ -50,16 +50,17 @@ static void (*writestatus) () = setroot;
void getcmd(const Block *block, char *output) void getcmd(const Block *block, char *output)
{ {
strcpy(output, block->icon); strcpy(output, block->icon);
char *cmd = block->command; FILE *cmdf = popen(block->command, "r");
FILE *cmdf = popen(cmd,"r");
if (!cmdf) if (!cmdf)
return; return;
char c;
int i = strlen(block->icon); int i = strlen(block->icon);
fgets(output+i, CMDLENGTH-i-delimLen, cmdf); fgets(output+i, CMDLENGTH-i-delimLen, cmdf);
i = strlen(output); i = strlen(output);
if (delim[0] != '\0' && --i) if (delim[0] != '\0') {
strncpy(output+i, delim, delimLen); //only chop off newline if one is present at the end
i = output[i-1] == '\n' ? i-1 : i;
strncpy(output+i, delim, delimLen);
}
else else
output[i++] = '\0'; output[i++] = '\0';
pclose(cmdf); pclose(cmdf);