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;