From 8e7c3d9a4676c5ec1b6b3e9f243af474420ea9fb Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 3 Nov 2012 00:00:56 +0000 Subject: Add support for wget POST interface; from Darcy Gong git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5301 42af7a65-404d-4744-a932-0658087f49c3 --- apps/netutils/codecs/urldecode.c | 67 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) (limited to 'apps/netutils/codecs/urldecode.c') diff --git a/apps/netutils/codecs/urldecode.c b/apps/netutils/codecs/urldecode.c index 9b3b60955..90cc3301b 100644 --- a/apps/netutils/codecs/urldecode.c +++ b/apps/netutils/codecs/urldecode.c @@ -350,6 +350,73 @@ char *urldecode(const char *src, const int src_len, char *dest, int *dest_len) } #endif +/**************************************************************************** + * Name: urlencode_len + ****************************************************************************/ + +#ifdef CONFIG_CODECS_URLCODE +int urlencode_len(const char *src, const int src_len) +{ + const unsigned char *pSrc; + const unsigned char *pEnd; + int len = 0; + + pEnd = (unsigned char *)src + src_len; + for (pSrc = (unsigned char *)src; pSrc < pEnd; pSrc++) + { + if ((*pSrc >= '0' && *pSrc <= '9') || + (*pSrc >= 'a' && *pSrc <= 'z') || + (*pSrc >= 'A' && *pSrc <= 'Z') || + (*pSrc == '_' || *pSrc == '-' || *pSrc == '.' || *pSrc == '~' || *pSrc == ' ')) + { + len++; + } + else + { + len+=3; + } + } + + return len; +} +#endif + +/**************************************************************************** + * Name: urldecode_len + ****************************************************************************/ + +#ifdef CONFIG_CODECS_URLCODE +int urldecode_len(const char *src, const int src_len) +{ + const unsigned char *pSrc; + const unsigned char *pEnd; + int len = 0; + unsigned char cHigh; + unsigned char cLow; + + pSrc = (unsigned char *)src; + pEnd = (unsigned char *)src + src_len; + while (pSrc < pEnd) + { + if (*pSrc == '%' && pSrc + 2 < pEnd) + { + cHigh = *(pSrc + 1); + cLow = *(pSrc + 2); + + if (IS_HEX_CHAR(cHigh) && IS_HEX_CHAR(cLow)) + { + pSrc += 2; + } + } + + len++; + pSrc++; + } + + return len; +} +#endif + /**************************************************************************** * Name: urlrawdecode * -- cgit v1.2.3