Author: nandika Date: Tue Oct 30 01:28:27 2007 New Revision: 589983 URL: http://svn.apache.org/viewvc?rev=589983&view=rev Log: axutil_url_decode and axutil_hexit functions added
Modified: webservices/axis2/trunk/c/util/include/axutil_utils.h webservices/axis2/trunk/c/util/src/utils.c Modified: webservices/axis2/trunk/c/util/include/axutil_utils.h URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/include/axutil_utils.h?rev=589983&r1=589982&r2=589983&view=diff ============================================================================== --- webservices/axis2/trunk/c/util/include/axutil_utils.h (original) +++ webservices/axis2/trunk/c/util/include/axutil_utils.h Tue Oct 30 01:28:27 2007 @@ -178,6 +178,15 @@ const axis2_char_t * s, axis2_bool_t quotes); + AXIS2_EXTERN int AXIS2_CALL + axutil_hexit(axis2_char_t c); + + AXIS2_EXTERN axis2_status_t AXIS2_CALL + axutil_url_decode( + const axutil_env_t * env, + axis2_char_t * dest, + axis2_char_t * src); + /** @} */ #ifdef __cplusplus Modified: webservices/axis2/trunk/c/util/src/utils.c URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/utils.c?rev=589983&r1=589982&r2=589983&view=diff ============================================================================== --- webservices/axis2/trunk/c/util/src/utils.c (original) +++ webservices/axis2/trunk/c/util/src/utils.c Tue Oct 30 01:28:27 2007 @@ -165,3 +165,48 @@ *qscan = '\0'; return qstr; } + + +AXIS2_EXTERN axis2_status_t AXIS2_CALL +axutil_url_decode( + const axutil_env_t * env, + axis2_char_t * dest, + axis2_char_t * src) +{ + AXIS2_PARAM_CHECK(env->error, dest, AXIS2_FAILURE); + AXIS2_PARAM_CHECK(env->error, src, AXIS2_FAILURE); + + for (; *src != '\0'; ++dest, ++src) + { + if (src[0] == '%' && isxdigit(src[1]) && isxdigit(src[2])) + { + *dest = axutil_hexit(src[1]) * 16 + axutil_hexit(src[2]); + src += 2; + } + else + { + *dest = *src; + } + } + *dest = '\0'; + + return AXIS2_SUCCESS; +} + +AXIS2_EXTERN int AXIS2_CALL +axutil_hexit(axis2_char_t c) +{ + if (c >= '0' && c <= '9') + { + return c - '0'; + } + if (c >= 'a' && c <= 'f') + { + return c - 'a' + 10; + } + if (c >= 'A' && c <= 'F') + { + return c - 'A' + 10; + } + return 0; +} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]