[Cluster-devel] conga/ricci/ricci RicciWorker.cpp

rmccabe at sourceware.org rmccabe at sourceware.org
Thu Jan 24 06:14:38 UTC 2008


CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2008-01-24 06:14:37

Modified files:
	ricci/ricci    : RicciWorker.cpp 

Log message:
	Fix stupid bug that caused reading batch jobs with XML longer than 4k to fail.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/ricci/RicciWorker.cpp.diff?cvsroot=cluster&r1=1.16&r2=1.17

--- conga/ricci/ricci/RicciWorker.cpp	2008/01/02 20:47:38	1.16
+++ conga/ricci/ricci/RicciWorker.cpp	2008/01/24 06:14:37	1.17
@@ -258,6 +258,7 @@
 	_path(path)
 {
 	QueueLocker lock;
+	struct stat st;
 
 	_fd = open(_path.c_str(), O_RDONLY);
 	if (_fd == -1)
@@ -276,18 +277,24 @@
 			}
 		}
 
+		if (fstat(_fd, &st) != 0)
+			throw String("Unable to stat file: ") + String(strerror(errno));
+
 		// read file
 		String xml_str;
-		char buff[4096];
-		ssize_t res;
 
-		res = read_restart(_fd, buff, sizeof(buff));
-		if (res <= 0) {
-			throw String("error reading batch file: ")
+		while ((off_t) xml_str.size() < st.st_size) {
+			char buff[4096];
+			ssize_t res;
+
+			res = read_restart(_fd, buff, sizeof(buff));
+			if (res <= 0) {
+				throw String("error reading batch file: ")
 					+ String(strerror(-res));
+			}
+			xml_str.append(buff, res);
+			memset(buff, 0, sizeof(buff));
 		}
-		xml_str.append(buff, res);
-		memset(buff, 0, sizeof(buff));
 
 		// _xml
 		_xml = parseXML(xml_str);




More information about the Cluster-devel mailing list