diff options
author | smcqueen <smcqueen@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-08-01 13:50:14 +0000 |
---|---|---|
committer | smcqueen <smcqueen@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-08-01 13:50:14 +0000 |
commit | 05712e682c2d21fd762d61e4a9ca5f641d2e35c0 (patch) | |
tree | 3f26c6011ef5a8cdd71a1600e869f7b2ac04f2a0 /TAO/tao/Object_KeyC.cpp | |
parent | dfae0a573b33ff8d438e95c261ad7c81acc5a8fc (diff) | |
download | ATCD-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.cpp | 22 |
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 |