Rev 770: fixed handling of \r from stdout of subprocesses in
http://samba.org/~tridge/ctdb
tridge at samba.org
tridge at samba.org
Wed Jan 16 11:40:01 GMT 2008
------------------------------------------------------------
revno: 770
revision-id:tridge at samba.org-20080116114001-rdvb0cwzx3fzu7bu
parent: tridge at samba.org-20080116112310-u8tkbegr7wc7dice
committer: Andrew Tridgell <tridge at samba.org>
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;
}
More information about the samba-cvs
mailing list