From 6bbd6545f422bab6dfd341d88e99316f4cdab7ac Mon Sep 17 00:00:00 2001 From: MateuszOkulus Date: Fri, 24 Apr 2020 09:20:34 +0200 Subject: [PATCH] Remove newlines from command output --- dwmblocks.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/dwmblocks.c b/dwmblocks.c index 0cd0b54..de872bf 100644 --- a/dwmblocks.c +++ b/dwmblocks.c @@ -16,6 +16,7 @@ typedef struct { void sighandler(int num); void buttonhandler(int sig, siginfo_t *si, void *ucontext); void replace(char *str, char old, char new); +void remove_all(char *str, char to_remove); void getcmds(int time); #ifndef __OpenBSD__ void getsigcmds(int signal); @@ -48,6 +49,19 @@ void replace(char *str, char old, char new) str[i] = new; } +void remove_all(char *str, char to_remove) { + char *read = str; + char *write = str; + while (*read) { + if (*read == to_remove) { + read++; + *write = *read; + } + read++; + write++; + } +} + //opens process *cmd and stores output in *output void getcmd(const Block *block, char *output) { @@ -77,6 +91,7 @@ void getcmd(const Block *block, char *output) char c; int i = strlen(block->icon); fgets(output+i, CMDLENGTH-i, cmdf); + remove_all(output, '\n'); i = strlen(output); if (delim != '\0' && i) output[i++] = delim;