diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-03 00:00:56 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-03 00:00:56 +0000 |
commit | 8e7c3d9a4676c5ec1b6b3e9f243af474420ea9fb (patch) | |
tree | 8d59aa4f455f6010a95272f5c31b76d7ea4cb806 /apps/netutils/codecs/urldecode.c | |
parent | 3c21deaf5b357b69a32b515c620616a2b6242594 (diff) | |
download | nuttx-8e7c3d9a4676c5ec1b6b3e9f243af474420ea9fb.tar.gz nuttx-8e7c3d9a4676c5ec1b6b3e9f243af474420ea9fb.tar.bz2 nuttx-8e7c3d9a4676c5ec1b6b3e9f243af474420ea9fb.zip |
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
Diffstat (limited to 'apps/netutils/codecs/urldecode.c')
-rw-r--r-- | apps/netutils/codecs/urldecode.c | 67 |
1 files changed, 67 insertions, 0 deletions
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 @@ -351,6 +351,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 * * Description: |