X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=charset%2Fmp-charconv.c;h=642ff81e4557cef54c2793a8714fb311163282f1;hb=1bc3bb66e47ec02003658fb3040aef0ffd7b7540;hp=6615973cb4c23588ae2a6a38cccd90127911fe1f;hpb=13499b70e642fa92ae3152ed8b17bebd778a8ac0;p=libucw.git diff --git a/charset/mp-charconv.c b/charset/mp-charconv.c index 6615973c..642ff81e 100644 --- a/charset/mp-charconv.c +++ b/charset/mp-charconv.c @@ -1,5 +1,5 @@ /* - * Sherlock Library -- Character Conversion with Allocation on a Memory Pool + * Sherlock Library -- Character Conversion with Allocation on a Memory Pool * * (c) 2006 Pavel Charvat * @@ -7,22 +7,22 @@ * of the GNU Lesser General Public License. */ -#include "lib/lib.h" -#include "charset/mp-charconv.h" +#include +#include #include #include byte * -mp_strconv(struct mempool *mp, byte *s, uns in_cs, uns out_cs) +mp_strconv(struct mempool *mp, const byte *s, uint in_cs, uint out_cs) { if (in_cs == out_cs) return mp_strdup(mp, s); - + struct conv_context c; char *b[32]; - uns bs[32], n = 0, sum = 0; - uns l = strlen(s) + 1; - + uint bs[32], n = 0, sum = 0; + uint l = strlen(s) + 1; + conv_init(&c); conv_set_charset(&c, in_cs, out_cs); c.source = s; @@ -33,12 +33,12 @@ mp_strconv(struct mempool *mp, byte *s, uns in_cs, uns out_cs) l <<= 1; c.dest_start = c.dest = b[n] = alloca(l); c.dest_end = c.dest_start+ l; - uns r = conv_run(&c); + uint r = conv_run(&c); sum += bs[n++] = c.dest - c.dest_start; if (r & CONV_SOURCE_END) { c.dest_start = c.dest = mp_alloc(mp, sum); - for (uns i = 0; i < n; i++) + for (uint i = 0; i < n; i++) { memcpy(c.dest, b[i], bs[i]); c.dest += bs[i];