Add multi-byte support to lztextlen()

This commit is contained in:
Tatsuo Ishii 1999-11-24 03:45:12 +00:00
parent 95997e159b
commit 61a93ed2da

View file

@ -1,7 +1,7 @@
/* ---------- /* ----------
* lztext.c - * lztext.c -
* *
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/lztext.c,v 1.2 1999/11/17 22:18:45 wieck Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/lztext.c,v 1.3 1999/11/24 03:45:12 ishii Exp $
* *
* Text type with internal LZ compressed representation. Uses the * Text type with internal LZ compressed representation. Uses the
* standard PostgreSQL compression method. * standard PostgreSQL compression method.
@ -21,7 +21,9 @@
#include "utils/builtins.h" #include "utils/builtins.h"
#include "utils/palloc.h" #include "utils/palloc.h"
#include "utils/pg_lzcompress.h" #include "utils/pg_lzcompress.h"
#ifdef MULTIBYTE
#include "mb/pg_wchar.h"
#endif
/* ---------- /* ----------
* lztextin - * lztextin -
@ -134,6 +136,12 @@ lztextout(lztext *lz)
int32 int32
lztextlen(lztext *lz) lztextlen(lztext *lz)
{ {
#ifdef MULTIBYTE
unsigned char *s1,*s2;
int len;
int l;
int wl;
#endif
/* ---------- /* ----------
* Handle NULL * Handle NULL
* ---------- * ----------
@ -141,11 +149,26 @@ lztextlen(lztext *lz)
if (lz == NULL) if (lz == NULL)
return 0; return 0;
#ifdef MULTIBYTE
len = 0;
s1 = s2 = (unsigned char *)lztextout(lz);
l = PGLZ_RAW_SIZE(lz);
while (l > 0)
{
wl = pg_mblen(s1);
l -= wl;
s1 += wl;
len++;
}
pfree((char *)s2);
return (len);
#else
/* ---------- /* ----------
* without multibyte support, it's the remembered rawsize * without multibyte support, it's the remembered rawsize
* ---------- * ----------
*/ */
return PGLZ_RAW_SIZE(lz); return PGLZ_RAW_SIZE(lz);
#endif
} }
@ -228,8 +251,6 @@ text_lztext(text *txt)
} }
return result; return result;
} }