diff --git a/dwmblocks.c b/dwmblocks.c index 96cfb6f..82631de 100644 --- a/dwmblocks.c +++ b/dwmblocks.c @@ -244,33 +244,30 @@ int updatestatus() { char *s = statustext; - char *c, *p; + size_t len; Block *block = blocks; /* checking half of the function */ for (; block->pathu; block++) { - c = block->curcmdout, p = block->prvcmdout; - for (; *c != '\0' && *c == *p; c++, p++); - s += c - block->curcmdout; - if (*c != *p) + len = strlen(block->curcmdout); + if (memcmp(block->curcmdout, block->prvcmdout, len + 1) != 0) goto update; - if (c == block->curcmdout) + if (len == 0) continue; - if (block->pathc /* && block->signal */) - s++; - s += DELIMITERLENGTH; + s += len + (block->pathc ? 1 : 0) + DELIMITERLENGTH; } return 0; /* updating half of the function */ for (; block->pathu; block++) { - c = block->curcmdout, p = block->prvcmdout; + len = strlen(block->curcmdout); update: - for (; (*p = *c) != '\0'; c++, p++) - *(s++) = *c; - if (c == block->curcmdout) + memcpy(block->prvcmdout, block->curcmdout, len + 1); + if (len == 0) continue; - if (block->pathc /* && block->signal */) + memcpy(s, block->curcmdout, len); + s += len; + if (block->pathc) *(s++) = block->signal; memcpy(s, delimiter, DELIMITERLENGTH); s += DELIMITERLENGTH;