summaryrefslogtreecommitdiff
path: root/TAO/tao/Object_KeyC.cpp
diff options
context:
space:
mode:
authorsmcqueen <smcqueen@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-08-01 13:50:14 +0000
committersmcqueen <smcqueen@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-08-01 13:50:14 +0000
commit05712e682c2d21fd762d61e4a9ca5f641d2e35c0 (patch)
tree3f26c6011ef5a8cdd71a1600e869f7b2ac04f2a0 /TAO/tao/Object_KeyC.cpp
parentdfae0a573b33ff8d438e95c261ad7c81acc5a8fc (diff)
downloadATCD-05712e682c2d21fd762d61e4a9ca5f641d2e35c0.tar.gz
ChangeLogTag: Fri Aug 01 14:37:23 2003 Simon McQueen <sm@prismtechnologies.com>
Diffstat (limited to 'TAO/tao/Object_KeyC.cpp')
-rw-r--r--TAO/tao/Object_KeyC.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/TAO/tao/Object_KeyC.cpp b/TAO/tao/Object_KeyC.cpp
index f5b45a666c5..957f43bb2b3 100644
--- a/TAO/tao/Object_KeyC.cpp
+++ b/TAO/tao/Object_KeyC.cpp
@@ -118,13 +118,13 @@ TAO::ObjectKey::encode_sequence_to_string (char * &str,
// here.
#undef byte
u_char byte = seq[i];
- if (isprint (byte) && byte != '\\')
+ if (is_legal (byte))
{
*cp++ = (char) byte;
continue;
}
- *cp++ = '\\';
+ *cp++ = '%';
*cp++ = ACE::nibble2hex ((byte >> 4) & 0x0f);
*cp++ = ACE::nibble2hex (byte & 0x0f);
}
@@ -132,6 +132,22 @@ TAO::ObjectKey::encode_sequence_to_string (char * &str,
*cp = '\0';
}
+int TAO::ObjectKey::is_legal (u_char & c)
+{
+ if (isalnum(c))
+ {
+ return 1;
+ }
+ else
+ {
+ return ( c == ';' || c == '/' ||c == ':' || c == '?' ||
+ c == '@' || c == '&' ||c == '=' || c == '+' ||
+ c == '$' || c == ',' ||c == '_' || c == '.' ||
+ c == '!' || c == '~' ||c == '*' || c == '\'' ||
+ c == '-' || c == '(' || c == ')' );
+ }
+}
+
void
TAO::ObjectKey::decode_string_to_sequence (TAO_Unbounded_Sequence<CORBA::Octet> &seq,
const char *str)
@@ -156,7 +172,7 @@ TAO::ObjectKey::decode_string_to_sequence (TAO_Unbounded_Sequence<CORBA::Octet>
cp < eos && i < seq.length ();
i++)
{
- if (*cp == '\\')
+ if (*cp == '%')
{
// This is an escaped non-printable,
// so we decode the hex values into