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); +}