Trim all newlines from status line

This commit is contained in:
Jason Nader 2020-03-25 23:25:31 +09:00
parent b99308b026
commit 59f9ad8b9a
No known key found for this signature in database
GPG key ID: EE220FCAA09AF23D

View file

@ -113,19 +113,26 @@ bool status_handle_readable(struct status_line *status) {
sway_log(SWAY_DEBUG, "Using text protocol."); sway_log(SWAY_DEBUG, "Using text protocol.");
status->protocol = PROTOCOL_TEXT; status->protocol = PROTOCOL_TEXT;
char *last_newline = strrchr(status->buffer, '\n');
if (last_newline != NULL) {
status->buffer_index = strlen(last_newline + 1);
memmove(status->buffer, last_newline + 1, status->buffer_index + 1);
}
status->text = status->buffer; status->text = status->buffer;
// intentional fall-through // intentional fall-through
case PROTOCOL_TEXT: case PROTOCOL_TEXT:
errno = 0; errno = 0;
while (true) { while (true) {
if (status->buffer[read_bytes - 1] == '\n') { bool trailing_newline = true;
status->buffer[read_bytes - 1] = '\0'; while (trailing_newline == true) {
if (status->buffer[read_bytes - 1] == '\n') {
status->buffer[read_bytes - 1] = '\0';
read_bytes--;
} else {
trailing_newline = false;
}
} }
char *last_newline = strrchr(status->buffer, '\n');
if (last_newline != NULL) {
status->buffer_index = strlen(last_newline + 1);
memmove(status->buffer, last_newline + 1, status->buffer_index + 1);
}
read_bytes = getline(&status->buffer, read_bytes = getline(&status->buffer,
&status->buffer_size, status->read); &status->buffer_size, status->read);
if (errno == EAGAIN) { if (errno == EAGAIN) {