X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ficu_transform.c;h=4e3036dba25d001e54442ad0055a767e40c86516;hb=ad4b64e5b3ab9ebc4b2e8184a3782b10962f7d3d;hp=a3d9e162af9db5a043bd622fb16c10e56398362e;hpb=88d3bedf772316f87e1996f655ccf8d1e2589755;p=yaz-moved-to-github.git diff --git a/src/icu_transform.c b/src/icu_transform.c index a3d9e16..4e3036d 100644 --- a/src/icu_transform.c +++ b/src/icu_transform.c @@ -19,6 +19,7 @@ #include +#include #include #include #include @@ -32,6 +33,19 @@ struct icu_transform UTransliterator * trans; }; +struct icu_transform *icu_transform_clone(struct icu_transform *old) +{ + struct icu_transform *transform + = (struct icu_transform *) xmalloc(sizeof(struct icu_transform)); + UErrorCode status = U_ZERO_ERROR; + assert(old); + transform->action = old->action; + assert(old->trans); + transform->trans = utrans_clone(old->trans, &status); + assert(transform->trans); + return transform; +} + struct icu_transform * icu_transform_create(const char *id, char action, const char *rules, UErrorCode *status) @@ -46,7 +60,10 @@ struct icu_transform * icu_transform_create(const char *id, char action, transform->trans = 0; if (id) + { icu_utf16_from_utf8_cstr(id16, id, status); + id16->utf16[id16->utf16_len] = 0; + } if (rules) icu_utf16_from_utf8_cstr(rules16, rules, status);