Webboard: mnogosearch-3.3.10 vs. postgres-9.0
[email protected] 28 Jan 2011 21:34:09 -0000
Newsgroups
gmane.comp.web.mnogosearch.general
Message-ID
<[email protected] >
Author: Alexander Barkov
Email: [email protected]
Message:
This patch fixes the problem.
Will be included into mnogosearch-3.3.12:
diff -u mnogosearch33/include/udm_utils.h:1.78 mnogosearch33/include/udm_utils.h:1.79
--- mnogosearch33/include/udm_utils.h:1.78 Thu Jan 27 16:57:20 2011
+++ mnogosearch33/include/udm_utils.h Fri Jan 28 23:04:30 2011
@@ -163,6 +163,7 @@
size_t UdmHexEncode(char *dst, const char *src, size_t len);
+size_t UdmHexDecode(char *dst, const char *src, size_t len);
#define BASE64_LEN(len) (4 * (((len) + 2) / 3) +2)
extern __C_LINK size_t __UDMCALL udm_base64_encode (const char *s, char *store, size_t length);
Index: mnogosearch33/src/sql-pgsql.c
diff -u mnogosearch33/src/sql-pgsql.c:1.50 mnogosearch33/src/sql-pgsql.c:1.51
--- mnogosearch33/src/sql-pgsql.c:1.50 Thu Jan 27 16:57:24 2011
+++ mnogosearch33/src/sql-pgsql.c Fri Jan 28 23:04:30 2011
@@ -146,6 +146,12 @@
{
char *dst0= dst;
const char *srcend= src + length;
+
+ /* Postgres 9.0 hex format */
+ if (length > 1 && src[0] == '\\' && src[1] == 'x')
+ return UdmHexDecode(dst, src + 2, length - 2);
+
+ /* Traditional Postgres escape format */
for ( ; src < srcend; dst++, src++)
{
if (*src == '\\' && src + 4 <= srcend &&
Index: mnogosearch33/src/utils.c
diff -u mnogosearch33/src/utils.c:1.128 mnogosearch33/src/utils.c:1.129
--- mnogosearch33/src/utils.c:1.128 Thu Jan 27 16:57:25 2011
+++ mnogosearch33/src/utils.c Fri Jan 28 23:04:30 2011
@@ -92,6 +92,21 @@
}
+size_t
+UdmHexDecode(char *dst, const char *src, size_t len)
+{
+ char *dst0= dst;
+ for ( ; len > 1; len-= 2)
+ {
+ int hi, lo;
+ if ((hi= ch2x(*src++)) < 0 || (lo= ch2x(*src++)) < 0)
+ return 0; /* Bad character */
+ *dst++= hi << 4 | lo;
+ }
+ return dst - dst0;
+}
+
+
char*
UdmUnescapeCGIQuery(char *d, const char *s)
{
Reply: <http://www.mnogosearch.org/board/message.php?id=21190>