Explorar o código

2009-02-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Use Util::parseLLInt instead of sscanf for portability. The
	conversion "%Lu" fails in Mac OSX which requires "%llu" instead.	
	* src/FtpConnection.cc
Tatsuhiro Tsujikawa %!s(int64=16) %!d(string=hai) anos
pai
achega
56366759fc
Modificáronse 2 ficheiros con 9 adicións e 2 borrados
  1. 6 0
      ChangeLog
  2. 3 2
      src/FtpConnection.cc

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+2009-02-11  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Use Util::parseLLInt instead of sscanf for portability. The
+	conversion "%Lu" fails in Mac OSX which requires "%llu" instead.	
+	* src/FtpConnection.cc
+
 2009-02-11  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Fixed the bug that adding 0 length filter to BitfieldMan filters 1

+ 3 - 2
src/FtpConnection.cc

@@ -341,6 +341,7 @@ unsigned int FtpConnection::receiveResponse()
 # define LONGLONG_PRINTF "%lld"
 # define ULONGLONG_PRINTF "%llu"
 # define LONGLONG_SCANF "%Ld"
+// Mac OSX uses "%llu" for 64bits integer.
 # define ULONGLONG_SCANF "%Lu"
 #endif // __MINGW32__
 
@@ -349,8 +350,8 @@ unsigned int FtpConnection::receiveSizeResponse(uint64_t& size)
   std::pair<unsigned int, std::string> response;
   if(bulkReceiveResponse(response)) {
     if(response.first == 213) {
-      sscanf(response.second.c_str(), "%*u " ULONGLONG_SCANF,
-	     reinterpret_cast<long long unsigned int*>(&size));
+      std::pair<std::string, std::string> rp = Util::split(response.second," ");
+      size = Util::parseULLInt(rp.second);
     }
     return response.first;
   } else {