From f7809e36df28af02dbc443e4cc852f30f87c86c6 Mon Sep 17 00:00:00 2001 From: leitner Date: Mon, 21 Feb 2005 13:07:13 +0000 Subject: [PATCH] scan_urlencoded2 is like scan_urlencoded, but it will not decode '+' in urls --- Makefile | 2 +- textcode.h | 1 + textcode/scan_urlencoded.c | 12 ++++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 8a19115..1b67b74 100644 --- a/Makefile +++ b/Makefile @@ -637,7 +637,7 @@ uninstall: rm -f $(patsubst %.3,$(MAN3DIR)/%.3,$(notdir $(wildcard */*.3))) rm -f $(LIBDIR)/libowfat.a -VERSION=libowfat-0.21 +VERSION=libowfat-0.22 CURNAME=libowfat-0.21 tar: clean rename diff --git a/textcode.h b/textcode.h index a8b4dd0..96c1abf 100644 --- a/textcode.h +++ b/textcode.h @@ -24,6 +24,7 @@ unsigned long scan_uuencoded(const char *src,char *dest,unsigned long *destlen); unsigned long scan_base64(const char *src,char *dest,unsigned long *destlen); unsigned long scan_quotedprintable(const char *src,char *dest,unsigned long *destlen); unsigned long scan_urlencoded(const char *src,char *dest,unsigned long *destlen); +unsigned long scan_urlencoded2(const char *src,char *dest,unsigned long *destlen); unsigned long scan_yenc(const char *src,char *dest,unsigned long *destlen); unsigned long scan_hexdump(const char *src,char *dest,unsigned long *destlen); unsigned long scan_html(const char *src,char *dest,unsigned long *destlen); diff --git a/textcode/scan_urlencoded.c b/textcode/scan_urlencoded.c index 830dabe..2e0dd2c 100644 --- a/textcode/scan_urlencoded.c +++ b/textcode/scan_urlencoded.c @@ -2,7 +2,7 @@ #include "textcode.h" #include "scan.h" -unsigned long scan_urlencoded(const char *src,char *dest,unsigned long *destlen) { +static unsigned long inner_scan_urlencoded(const char *src,char *dest,unsigned long *destlen,int plus) { register const unsigned char* s=(const unsigned char*) src; unsigned long written=0,i; for (i=0; s[i]; ++i) { @@ -14,7 +14,7 @@ unsigned long scan_urlencoded(const char *src,char *dest,unsigned long *destlen) if (j<0) break; dest[written]|=j; i+=2; - } else if (s[i]=='+') + } else if (s[i]=='+' && plus) dest[written]=' '; else dest[written]=s[i]; @@ -23,3 +23,11 @@ unsigned long scan_urlencoded(const char *src,char *dest,unsigned long *destlen) *destlen=written; return i; } + +unsigned long scan_urlencoded(const char *src,char *dest,unsigned long *destlen) { + return inner_scan_urlencoded(src,dest,destlen,1); +} + +unsigned long scan_urlencoded2(const char *src,char *dest,unsigned long *destlen) { + return inner_scan_urlencoded(src,dest,destlen,0); +}