(file) Return to CIMObjectPath.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/CIMObjectPath.cpp between version 1.51 and 1.59

version 1.51, 2005/05/20 08:58:48 version 1.59, 2007/05/14 20:19:23
Line 1 
Line 1 
 //%2005////////////////////////////////////////////////////////////////////////  //%2006////////////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
Line 8 
Line 8 
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 // EMC Corporation; VERITAS Software Corporation; The Open Group. // EMC Corporation; VERITAS Software Corporation; The Open Group.
   // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
   // EMC Corporation; Symantec Corporation; The Open Group.
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to // of this software and associated documentation files (the "Software"), to
Line 27 
Line 29 
 // //
 //============================================================================== //==============================================================================
 // //
 // Author: Mike Brasher (mbrasher@bmc.com)  
 //  
 // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)  
 //              Carol Ann Krug Graves, Hewlett-Packard Company  
 //                (carolann_graves@hp.com)  
 //              Dave Sudlik, IBM (dsudlik@us.ibm.com)  
 //              Vijay Eli, IBM (vijayeli@in.ibm.com), bug#2556.  
 //  
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #include <Pegasus/Common/Config.h> #include <Pegasus/Common/Config.h>
Line 191 
Line 185 
     _rep = new CIMKeyBindingRep(*x._rep);     _rep = new CIMKeyBindingRep(*x._rep);
 } }
  
 CIMKeyBinding::CIMKeyBinding(const CIMName& name, const String& value, Type type)  CIMKeyBinding::CIMKeyBinding(
       const CIMName& name,
       const String& value,
       Type type)
 { {
     _rep = new CIMKeyBindingRep(name, value, type);     _rep = new CIMKeyBindingRep(name, value, type);
 } }
Line 222 
Line 219 
 //  case CIMTYPE_REAL32: //  case CIMTYPE_REAL32:
 //  case CIMTYPE_REAL64: //  case CIMTYPE_REAL64:
     case CIMTYPE_OBJECT:     case CIMTYPE_OBJECT:
   #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT
       case CIMTYPE_INSTANCE:
   #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT
         // From PEP 194: EmbeddedObjects cannot be keys.         // From PEP 194: EmbeddedObjects cannot be keys.
         throw TypeMismatchException();         throw TypeMismatchException();
         break;         break;
Line 311 
Line 311 
 //      case CIMTYPE_REAL32: //      case CIMTYPE_REAL32:
 //      case CIMTYPE_REAL64: //      case CIMTYPE_REAL64:
         case CIMTYPE_OBJECT:         case CIMTYPE_OBJECT:
   #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT
           case CIMTYPE_INSTANCE:
   #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT
             // From PEP 194: EmbeddedObjects cannot be keys.             // From PEP 194: EmbeddedObjects cannot be keys.
             return false;             return false;
             break;             break;
Line 349 
Line 352 
         catch (Exception&)         catch (Exception&)
         {         {
             // If CIMObjectPath parsing fails, just compare strings             // If CIMObjectPath parsing fails, just compare strings
             return (String::equal(x.getValue(), y.getValue()));              return String::equal(x.getValue(), y.getValue());
         }         }
         break;         break;
     case CIMKeyBinding::BOOLEAN:     case CIMKeyBinding::BOOLEAN:
         // Case-insensitive comparison is sufficient for booleans         // Case-insensitive comparison is sufficient for booleans
         return (String::equalNoCase(x.getValue(), y.getValue()));          return String::equalNoCase(x.getValue(), y.getValue());
         break;         break;
     case CIMKeyBinding::NUMERIC:     case CIMKeyBinding::NUMERIC:
         // Note: This comparison assumes XML syntax for integers         // Note: This comparison assumes XML syntax for integers
Line 384 
Line 387 
         }         }
         // Note: Keys may not be real values, so don't try comparing as reals         // Note: Keys may not be real values, so don't try comparing as reals
         // We couldn't parse the numbers, so just compare the strings         // We couldn't parse the numbers, so just compare the strings
         return (String::equal(x.getValue(), y.getValue()));          return String::equal(x.getValue(), y.getValue());
         break;         break;
     default:  // CIMKeyBinding::STRING     default:  // CIMKeyBinding::STRING
         return (String::equal(x.getValue(), y.getValue()));          return String::equal(x.getValue(), y.getValue());
         break;         break;
     }     }
  
