summary refs log tree commit diff
diff options
context:
space:
mode:
authorRob Vermaas <rob.vermaas@gmail.com>2013-04-12 14:26:16 +0200
committerRob Vermaas <rob.vermaas@gmail.com>2013-04-12 14:26:16 +0200
commitec8a661bf4f8538fd38352cda13b429b431e3364 (patch)
treec533b9374cf8729377735e4ab8245e134cb6dfc5
parentca392fb8a9024a8f19a7d084336c33a1d87557b0 (diff)
downloadnixpkgs-ec8a661bf4f8538fd38352cda13b429b431e3364.tar
nixpkgs-ec8a661bf4f8538fd38352cda13b429b431e3364.tar.gz
nixpkgs-ec8a661bf4f8538fd38352cda13b429b431e3364.tar.bz2
nixpkgs-ec8a661bf4f8538fd38352cda13b429b431e3364.tar.lz
nixpkgs-ec8a661bf4f8538fd38352cda13b429b431e3364.tar.xz
nixpkgs-ec8a661bf4f8538fd38352cda13b429b431e3364.tar.zst
nixpkgs-ec8a661bf4f8538fd38352cda13b429b431e3364.zip
boost-1.44.0: also apply time utc patch that was applied for 1.49.0. Needed to be adapted for 1.44.0.
-rw-r--r--pkgs/development/libraries/boost/1.44.nix1
-rw-r--r--pkgs/development/libraries/boost/time_utc_144.patch520
2 files changed, 521 insertions, 0 deletions
diff --git a/pkgs/development/libraries/boost/1.44.nix b/pkgs/development/libraries/boost/1.44.nix
index e0235cd8b39..7ed3c311de2 100644
--- a/pkgs/development/libraries/boost/1.44.nix
+++ b/pkgs/development/libraries/boost/1.44.nix
@@ -68,6 +68,7 @@ stdenv.mkDerivation {
        url = https://svn.boost.org/trac/boost/raw-attachment/ticket/4688/boost_filesystem.patch ;
        sha256 = "15k91ihzs6190pnryh4cl0b3c2pjpl9d790mr14x16zq52y7px2d";
      })
