[Guessnet-devel] r283 - in /trunk: ./ src/IFace.cc src/guessnet.cc src/scanner/scanbag.cc src/util/output.cc src/util/output.h src/util/processrunner.cc

enrico at users.alioth.debian.org enrico at users.alioth.debian.org
Thu Dec 6 12:03:00 UTC 2007


Author: enrico
Date: Thu Dec  6 12:03:00 2007
New Revision: 283

URL: http://svn.debian.org/wsvn/?sc=1&rev=283
Log:
 r2914 at viaza:  enrico | 2007-12-06 12:02:51 +0000
 Output routines are now thread safe, and the code only uses the thread safe output routines.

Modified:
    trunk/   (props changed)
    trunk/src/IFace.cc
    trunk/src/guessnet.cc
    trunk/src/scanner/scanbag.cc
    trunk/src/util/output.cc
    trunk/src/util/output.h
    trunk/src/util/processrunner.cc

Propchange: trunk/
------------------------------------------------------------------------------
--- svk:merge (original)
+++ svk:merge Thu Dec  6 12:03:00 2007
@@ -1,4 +1,4 @@
-45d51ea0-ddb4-4b47-b336-85eb0213f017:/local/guessnet-trunk:2908
+45d51ea0-ddb4-4b47-b336-85eb0213f017:/local/guessnet-trunk:2914
 495996b6-63de-0310-a384-bb1ca15bde42:/trunk-old/guessnet:39
 495996b6-63de-0310-a384-bb1ca15bde42:/trunk/guessnet:37
 7bf62ca7-16f0-0310-b612-e8866aeedc84:/local/guessnet:7319

Modified: trunk/src/IFace.cc
URL: http://svn.debian.org/wsvn/trunk/src/IFace.cc?rev=283&op=diff
==============================================================================
--- trunk/src/IFace.cc (original)
+++ trunk/src/IFace.cc Thu Dec  6 12:03:00 2007
@@ -54,7 +54,7 @@
 #include <stdlib.h>
 #include <assert.h>
 
-#include <iostream>
+#include <sstream>
 
 #include "util/output.h"
 
@@ -578,9 +578,11 @@
 	string s_bcst = addr_flags & IFP_VALID_BROADADDR ? inet_ntoa(broadaddr.sin_addr) : "invalid";
 	string s_mask = addr_flags & IFP_VALID_NETMASK ? inet_ntoa(netmask.sin_addr) : "invalid";
 
-	cout << s_addr << " dst " << s_dest << " bcast " << s_bcst << " nm "
+	stringstream str;
+	str << s_addr << " dst " << s_dest << " bcast " << s_bcst << " nm "
 		 << s_mask << " flags " << flags << " aflags " << addr_flags
 		 << " hwaddrtype " << hwaddr.sa_family << endl;
+	output("%s", str.str().c_str());
 }
 
 // vim:set ts=4 sw=4:

Modified: trunk/src/guessnet.cc
URL: http://svn.debian.org/wsvn/trunk/src/guessnet.cc?rev=283&op=diff
==============================================================================
--- trunk/src/guessnet.cc (original)
+++ trunk/src/guessnet.cc Thu Dec  6 12:03:00 2007
@@ -57,7 +57,6 @@
 
 #include <set>
 #include <vector>
-#include <iostream>
 
 using namespace std;
 using namespace wibble::sys;
