From 500b1fbb0f5d91f80f6f86067f898c72f4b2aa58 Mon Sep 17 00:00:00 2001
From: aidan <torrinfail@gmail.com>
Date: Thu, 27 Aug 2020 04:47:07 +0000
Subject: fixed output from commands without a newline end. This is useful when
 using commands such as tr -d '\n' to strip newlines from output.

---
 dwmblocks.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

(limited to 'dwmblocks.c')

diff --git a/dwmblocks.c b/dwmblocks.c
index 5abd10d..b6f696f 100644
--- a/dwmblocks.c
+++ b/dwmblocks.c
@@ -50,16 +50,17 @@ static void (*writestatus) () = setroot;
 void getcmd(const Block *block, char *output)
 {
 	strcpy(output, block->icon);
-	char *cmd = block->command;
-	FILE *cmdf = popen(cmd,"r");
+	FILE *cmdf = popen(block->command, "r");
 	if (!cmdf)
 		return;
-	char c;
 	int i = strlen(block->icon);
 	fgets(output+i, CMDLENGTH-i-delimLen, cmdf);
 	i = strlen(output);
-	if (delim[0] != '\0' && --i)
-		 strncpy(output+i, delim, delimLen); 
+	if (delim[0] != '\0') {
+		//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
 		output[i++] = '\0';
 	pclose(cmdf);
-- 
cgit v1.2.3