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