@@ -174,9 +173,9 @@
 			// Output the profile name we found
 			if (profile.size())
 			{
-				cout << profile << endl;
+				output("%s\n", profile.c_str());
 			} else {
-				cout << GuessnetEnvironment::get().defprof() << endl;
+				output("%s\n", GuessnetEnvironment::get().defprof().c_str());
 			}
 		} catch (std::exception& e) {
 			error("%s\n", e.what());

Modified: trunk/src/scanner/scanbag.cc
URL: http://svn.debian.org/wsvn/trunk/src/scanner/scanbag.cc?rev=283&op=diff
==============================================================================
--- trunk/src/scanner/scanbag.cc (original)
+++ trunk/src/scanner/scanbag.cc Thu Dec  6 12:03:00 2007
@@ -1,6 +1,7 @@
 #include "scanbag.h"
 #include "util/output.h"
-#include <iostream>
+
+#include <sstream>
 
 using namespace std;
 using namespace wibble::sys;
@@ -130,16 +131,18 @@
 {
 	MutexLock lock(mutex);
 
+	stringstream str;
 	for (const_iterator i = begin(); i != end(); i++)
 	{
-		cout << i->first << ": ";
+		str << i->first << ": ";
 		for (set<string>::const_iterator j = i->second.begin(); j != i->second.end(); j++)
 			if (j == i->second.begin())
-				cout << *j;
+				str << *j;
 			else
-				cout << ", ", *j;
-		cout << endl;
+				str << ", ", *j;
+		str << endl;
 	}
+	output("%s", str.str().c_str());
 }
 
 // vim:set ts=3 sw=3:

Modified: trunk/src/util/output.cc
URL: http://svn.debian.org/wsvn/trunk/src/util/output.cc?rev=283&op=diff
==============================================================================
--- trunk/src/util/output.cc (original)
+++ trunk/src/util/output.cc Thu Dec  6 12:03:00 2007
@@ -19,6 +19,7 @@
  */
 
 #include "util/output.h"
+#include <wibble/sys/mutex.h>
 
 #include <cstdio>
 #include <cstdarg>
@@ -30,6 +31,7 @@
 namespace util {
 
 static Output* instance = 0;
+static wibble::sys::Mutex outputMutex;
 
 Output& Output::get() throw ()
 {
@@ -45,8 +47,10 @@
 
 using namespace util;
 
-void fatal_error(const char* fmt, ...) throw() ATTR_PRINTF(1, 2)
+void fatal_error(const char* fmt, ...) ATTR_PRINTF(1, 2)
 {
+	wibble::sys::MutexLock lock(outputMutex);
+
 	fprintf(stderr, "guessnet: ");
 	va_list ap;
 	va_start(ap, fmt);
@@ -58,8 +62,10 @@
 	exit(1);
 }
 
-void error(const char* fmt, ...) throw() ATTR_PRINTF(1, 2)
+void error(const char* fmt, ...) ATTR_PRINTF(1, 2)
 {
+	wibble::sys::MutexLock lock(outputMutex);
+
 	va_list ap;
 	va_start(ap, fmt);
 	vfprintf(stderr, fmt, ap);
@@ -68,8 +74,10 @@
 	va_end(ap);
 }
 
-void warning(const char* fmt, ...) throw() ATTR_PRINTF(1, 2)
+void warning(const char* fmt, ...) ATTR_PRINTF(1, 2)
 {
+	wibble::sys::MutexLock lock(outputMutex);
+
 	va_list ap;
 	va_start(ap, fmt);
 	vfprintf(stderr, fmt, ap);
@@ -78,8 +86,20 @@
 	va_end(ap);
 }
 
-void verbose(const char* fmt, ...) throw() ATTR_PRINTF(1, 2)
+void output(const char* fmt, ...) ATTR_PRINTF(1, 2)
 {
+	wibble::sys::MutexLock lock(outputMutex);
+
+	va_list ap;
+	va_start(ap, fmt);
+	vfprintf(stdout, fmt, ap);
+	va_end(ap);
+}
+
+void verbose(const char* fmt, ...) ATTR_PRINTF(1, 2)
+{
+	wibble::sys::MutexLock lock(outputMutex);
+
 	if (Output::get().verbose())
 	{
 		va_list ap;
@@ -92,8 +112,10 @@
 	}
 }
 
-void debug(const char* fmt, ...) throw() ATTR_PRINTF(1, 2)
+void debug(const char* fmt, ...) ATTR_PRINTF(1, 2)
 {
+	wibble::sys::MutexLock lock(outputMutex);
+
 	if (Output::get().debug())
 	{
 		va_list ap;

Modified: trunk/src/util/output.h
URL: http://svn.debian.org/wsvn/trunk/src/util/output.h?rev=283&op=diff
==============================================================================
--- trunk/src/util/output.h (original)
+++ trunk/src/util/output.h Thu Dec  6 12:03:00 2007
@@ -74,11 +74,13 @@
  #endif
 #endif
 
-void fatal_error(const char* fmt, ...) throw() ATTR_PRINTF(1, 2);
-void error(const char* fmt, ...) throw() ATTR_PRINTF(1, 2);
-void warning(const char* fmt, ...) throw() ATTR_PRINTF(1, 2);
-void verbose(const char* fmt, ...) throw() ATTR_PRINTF(1, 2);
-void debug(const char* fmt, ...) throw() ATTR_PRINTF(1, 2);
+void fatal_error(const char* fmt, ...) ATTR_PRINTF(1, 2);
+void error(const char* fmt, ...) ATTR_PRINTF(1, 2);
+void warning(const char* fmt, ...) ATTR_PRINTF(1, 2);
+// Normal output to stdout
+void output(const char* fmt, ...) ATTR_PRINTF(1, 2);
+void verbose(const char* fmt, ...) ATTR_PRINTF(1, 2);
+void debug(const char* fmt, ...) ATTR_PRINTF(1, 2);
 
 // vim:set ts=4 sw=4:
 #endif

Modified: trunk/src/util/processrunner.cc
URL: http://svn.debian.org/wsvn/trunk/src/util/processrunner.cc?rev=283&op=diff
==============================================================================
--- trunk/src/util/processrunner.cc (original)
+++ trunk/src/util/processrunner.cc Thu Dec  6 12:03:00 2007
@@ -85,7 +85,7 @@
 
 		cmd.exec();
 	} catch (std::exception& e) {
-		fprintf(stderr, "%s\n", e.what());
+		error("%s\n", e.what());
 	}
 	return 1;
 }
@@ -285,7 +285,7 @@
 				proclist.erase(i);
 			}
 		} catch (std::exception& e) {
-			fprintf(stderr, "%s\n", e.what());
+			error("%s\n", e.what());
 		}
 	}
 }




More information about the Guessnet-devel mailing list