X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmUtil.cxx;h=19895c1f4e960b4b09ff98135f55a897a9d7d5a3;hb=6eb024e510fd273aea3e31e85630d6b36ff18c0c;hp=5267b38d7626e361b0e70be21fb4b8f52ffd8577;hpb=a23a0d4b82cc44b7fa2adada4454cde3e1431c1e;p=gdcm.git diff --git a/src/gdcmUtil.cxx b/src/gdcmUtil.cxx index 5267b38d..19895c1f 100644 --- a/src/gdcmUtil.cxx +++ b/src/gdcmUtil.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmUtil.cxx,v $ Language: C++ - Date: $Date: 2005/10/28 15:52:46 $ - Version: $Revision: 1.172 $ + Date: $Date: 2006/01/10 15:54:03 $ + Version: $Revision: 1.182 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -18,7 +18,9 @@ #include "gdcmUtil.h" #include "gdcmDebug.h" + #include +#include // for va_list // For GetCurrentDate, GetCurrentTime #include @@ -110,7 +112,7 @@ std::string Util::GDCM_MAC_ADRESS = GetMACAddress(); /** * \brief Provide a better 'c++' approach for sprintf * For example c code is: - * char result[200]; // hope 200 is enough + * char result[2048]; // hope 2048 is enough * sprintf(result, "%04x|%04x", group , elem); * * c++ code is @@ -126,7 +128,7 @@ std::string Util::GDCM_MAC_ADRESS = GetMACAddress(); */ std::string Util::Format(const char *format, ...) { - char buffer[2048]; + char buffer[2048]; // hope 2048 is enough va_list args; va_start(args, format); vsprintf(buffer, format, args); //might be a security flaw @@ -192,7 +194,6 @@ int Util::CountSubstring (const std::string &str, */ bool Util::IsCleanString(std::string const &s) { - //std::cout<< std::endl << s << std::endl; for(unsigned int i=0; i pos2 ) @@ -311,7 +321,9 @@ std::string Util::GetPath(std::string const &fullName) { res.resize(pos2); } - +*/ + int pos = res.rfind(GDCM_FILESEPARATOR); + res.resize(pos); return res; } @@ -322,10 +334,14 @@ std::string Util::GetPath(std::string const &fullName) std::string Util::GetName(std::string const &fullName) { std::string filename = fullName; - +/* std::string::size_type slash_pos = filename.rfind("/"); std::string::size_type backslash_pos = filename.rfind("\\"); - slash_pos = slash_pos > backslash_pos ? slash_pos : backslash_pos; + // At least with my gcc4.0.1, unfound char results in pos =4294967295 ... + //slash_pos = slash_pos > backslash_pos ? slash_pos : backslash_pos; + slash_pos = slash_pos < backslash_pos ? slash_pos : backslash_pos; +*/ + std::string::size_type slash_pos = filename.rfind(GDCM_FILESEPARATOR); if (slash_pos != std::string::npos ) { return filename.substr(slash_pos + 1); @@ -481,8 +497,8 @@ std::string Util::DicomString(const char *s) /** * \brief Safely check the equality of two Dicom String: * - Both strings should be of even length - * - We allow padding of even length string by either a null - * character of a space + * - We allow padding of even length string by either + * a null character of a space */ bool Util::DicomStringEqual(const std::string &s1, const char *s2) { @@ -499,8 +515,8 @@ bool Util::DicomStringEqual(const std::string &s1, const char *s2) /** * \brief Safely compare two Dicom String: * - Both strings should be of even length - * - We allow padding of even length string by either a null - * character of a space + * - We allow padding of even length string by either + * a null character of a space */ bool Util::CompareDicomString(const std::string &s1, const char *s2, int op) { @@ -813,7 +829,7 @@ int GetMacAddrSys ( unsigned char *addr ) close(sd); #endif // Not implemented platforms (or no cable !) - perror("in Get MAC Adress (internal) : There was a configuration problem on your plateform"); + perror("in Get MAC Adress (internal) : There was a configuration problem (or no cable !) on your plateform"); memset(addr,0,6); return -1; #endif //__sun @@ -837,7 +853,7 @@ inline int getlastdigit(unsigned char *data) } /** - * \brief Encode the mac address on a fixed lenght string of 15 characters. + * \brief Encode the mac address on a fixed length string of 15 characters. * we save space this way. */ std::string Util::GetMACAddress() @@ -870,14 +886,14 @@ std::string Util::GetMACAddress() } else { - gdcmWarningMacro("Problem in finding the MAC Address"); + gdcmStaticWarningMacro("Problem in finding the MAC Address"); return ""; } } /** - * \brief Creates a new UID. As stipulate in the DICOM ref - * each time a DICOM image is create it should have + * \brief Creates a new UID. As stipulated in the DICOM ref + * each time a DICOM image is created it should have * a unique identifier (URI) * @param root is the DICOM prefix assigned by IOS group */ @@ -912,7 +928,7 @@ std::string Util::CreateUniqueUID(const std::string &root) // If append is too long we need to rehash it if ( (prefix + append).size() > 64 ) { - gdcmErrorMacro( "Size of UID is too long." ); + gdcmStaticErrorMacro( "Size of UID is too long." ); // we need a hash function to truncate this number // if only md5 was cross plateform // MD5(append); @@ -978,7 +994,7 @@ std::ostream &binary_write(std::ostream &os, const uint32_t &val) std::ostream &binary_write(std::ostream &os, const double &val) { #if defined(GDCM_WORDS_BIGENDIAN) || defined(GDCM_FORCE_BIGENDIAN_EMULATION) - double swap; + double swap = val; char *beg = (char *)&swap; char *end = beg + 7; @@ -1145,6 +1161,14 @@ std::string Util::GetIPAddress() return str; } +void Util::hfpswap(double *a, double *b) +{ + double tmp; + tmp=*a; + *a=*b; + *b=tmp; +} + //------------------------------------------------------------------------- } // end namespace gdcm