[IGSTK-Users] snprintf versus _snprintf

Steve Robbins smr at sumost.ca
Thu Sep 21 11:44:36 EDT 2006


Quoting David Gobbi <dgobbi at atamai.com>:

> Thanks for the guilt and the patches ;)

I'm now building the sandbox code and ran into the same issues again.   
Clearly, these things should be abstracted away into a common library  
where the ugly conditional compilation can be written once and safely  
hidden.

And -- lo and behold -- I found itksys::SystemTools has at least one  
of them!  The function Delay() can replace the Sleep()/usleep()  
conditional.

I didn't find the snprintf() #define, but if you have any sway over  
the ITK group, it'd be nice to put it in there.

There's a third WIN32/CYGWIN conflict in igstkSocketCommunication to  
do with WSAStartup().  I don't know what this is, so I just hacked it  
to compile.  Please check this before committing to CVS.

Index: Examples/DeckOfCardRobot/RobotCommunication.cxx
===================================================================
RCS file:  
/cvsroot/IGSTK/Sandbox/Examples/DeckOfCardRobot/RobotCommunication.cxx,v
retrieving revision 1.11
diff -u -b -B -r1.11 RobotCommunication.cxx
--- Examples/DeckOfCardRobot/RobotCommunication.cxx     17 Jul 2006  
22:58:27 -0000      1.11
+++ Examples/DeckOfCardRobot/RobotCommunication.cxx     21 Sep 2006  
15:26:08 -0000
@@ -17,10 +17,11 @@
  #include "RobotCommunication.h"
  #include "time.h"
  #include <string.h>
+#include <itksys/SystemTools.hxx>

  // On MSVC and Borland, snprintf is not defined but _snprintf is.
  // This should probably be checked by CMake instead of here.
-#if defined(WIN32) || defined(_WIN32)
+#if defined(__BORLANDC__) || defined(_MSC_VER)
  #ifndef snprintf
  #define snprintf _snprintf
  #endif
@@ -141,13 +142,7 @@
      }

    // to prevent communication timeout
-  #if defined (_WIN32) || defined (WIN32)
-  Sleep(3000);            // Windows Sleep uses miliseconds
-  #else
-  usleep( 3000 * 1000 );  // linux usleep uses microsecond
-  #endif
-
-
+  itksys::SystemTools::Delay(3000);

    if (!ASYNCMODE)
      {
Index: Source/igstkSocketCommunication.cxx
===================================================================
RCS file: /cvsroot/IGSTK/Sandbox/Source/igstkSocketCommunication.cxx,v
retrieving revision 1.14
diff -u -b -B -r1.14 igstkSocketCommunication.cxx
--- Source/igstkSocketCommunication.cxx 11 Apr 2006 18:08:36 -0000      1.14
+++ Source/igstkSocketCommunication.cxx 21 Sep 2006 15:26:08 -0000
@@ -722,7 +722,7 @@
    igstkLogMacro( DEBUG, "SocketCommunication::\
                          InternalOpenCommunicationProcessing called ...\n");

-#ifdef WIN32
+#if WIN32 && ! __CYGWIN__
    WORD wVersionRequested;
    WSADATA wsaData;


-Steve




More information about the IGSTK-Users mailing list