[IGSTK-Users] snprintf versus _snprintf
Steve Robbins
smr at sumost.ca
Wed Sep 20 18:27:50 EDT 2006
Quoting David Gobbi <dgobbi at atamai.com>:
> Hi Steve,
>
> Adding a cmake check wouldn't fix the main issue, which is that
> sprintf-style formatting doesn't really belong in IGSTK at all.
Sure; I wouldn't argue that.
> As an intermediate fix, though, please try adding an #ifdef for cygwin,
> and if it fixes your problem, I will commit it to cvs.
OK, you guilted me into a patch; see below. However, even if you
accept the use of preprocessor #if, the code below is inverted: we
really should be checking for broken compilers in the positive sense,
i.e. "#if MSVC || BORLAND". Unfortunately, I don't know what the
appropriate symbols would be. If you do, please fix this.
Index: Source/igstkNDICommandInterpreter.cxx
===================================================================
RCS file: /cvsroot/IGSTK/IGSTK/Source/igstkNDICommandInterpreter.cxx,v
retrieving revision 1.24
diff -u -b -B -r1.24 igstkNDICommandInterpreter.cxx
--- Source/igstkNDICommandInterpreter.cxx 3 Apr 2006 19:55:20
-0000 1
.24
+++ Source/igstkNDICommandInterpreter.cxx 20 Sep 2006 21:44:12 -0000
@@ -21,7 +21,9 @@
// 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 it is to remain here, it should check explicitly for MSVC and Borland
+// rather than this kludge to make cygwin work.
+#if ( WIN32 || _WIN32 ) && ! __CYGWIN__
#ifndef snprintf
#define snprintf _snprintf
#endif
I just built CVS head and found a second instance of the same problem.
Again, here's an inverted-sense patch:
Index: Testing/igstkTransformTest.cxx
===================================================================
RCS file: /cvsroot/IGSTK/IGSTK/Testing/igstkTransformTest.cxx,v
retrieving revision 1.15
diff -u -b -B -r1.15 igstkTransformTest.cxx
--- Testing/igstkTransformTest.cxx 3 Aug 2006 07:36:43 -0000 1.15
+++ Testing/igstkTransformTest.cxx 20 Sep 2006 21:44:12 -0000
@@ -166,7 +166,7 @@
tinv.SetTranslationAndRotation( translation, rotation, lagerError,
longerPeriod );
-#if defined (_WIN32) || defined (WIN32)
+#if (_WIN32 || WIN32) && ! __CYGWIN__
Sleep( 250 ); // Windows Sleep uses miliseconds
#else
usleep( 250 * 1000 ); // linux usleep uses microsecond
-Steve
More information about the IGSTK-Users
mailing list