Line 468 
Line 471 
  
         Boolean isValid = false;         Boolean isValid = false;
  
         if (isdigit(hostname[0]))          if (isascii(hostname[0]) && isdigit(hostname[0]))
         {         {
             //--------------------------------------------------------------             //--------------------------------------------------------------
             // Attempt to validate an IP address, but keep in mind that it             // Attempt to validate an IP address, but keep in mind that it
Line 479 
Line 482 
  
             for (Uint32 octet=1; octet<=4; octet++)             for (Uint32 octet=1; octet<=4; octet++)
             {             {
                 Uint32 octetValue = 0;                  Uint32 octetValue = 0, j = 0;
  
                 //----------------------------------------------------------                 //----------------------------------------------------------
                 // If a non-digit is encountered in the input parameter,                 // If a non-digit is encountered in the input parameter,
                 // then break from here and attempt to validate as host name.                 // then break from here and attempt to validate as host name.
                 //----------------------------------------------------------                 //----------------------------------------------------------
                 if (!isdigit(hostname[i]))                  if (!(isascii(hostname[i]) && isdigit(hostname[i])))
                 {                 {
                     isValid = false;                     isValid = false;
                     break;                     break;
                 }                 }
  
                 while (isdigit(hostname[i]))  // skip over digits                  // skip over digits
                   while (isascii(hostname[i]) && isdigit(hostname[i]))
                   {
                       if (j == 3)
                 {                 {
                          isValid = false;
                          break;
                       }
                     octetValue = octetValue*10 + (hostname[i] - '0');                     octetValue = octetValue*10 + (hostname[i] - '0');
                     i++;                     i++;
                       j++;
                 }                 }
  
                 if (octetValue > 255)                 if (octetValue > 255)
Line 512 
Line 522 
  
                 // Check for the case where it's a valid host name that happens                 // Check for the case where it's a valid host name that happens
                 // to have 4 (or more) leading all-numeric host segments.                 // to have 4 (or more) leading all-numeric host segments.
                 if ((octet == 4) && (hostname[i] != ':') && hostname[i] != char(0))                  if ((octet == 4) && (hostname[i] != ':') &&
                       hostname[i] != char(0))
                 {                 {
                     isValid = false;                     isValid = false;
                     break;                     break;
Line 534 
Line 545 
                 expectHostSegment = false;                 expectHostSegment = false;
                 hostSegmentIsNumeric = true; // assume all-numeric host segment                 hostSegmentIsNumeric = true; // assume all-numeric host segment
  
                 if (!isalnum(hostname[i]))                  if (!(isascii(hostname[i]) &&
                         (isalnum(hostname[i]) || (hostname[i] == '_'))))
                 {                 {
                     return false;                     return false;
                 }                 }
  
                 while (isalnum(hostname[i]) || (hostname[i] == '-') ||                  while (isascii(hostname[i]) &&
                                                (hostname[i] == '_'))                         (isalnum(hostname[i]) || (hostname[i] == '-') ||
                           (hostname[i] == '_')))
                 {                 {
                     // If a non-digit is encountered, set "all-numeric"                     // If a non-digit is encountered, set "all-numeric"
                     // flag to false                     // flag to false
                     if (isalpha(hostname[i]) || (hostname[i] == '-') ||                     if (isalpha(hostname[i]) || (hostname[i] == '-') ||
                                                 (hostname[i] == '_')) {                                                  (hostname[i] == '_'))
                       {
                         hostSegmentIsNumeric = false;                         hostSegmentIsNumeric = false;
                     }                     }
                     i++;                     i++;
Line 559 
Line 573 
             }             }
             // If the last Host Segment is all numeric, then return false.             // If the last Host Segment is all numeric, then return false.
             // RFC 1123 says "highest-level component label will be alphabetic".             // RFC 1123 says "highest-level component label will be alphabetic".
             if (hostSegmentIsNumeric) {              if (hostSegmentIsNumeric)
               {
                 return false;                 return false;
             }             }
         }         }
Line 573 
Line 588 
  
         if (hostname[i] == ':')         if (hostname[i] == ':')
         {         {
             if (!isdigit(hostname[++i]))              i++;
               if (!(isascii(hostname[i]) && isdigit(hostname[i])))
             {             {
                 return false;                 return false;
             }             }
               i++;
  
             while (isdigit(hostname[++i]));              while (isascii(hostname[i]) && isdigit(hostname[i]))
               {
                   i++;
               }
         }         }
  
         return (hostname[i] == char(0));         return (hostname[i] == char(0));
Line 870 
Line 890 
                 isComma = true;                 isComma = true;
             }             }
  
               if (*p == '-')
               {
             Sint64 x;             Sint64 x;
   
             if (!XmlReader::stringToSignedInteger(p, x))             if (!XmlReader::stringToSignedInteger(p, x))
                 throw MalformedObjectNameException(objectName);                 throw MalformedObjectNameException(objectName);
               }
               else
               {
                   Uint64 x;
                   if (!XmlReader::stringToUnsignedInteger(p, x))
                       throw MalformedObjectNameException(objectName);
               }
  
             valueString.assign(p, n);             valueString.assign(p, n);
  
Line 1059 
Line 1087 
  
             CIMKeyBinding::Type type = keyBindings[i].getType();             CIMKeyBinding::Type type = keyBindings[i].getType();
  
             if (type == CIMKeyBinding::STRING || type == CIMKeyBinding::REFERENCE)              if (type == CIMKeyBinding::STRING ||
                   type == CIMKeyBinding::REFERENCE)
                 objectName.append('"');                 objectName.append('"');
  
             objectName.append(value);             objectName.append(value);
  
             if (type == CIMKeyBinding::STRING || type == CIMKeyBinding::REFERENCE)              if (type == CIMKeyBinding::STRING ||
                   type == CIMKeyBinding::REFERENCE)
                 objectName.append('"');                 objectName.append('"');
  
             if (i + 1 != n)             if (i + 1 != n)


Legend:
Removed from v.1.51  
changed lines
  Added in v.1.59

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2