+    ./time_utc_144.patch
   ];
 
   crossAttrs = rec {
diff --git a/pkgs/development/libraries/boost/time_utc_144.patch b/pkgs/development/libraries/boost/time_utc_144.patch
new file mode 100644
index 00000000000..512832c1829
--- /dev/null
+++ b/pkgs/development/libraries/boost/time_utc_144.patch
@@ -0,0 +1,520 @@
+diff -rc boost_1_44_0/boost/thread/xtime.hpp boost_1_44_0-new/boost/thread/xtime.hpp
+*** boost_1_44_0/boost/thread/xtime.hpp	2008-06-18 15:01:08.000000000 +0200
+--- boost_1_44_0-new/boost/thread/xtime.hpp	2013-04-12 14:00:27.125713549 +0200
+***************
+*** 20,26 ****
+  
+  enum xtime_clock_types
+  {
+!     TIME_UTC=1
+  //    TIME_TAI,
+  //    TIME_MONOTONIC,
+  //    TIME_PROCESS,
+--- 20,26 ----
+  
+  enum xtime_clock_types
+  {
+!     TIME_UTC_=1
+  //    TIME_TAI,
+  //    TIME_MONOTONIC,
+  //    TIME_PROCESS,
+***************
+*** 68,74 ****
+  
+  inline int xtime_get(struct xtime* xtp, int clock_type)
+  {
+!     if (clock_type == TIME_UTC)
+      {
+          *xtp=get_xtime(get_system_time());
+          return clock_type;
+--- 68,74 ----
+  
+  inline int xtime_get(struct xtime* xtp, int clock_type)
+  {
+!     if (clock_type == TIME_UTC_)
+      {
+          *xtp=get_xtime(get_system_time());
+          return clock_type;
+diff -rc boost_1_44_0/libs/interprocess/test/condition_test_template.hpp boost_1_44_0-new/libs/interprocess/test/condition_test_template.hpp
+*** boost_1_44_0/libs/interprocess/test/condition_test_template.hpp	2009-10-15 20:45:53.000000000 +0200
+--- boost_1_44_0-new/libs/interprocess/test/condition_test_template.hpp	2013-04-12 14:00:20.215658855 +0200
+***************
+*** 49,56 ****
+      const int NANOSECONDS_PER_MILLISECOND = 1000000;
+  
+      boost::xtime xt;
+!     int ret = boost::xtime_get(&xt, boost::TIME_UTC);
+!     assert(ret == static_cast<int>(boost::TIME_UTC));(void)ret;
+      nsecs += xt.nsec;
+      msecs += nsecs / NANOSECONDS_PER_MILLISECOND;
+      secs += msecs / MILLISECONDS_PER_SECOND;
+--- 49,56 ----
+      const int NANOSECONDS_PER_MILLISECOND = 1000000;
+  
+      boost::xtime xt;
+!     int ret = boost::xtime_get(&xt, boost::TIME_UTC_);
+!     assert(ret == static_cast<int>(boost::TIME_UTC_));(void)ret;
+      nsecs += xt.nsec;
+      msecs += nsecs / NANOSECONDS_PER_MILLISECOND;
+      secs += msecs / MILLISECONDS_PER_SECOND;
+diff -rc boost_1_44_0/libs/interprocess/test/util.hpp boost_1_44_0-new/libs/interprocess/test/util.hpp
+*** boost_1_44_0/libs/interprocess/test/util.hpp	2009-10-15 20:45:53.000000000 +0200
+--- boost_1_44_0-new/libs/interprocess/test/util.hpp	2013-04-12 14:00:20.219658887 +0200
+***************
+*** 71,77 ****
+  boost::xtime xsecs(int secs)
+  {
+     boost::xtime ret;
+!    boost::xtime_get(&ret, boost::TIME_UTC);
+     ret.sec += secs;
+     return ret;
+  }
+--- 71,77 ----
+  boost::xtime xsecs(int secs)
+  {
+     boost::xtime ret;
+!    boost::xtime_get(&ret, boost::TIME_UTC_);
+     ret.sec += secs;
+     return ret;
+  }
+diff -rc boost_1_44_0/libs/spirit/classic/test/grammar_mt_tests.cpp boost_1_44_0-new/libs/spirit/classic/test/grammar_mt_tests.cpp
+*** boost_1_44_0/libs/spirit/classic/test/grammar_mt_tests.cpp	2008-06-22 17:05:38.000000000 +0200
+--- boost_1_44_0-new/libs/spirit/classic/test/grammar_mt_tests.cpp	2013-04-12 14:00:18.836647940 +0200
+***************
+*** 70,76 ****
+  {
+      static long const nanoseconds_per_second = 1000L*1000L*1000L;
+      boost::xtime xt;
+!     boost::xtime_get(&xt, boost::TIME_UTC);
+      xt.nsec+=1000*1000*milliseconds;
+      while (xt.nsec > nanoseconds_per_second)
+      {
+--- 70,76 ----
+  {
+      static long const nanoseconds_per_second = 1000L*1000L*1000L;
+      boost::xtime xt;
+!     boost::xtime_get(&xt, boost::TIME_UTC_);
+      xt.nsec+=1000*1000*milliseconds;
+      while (xt.nsec > nanoseconds_per_second)
+      {
+diff -rc boost_1_44_0/libs/spirit/classic/test/owi_mt_tests.cpp boost_1_44_0-new/libs/spirit/classic/test/owi_mt_tests.cpp
+*** boost_1_44_0/libs/spirit/classic/test/owi_mt_tests.cpp	2008-06-22 17:05:38.000000000 +0200
+--- boost_1_44_0-new/libs/spirit/classic/test/owi_mt_tests.cpp	2013-04-12 14:00:18.836647940 +0200
+***************
+*** 86,92 ****
+              return test_size;
+  
+          boost::xtime now;
+!         boost::xtime_get(&now, boost::TIME_UTC);
+          unsigned long seconds = now.sec - start_time.sec;
+          if (seconds < 4)
+          {
+--- 86,92 ----
+              return test_size;
+  
+          boost::xtime now;
+!         boost::xtime_get(&now, boost::TIME_UTC_);
+          unsigned long seconds = now.sec - start_time.sec;
+          if (seconds < 4)
+          {
+***************
+*** 187,193 ****
+  void concurrent_creation_of_objects()
+  {
+      {
+!         boost::xtime_get(&start_time, boost::TIME_UTC);
+          boost::thread thread1(callable_ref(test1));
+          boost::thread thread2(callable_ref(test2));
+          boost::thread thread3(callable_ref(test3));
+--- 187,193 ----
+  void concurrent_creation_of_objects()
+  {
+      {
+!         boost::xtime_get(&start_time, boost::TIME_UTC_);
+          boost::thread thread1(callable_ref(test1));
+          boost::thread thread2(callable_ref(test2));
+          boost::thread thread3(callable_ref(test3));
+diff -rc boost_1_44_0/libs/thread/example/starvephil.cpp boost_1_44_0-new/libs/thread/example/starvephil.cpp
+*** boost_1_44_0/libs/thread/example/starvephil.cpp	2006-09-14 23:51:01.000000000 +0200
+--- boost_1_44_0-new/libs/thread/example/starvephil.cpp	2013-04-12 14:00:19.413652507 +0200
+***************
+*** 50,56 ****
+                        << "very hot ..." << std::endl;
+          }
+          boost::xtime xt;
+!         boost::xtime_get(&xt, boost::TIME_UTC);
+          xt.sec += 3;
+          boost::thread::sleep(xt);
+          m_chickens += value;
+--- 50,56 ----
+                        << "very hot ..." << std::endl;
+          }
+          boost::xtime xt;
+!         boost::xtime_get(&xt, boost::TIME_UTC_);
+          xt.sec += 3;
+          boost::thread::sleep(xt);
+          m_chickens += value;
+***************
+*** 85,91 ****
+              std::cout << "(" << clock() << ") Chef: cooking ..." << std::endl;
+          }
+          boost::xtime xt;
+!         boost::xtime_get(&xt, boost::TIME_UTC);
+          xt.sec += 2;
+          boost::thread::sleep(xt);
+          {
+--- 85,91 ----
+              std::cout << "(" << clock() << ") Chef: cooking ..." << std::endl;
+          }
+          boost::xtime xt;
+!         boost::xtime_get(&xt, boost::TIME_UTC_);
+          xt.sec += 2;
+          boost::thread::sleep(xt);
+          {
+***************
+*** 111,117 ****
+              if (m_id > 0)
+              {
+                  boost::xtime xt;
+!                 boost::xtime_get(&xt, boost::TIME_UTC);
+                  xt.sec += 3;
+                  boost::thread::sleep(xt);
+              }
+--- 111,117 ----
+              if (m_id > 0)
+              {
+                  boost::xtime xt;
+!                 boost::xtime_get(&xt, boost::TIME_UTC_);
+                  xt.sec += 3;
+                  boost::thread::sleep(xt);
+              }
+diff -rc boost_1_44_0/libs/thread/example/tennis.cpp boost_1_44_0-new/libs/thread/example/tennis.cpp
+*** boost_1_44_0/libs/thread/example/tennis.cpp	2009-10-19 11:18:13.000000000 +0200
+--- boost_1_44_0-new/libs/thread/example/tennis.cpp	2013-04-12 14:00:19.412652499 +0200
+***************
+*** 104,110 ****
+      boost::thread thrdb(thread_adapter(&player, (void*)PLAYER_B));
+  
+      boost::xtime xt;
+!     boost::xtime_get(&xt, boost::TIME_UTC);
+      xt.sec += 1;
+      boost::thread::sleep(xt);
+      {
+--- 104,110 ----
+      boost::thread thrdb(thread_adapter(&player, (void*)PLAYER_B));
+  
+      boost::xtime xt;
+!     boost::xtime_get(&xt, boost::TIME_UTC_);
+      xt.sec += 1;
+      boost::thread::sleep(xt);
+      {
+diff -rc boost_1_44_0/libs/thread/example/thread.cpp boost_1_44_0-new/libs/thread/example/thread.cpp
+*** boost_1_44_0/libs/thread/example/thread.cpp	2006-09-14 23:51:01.000000000 +0200
+--- boost_1_44_0-new/libs/thread/example/thread.cpp	2013-04-12 14:00:19.414652515 +0200
+***************
+*** 14,20 ****
+      void operator()()
+      {
+          boost::xtime xt;
+!         boost::xtime_get(&xt, boost::TIME_UTC);
+          xt.sec += m_secs;
+  
+          boost::thread::sleep(xt);
+--- 14,20 ----
+      void operator()()
+      {
+          boost::xtime xt;
+!         boost::xtime_get(&xt, boost::TIME_UTC_);
+          xt.sec += m_secs;
+  
+          boost::thread::sleep(xt);
+diff -rc boost_1_44_0/libs/thread/example/xtime.cpp boost_1_44_0-new/libs/thread/example/xtime.cpp
+*** boost_1_44_0/libs/thread/example/xtime.cpp	2006-09-14 23:51:01.000000000 +0200
+--- boost_1_44_0-new/libs/thread/example/xtime.cpp	2013-04-12 14:00:19.413652507 +0200
+***************
+*** 10,16 ****
+  int main(int argc, char* argv[])
+  {
+      boost::xtime xt;
+!     boost::xtime_get(&xt, boost::TIME_UTC);
+      xt.sec += 1;
+      boost::thread::sleep(xt); // Sleep for 1 second
+  }
+--- 10,16 ----
+  int main(int argc, char* argv[])
+  {
+      boost::xtime xt;
+!     boost::xtime_get(&xt, boost::TIME_UTC_);
+      xt.sec += 1;
+      boost::thread::sleep(xt); // Sleep for 1 second
+  }
+diff -rc boost_1_44_0/libs/thread/src/pthread/thread.cpp boost_1_44_0-new/libs/thread/src/pthread/thread.cpp
+*** boost_1_44_0/libs/thread/src/pthread/thread.cpp	2010-07-09 21:13:09.000000000 +0200
+--- boost_1_44_0-new/libs/thread/src/pthread/thread.cpp	2013-04-12 14:00:19.415652523 +0200
+***************
+*** 350,356 ****
+                      cond.timed_wait(lock, xt);
+  #   endif
+                      xtime cur;
+!                     xtime_get(&cur, TIME_UTC);
+                      if (xtime_cmp(xt, cur) <= 0)
+                          return;
+                  }
+--- 350,356 ----
+                      cond.timed_wait(lock, xt);
+  #   endif
+                      xtime cur;
+!                     xtime_get(&cur, TIME_UTC_);
+                      if (xtime_cmp(xt, cur) <= 0)
+                          return;
+                  }
+***************
+*** 365,371 ****
+              BOOST_VERIFY(!pthread_yield());
+  #   else
+              xtime xt;
+!             xtime_get(&xt, TIME_UTC);
+              sleep(xt);
+  #   endif
+          }
+--- 365,371 ----
+              BOOST_VERIFY(!pthread_yield());
+  #   else
+              xtime xt;
+!             xtime_get(&xt, TIME_UTC_);
+              sleep(xt);
+  #   endif
+          }
+diff -rc boost_1_44_0/libs/thread/src/pthread/timeconv.inl boost_1_44_0-new/libs/thread/src/pthread/timeconv.inl
+*** boost_1_44_0/libs/thread/src/pthread/timeconv.inl	2010-04-01 17:04:15.000000000 +0200
+--- boost_1_44_0-new/libs/thread/src/pthread/timeconv.inl	2013-04-12 14:00:19.414652515 +0200
+***************
+*** 20,27 ****
+  inline void to_time(int milliseconds, boost::xtime& xt)
+  {
+      int res = 0;
+!     res = boost::xtime_get(&xt, boost::TIME_UTC);
+!     BOOST_ASSERT(res == boost::TIME_UTC);
+  
+      xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
+      xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
+--- 20,27 ----
+  inline void to_time(int milliseconds, boost::xtime& xt)
+  {
+      int res = 0;
+!     res = boost::xtime_get(&xt, boost::TIME_UTC_);
+!     BOOST_ASSERT(res == boost::TIME_UTC_);
+  
+      xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
+      xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
+***************
+*** 57,64 ****
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC);
+!     BOOST_ASSERT(res == boost::TIME_UTC);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+      {
+--- 57,64 ----
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC_);
+!     BOOST_ASSERT(res == boost::TIME_UTC_);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+      {
+***************
+*** 88,95 ****
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC);
+!     BOOST_ASSERT(res == boost::TIME_UTC);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+          milliseconds = 0;
+--- 88,95 ----
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC_);
+!     BOOST_ASSERT(res == boost::TIME_UTC_);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+          milliseconds = 0;
+***************
+*** 110,117 ****
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC);
+!     BOOST_ASSERT(res == boost::TIME_UTC);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+          microseconds = 0;
+--- 110,117 ----
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC_);
+!     BOOST_ASSERT(res == boost::TIME_UTC_);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+          microseconds = 0;
+diff -rc boost_1_44_0/libs/thread/src/win32/timeconv.inl boost_1_44_0-new/libs/thread/src/win32/timeconv.inl
+*** boost_1_44_0/libs/thread/src/win32/timeconv.inl	2007-11-25 19:38:02.000000000 +0100
+--- boost_1_44_0-new/libs/thread/src/win32/timeconv.inl	2013-04-12 14:00:19.416652531 +0200
+***************
+*** 17,24 ****
+  inline void to_time(int milliseconds, boost::xtime& xt)
+  {
+      int res = 0;
+!     res = boost::xtime_get(&xt, boost::TIME_UTC);
+!     assert(res == boost::TIME_UTC);
+  
+      xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
+      xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
+--- 17,24 ----
+  inline void to_time(int milliseconds, boost::xtime& xt)
+  {
+      int res = 0;
+!     res = boost::xtime_get(&xt, boost::TIME_UTC_);
+!     assert(res == boost::TIME_UTC_);
+  
+      xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
+      xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
+***************
+*** 54,61 ****
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC);
+!     assert(res == boost::TIME_UTC);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+      {
+--- 54,61 ----
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC_);
+!     assert(res == boost::TIME_UTC_);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+      {
+***************
+*** 85,92 ****
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC);
+!     assert(res == boost::TIME_UTC);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+          milliseconds = 0;
+--- 85,92 ----
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC_);
+!     assert(res == boost::TIME_UTC_);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+          milliseconds = 0;
+***************
+*** 107,114 ****
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC);
+!     assert(res == boost::TIME_UTC);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+          microseconds = 0;
+--- 107,114 ----
+  {
+      boost::xtime cur;
+      int res = 0;
+!     res = boost::xtime_get(&cur, boost::TIME_UTC_);
+!     assert(res == boost::TIME_UTC_);
+  
+      if (boost::xtime_cmp(xt, cur) <= 0)
+          microseconds = 0;
+diff -rc boost_1_44_0/libs/thread/test/test_xtime.cpp boost_1_44_0-new/libs/thread/test/test_xtime.cpp
+*** boost_1_44_0/libs/thread/test/test_xtime.cpp	2008-07-08 09:44:55.000000000 +0200
+--- boost_1_44_0-new/libs/thread/test/test_xtime.cpp	2013-04-12 14:00:19.432652657 +0200
+***************
+*** 17,24 ****
+  {
+      boost::xtime xt1, xt2, cur;
+      BOOST_CHECK_EQUAL(
+!         boost::xtime_get(&cur, boost::TIME_UTC),
+!         static_cast<int>(boost::TIME_UTC));
+  
+      xt1 = xt2 = cur;
+      xt1.nsec -= 1;
+--- 17,24 ----
+  {
+      boost::xtime xt1, xt2, cur;
+      BOOST_CHECK_EQUAL(
+!         boost::xtime_get(&cur, boost::TIME_UTC_),
+!         static_cast<int>(boost::TIME_UTC_));
+  
+      xt1 = xt2 = cur;
+      xt1.nsec -= 1;
+***************
+*** 42,55 ****
+      boost::xtime orig, cur, old;
+      BOOST_CHECK_EQUAL(
+          boost::xtime_get(&orig,
+!             boost::TIME_UTC), static_cast<int>(boost::TIME_UTC));
+      old = orig;
+  
+      for (int x=0; x < 100; ++x)
+      {
+          BOOST_CHECK_EQUAL(
+!             boost::xtime_get(&cur, boost::TIME_UTC),
+!             static_cast<int>(boost::TIME_UTC));
+          BOOST_CHECK(boost::xtime_cmp(cur, orig) >= 0);
+          BOOST_CHECK(boost::xtime_cmp(cur, old) >= 0);
+          old = cur;
+--- 42,55 ----
+      boost::xtime orig, cur, old;
+      BOOST_CHECK_EQUAL(
+          boost::xtime_get(&orig,
+!             boost::TIME_UTC_), static_cast<int>(boost::TIME_UTC));
+      old = orig;
+  
+      for (int x=0; x < 100; ++x)
+      {
+          BOOST_CHECK_EQUAL(
+!             boost::xtime_get(&cur, boost::TIME_UTC_),
+!             static_cast<int>(boost::TIME_UTC_));
+          BOOST_CHECK(boost::xtime_cmp(cur, orig) >= 0);
+          BOOST_CHECK(boost::xtime_cmp(cur, old) >= 0);
+          old = cur;
+diff -rc boost_1_44_0/libs/thread/test/util.inl boost_1_44_0-new/libs/thread/test/util.inl
+*** boost_1_44_0/libs/thread/test/util.inl	2008-11-03 23:29:39.000000000 +0100
+--- boost_1_44_0-new/libs/thread/test/util.inl	2013-04-12 14:00:19.433652665 +0200
+***************
+*** 28,35 ****
+      const int NANOSECONDS_PER_MILLISECOND = 1000000;
+  
+      boost::xtime xt;
+!     if (boost::TIME_UTC != boost::xtime_get (&xt, boost::TIME_UTC))
+!         BOOST_ERROR ("boost::xtime_get != boost::TIME_UTC");
+  
+      nsecs += xt.nsec;
+      msecs += nsecs / NANOSECONDS_PER_MILLISECOND;
+--- 28,35 ----
+      const int NANOSECONDS_PER_MILLISECOND = 1000000;
+  
+      boost::xtime xt;
+!     if (boost::TIME_UTC_ != boost::xtime_get (&xt, boost::TIME_UTC))
+!         BOOST_ERROR ("boost::xtime_get != boost::TIME_UTC_");
+  
+      nsecs += xt.nsec;
+      msecs += nsecs / NANOSECONDS_PER_MILLISECOND;