------------------------------------------------------------ revno: 770 revision-id:[EMAIL PROTECTED] parent: [EMAIL PROTECTED] committer: Andrew Tridgell <[EMAIL PROTECTED]> branch nick: tridge.stable timestamp: Wed 2008-01-16 22:40:01 +1100 message: fixed handling of \r from stdout of subprocesses modified: server/ctdb_logging.c ctdb_logging.c-20080116110143-ua6l03e8hednumk9-1 === modified file 'server/ctdb_logging.c' --- a/server/ctdb_logging.c 2008-01-16 11:16:15 +0000 +++ b/server/ctdb_logging.c 2008-01-16 11:40:01 +0000 @@ -106,17 +106,17 @@ uint16_t flags, void *private) { struct ctdb_context *ctdb = talloc_get_type(private, struct ctdb_context); - ssize_t n; + int n1, n2; char *p; if (!(flags & EVENT_FD_READ)) { return; } - n = read(ctdb->log->pfd, &ctdb->log->buf[ctdb->log->buf_used], + n1 = read(ctdb->log->pfd, &ctdb->log->buf[ctdb->log->buf_used], sizeof(ctdb->log->buf) - ctdb->log->buf_used); - if (n > 0) { - ctdb->log->buf_used += n; + if (n1 > 0) { + ctdb->log->buf_used += n1; } if (ctdb->log->buf_used == sizeof(ctdb->log->buf)) { @@ -131,10 +131,15 @@ return; } - n = (p - ctdb->log->buf)+1; - do_debug("%*.*s", (int)n, (int)n, ctdb->log->buf); - memmove(ctdb->log->buf, ctdb->log->buf+n, sizeof(ctdb->log->buf) - n); - ctdb->log->buf_used -= n; + n1 = (p - ctdb->log->buf)+1; + n2 = n1 - 1; + /* swallow \r from child processes */ + if (n2 > 0 && ctdb->log->buf[n2-1] == '\r') { + n2--; + } + do_debug("%*.*s\n", n2, n2, ctdb->log->buf); + memmove(ctdb->log->buf, p+1, sizeof(ctdb->log->buf) - n1); + ctdb->log->buf_used -= n1; }