[Cluster-devel] cluster/group/tool main.c

rpeterso at sourceware.org rpeterso at sourceware.org
Thu Nov 9 16:22:35 UTC 2006


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	rpeterso at sourceware.org	2006-11-09 16:22:34

Modified files:
	group/tool     : main.c 

Log message:
	This is the fix for Bugzilla Bug 214524: group_tool dump can give
	short output.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/tool/main.c.diff?cvsroot=cluster&r1=1.22&r2=1.23

--- cluster/group/tool/main.c	2006/11/09 15:47:29	1.22
+++ cluster/group/tool/main.c	2006/11/09 16:22:34	1.23
@@ -343,11 +343,17 @@
 		return -1;
 	}
 
-	rv = read(fd, inbuf, sizeof(inbuf));
-	if (rv <= 0)
-		printf("dump read returned %d errno %d\n", rv, errno);
-	else
-		write(STDOUT_FILENO, inbuf, rv);
+	while (1) {
+		rv = read(fd, inbuf, sizeof(inbuf));
+		fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK);
+		if (rv <= 0) {
+			if (errno != EAGAIN)
+				printf("dump read returned %d errno %d\n", rv, errno);
+			break;
+		}
+		else
+			write(STDOUT_FILENO, inbuf, rv);
+	}
 
 	close(fd);
 	return 0;
@@ -370,11 +376,17 @@
 		return -1;
 	}
 
-	rv = read(fd, inbuf, sizeof(inbuf));
-	if (rv <= 0)
-		printf("dump read returned %d errno %d\n", rv, errno);
-	else
-		write(STDOUT_FILENO, inbuf, rv);
+	while (1) {
+		rv = read(fd, inbuf, sizeof(inbuf));
+		fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK);
+		if (rv <= 0) {
+			if (errno != EAGAIN)
+				printf("dump read returned %d errno %d\n", rv, errno);
+			break;
+		}
+		else
+			write(STDOUT_FILENO, inbuf, rv);
+	}
 
 	close(fd);
 	return 0;




More information about the Cluster-devel mailing list