str[len] = '\0';
num = 0;
}
- /* replace newlines by spaces */
+ /* replace control characters by spaces */
for (i = 0; i < len && str[i]; i++) {
- if (str[i] == '\n')
+ if (str[i] == '\n' || str[i] == '\r' || str[i] == '\f')
str[i] = ' ';
}
if (align == LEFT) {
if (init)
init = 0;
else
- sleep(1);
+ /*
+ * Sleep a bit to avoid a busy loop. As the call to sleep() may
+ * be interrupted by SIGCHLD, we simply wait until the call
+ * succeeds.
+ */
+ while (sleep(2))
+ ; /* nothing */
ret = para_exec_cmdline_pid(&pid, conf.stat_cmd_arg, fds);
if (ret < 0)
return ret;