X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmUtil.cxx;h=d36add49ee6f54065a17d49f20769ac6e46b9b95;hb=8ec2c436833d0ee32de2bd0128045f859cf8d1eb;hp=f20d854df1772de22c2c27dbcfe9a0dfbe525715;hpb=f6ec89e09e257501fedd8e01f4f9988fb3d046a9;p=gdcm.git diff --git a/src/gdcmUtil.cxx b/src/gdcmUtil.cxx index f20d854d..d36add49 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/06/06 13:07:19 $ - Version: $Revision: 1.152 $ + Date: $Date: 2005/06/24 10:55:59 $ + Version: $Revision: 1.155 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -94,6 +94,7 @@ const std::string Util::GDCM_UID = "1.2.826.0.1.3680043.2.1143"; std::string Util::RootUID = GDCM_UID; const uint16_t Util::FMIV = 0x0001; uint8_t *Util::FileMetaInformationVersion = (uint8_t *)&FMIV; +std::string Util::GDCM_MAC_ADRESS = GetMACAddress(); //------------------------------------------------------------------------- // Public @@ -186,17 +187,17 @@ std::string Util::CreateCleanString(std::string const &s) for(unsigned int i=0; i 0) + if (str.size() > 0 ) { - if(!isprint((unsigned char)s[str.size()-1])) + if (!isprint((unsigned char)s[str.size()-1]) ) { - if(s[str.size()-1] == 0) + if (s[str.size()-1] == 0 ) { str[str.size()-1] = ' '; } @@ -218,7 +219,7 @@ std::string Util::NormalizePath(std::string const &pathname) std::string name = pathname; int size = name.size(); - if( name[size-1] != SEPARATOR_X && name[size-1] != SEPARATOR_WIN ) + if ( name[size-1] != SEPARATOR_X && name[size-1] != SEPARATOR_WIN ) { name += SEPARATOR; } @@ -234,7 +235,7 @@ std::string Util::GetPath(std::string const &fullName) std::string res = fullName; int pos1 = res.rfind("/"); int pos2 = res.rfind("\\"); - if( pos1 > pos2) + if ( pos1 > pos2 ) { res.resize(pos1); } @@ -257,7 +258,7 @@ std::string Util::GetName(std::string const &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; - if(slash_pos != std::string::npos) + if (slash_pos != std::string::npos ) { return filename.substr(slash_pos + 1); } @@ -320,10 +321,11 @@ std::string Util::GetCurrentDateTime() strftime (tmp, sizeof (tmp), "%Y%m%d%H%M%S", ptm); // Add milliseconds - std::string r = tmp; - r += Format("%03ld", milliseconds); + // Don't use Util::Format to accelerate execution of code + char tmpAll[80]; + sprintf(tmpAll,"%s%03ld",tmp,milliseconds); - return r; + return tmpAll; } unsigned int Util::GetCurrentThreadID() @@ -389,7 +391,7 @@ std::string Util::DicomString(const char *s, size_t l) * \brief Create a /DICOM/ string: * It should a of even length (no odd length ever) * It can contain as many (if you are reading this from your - * editor the following character is is backslash followed by zero + * editor the following character is backslash followed by zero * that needed to be escaped with an extra backslash for doxygen) \\0 * as you want. * This function is similar to DicomString(const char*), @@ -399,7 +401,7 @@ std::string Util::DicomString(const char *s, size_t l) std::string Util::DicomString(const char *s) { size_t l = strlen(s); - if( l%2 ) + if ( l%2 ) { l++; } @@ -419,7 +421,7 @@ bool Util::DicomStringEqual(const std::string &s1, const char *s2) // s2 is the string from the DICOM reference: 'MONOCHROME1' std::string s1_even = s1; //Never change input parameter std::string s2_even = DicomString( s2 ); - if( s1_even[s1_even.size()-1] == ' ') + if ( s1_even[s1_even.size()-1] == ' ' ) { s1_even[s1_even.size()-1] = '\0'; //replace space character by null } @@ -590,7 +592,7 @@ int GetMacAddrSys ( unsigned char *addr ) char **paddrs; int sock, status=0; - if(gethostname(hostname, MAXHOSTNAMELEN) != 0) + if (gethostname(hostname, MAXHOSTNAMELEN) != 0 ) { perror("gethostname"); return -1; @@ -599,7 +601,7 @@ int GetMacAddrSys ( unsigned char *addr ) paddrs = phost->h_addr_list; sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if(sock == -1) + if (sock == -1 ) { perror("sock"); return -1; @@ -612,7 +614,7 @@ int GetMacAddrSys ( unsigned char *addr ) memcpy(&psa->sin_addr, *paddrs, sizeof(struct in_addr)); status = ioctl(sock, SIOCGARP, &parpreq); - if(status == -1) + if (status == -1 ) { perror("SIOCGARP"); return -1; @@ -649,7 +651,7 @@ int GetMacAddrSys ( unsigned char *addr ) #define ifreq_size(i) sizeof(struct ifreq) #endif // HAVE_SA_LEN - if( (sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP)) < 0 ) + if ( (sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP)) < 0 ) { return -1; } @@ -777,7 +779,7 @@ std::string Util::CreateUniqueUID(const std::string &root) { std::string prefix; std::string append; - if( root.empty() ) + if ( root.empty() ) { // gdcm UID prefix, as supplied by http://www.medicalconnections.co.uk prefix = RootUID; @@ -789,16 +791,20 @@ std::string Util::CreateUniqueUID(const std::string &root) // A root was specified use it to forge our new UID: append += "."; - append += Util::GetMACAddress(); + //append += Util::GetMACAddress(); // to save CPU time + append += Util::GDCM_MAC_ADRESS; append += "."; append += Util::GetCurrentDateTime(); //Also add a mini random number just in case: + char tmp[10]; int r = (int) (100.0*rand()/RAND_MAX); - append += Format("%02d", r); + // Don't use Util::Format to accelerate the execution + sprintf(tmp,"%02d", r); + append += tmp; // If append is too long we need to rehash it - if( (prefix + append).size() > 64 ) + if ( (prefix + append).size() > 64 ) { gdcmErrorMacro( "Size of UID is too long." ); // we need a hash function to truncate this number @@ -811,7 +817,7 @@ std::string Util::CreateUniqueUID(const std::string &root) void Util::SetRootUID(const std::string &root) { - if( root.empty() ) + if ( root.empty() ) RootUID = GDCM_UID; else RootUID = root; @@ -982,7 +988,7 @@ std::string Util::GetIPAddress() char szHostName[HOST_NAME_MAX+1]; int r = gethostname(szHostName, HOST_NAME_MAX); - if( r == 0 ) + if ( r == 0 ) { // Get host adresses struct hostent *pHost = gethostbyname(szHostName); @@ -991,7 +997,7 @@ std::string Util::GetIPAddress() { for( int j = 0; jh_length; j++ ) { - if( j > 0 ) str += "."; + if ( j > 0 ) str += "."; str += Util::Format("%u", (unsigned int)((unsigned char*)pHost->h_addr_list[i])[j]);