version 1.58.4.4, 2008/02/19 22:09:39
|
version 1.60.4.1, 2007/06/08 10:40:29
|
|
|
#include "XmlWriter.h" | #include "XmlWriter.h" |
#include "XmlReader.h" | #include "XmlReader.h" |
#include "ArrayInternal.h" | #include "ArrayInternal.h" |
#include "HostLocator.h" |
#include "HostAddress.h" |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
| |
static Boolean isValidHostname(const String& hostname) | static Boolean isValidHostname(const String& hostname) |
{ | { |
HostLocator addr(hostname); |
HostAddress addr(hostname); |
| |
return addr.isValid(); | return addr.isValid(); |
} | } |
|
|
| |
p++; | p++; |
| |
Array<Uint8> keyValueUTF8; |
|
keyValueUTF8.reserveCapacity(128); |
|
|
|
while (*p && *p != '"') | while (*p && *p != '"') |
{ | { |
if (*p == '\\') | if (*p == '\\') |
{ | { |
p++; |
*p++; |
| |
if ((*p != '\\') && (*p != '"')) | if ((*p != '\\') && (*p != '"')) |
{ | { |
|
|
} | } |
} | } |
| |
keyValueUTF8.append(*p++); |
valueString.append(*p++); |
} | } |
| |
if (*p++ != '"') | if (*p++ != '"') |
throw MalformedObjectNameException(objectName); | throw MalformedObjectNameException(objectName); |
| |
// Convert the UTF-8 value to a UTF-16 String |
|
|
|
valueString.assign( |
|
(const char*)keyValueUTF8.getData(), |
|
keyValueUTF8.size()); |
|
|
|
/* | /* |
Guess at the type of this quoted key value. If the value | Guess at the type of this quoted key value. If the value |
can be parsed into a CIMObjectPath with at least one key | can be parsed into a CIMObjectPath with at least one key |
|
|
*/ | */ |
type = CIMKeyBinding::STRING; | type = CIMKeyBinding::STRING; |
| |
/* Performance shortcut will check for |
|
equal sign instead of doing the full |
|
CIMObjectPath creation and exception handling |
|
*/ |
|
keyValueUTF8.append('\0'); |
|
if (strchr((const char*)keyValueUTF8.getData(), '=')) |
|
{ |
|
// found an equal sign, high probability for a reference |
|
try | try |
{ | { |
CIMObjectPath testForPath(valueString); | CIMObjectPath testForPath(valueString); |
|
|
// Not a reference value; leave type as STRING | // Not a reference value; leave type as STRING |
} | } |
} | } |
} |
|
else if (toupper(*p) == 'T' || toupper(*p) == 'F') | else if (toupper(*p) == 'T' || toupper(*p) == 'F') |
{ | { |
type = CIMKeyBinding::BOOLEAN; | type = CIMKeyBinding::BOOLEAN; |