Remove newlines from command output

This commit is contained in:
MateuszOkulus 2020-04-24 09:20:34 +02:00
parent cc1b97c731
commit 6bbd6545f4

View file

@ -16,6 +16,7 @@ typedef struct {
void sighandler(int num); void sighandler(int num);
void buttonhandler(int sig, siginfo_t *si, void *ucontext); void buttonhandler(int sig, siginfo_t *si, void *ucontext);
void replace(char *str, char old, char new); void replace(char *str, char old, char new);
void remove_all(char *str, char to_remove);
void getcmds(int time); void getcmds(int time);
#ifndef __OpenBSD__ #ifndef __OpenBSD__
void getsigcmds(int signal); void getsigcmds(int signal);
@ -48,6 +49,19 @@ void replace(char *str, char old, char new)
str[i] = 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 //opens process *cmd and stores output in *output
void getcmd(const Block *block, char *output) void getcmd(const Block *block, char *output)
{ {
@ -77,6 +91,7 @@ void getcmd(const Block *block, char *output)
char c; char c;
int i = strlen(block->icon); int i = strlen(block->icon);
fgets(output+i, CMDLENGTH-i, cmdf); fgets(output+i, CMDLENGTH-i, cmdf);
remove_all(output, '\n');
i = strlen(output); i = strlen(output);
if (delim != '\0' && i) if (delim != '\0' && i)
output[i++] = delim; output[i++] = delim;