Made conversion interface more general.
[gedcom-parse.git] / utf8 / utf8-locale.c
1 /* Encoding utility from UTF-8 to locale and vice versa
2    Copyright (C) 2001, 2002 Peter Verthez
3
4    Permission granted to do anything with this file that you want, as long
5    as the above copyright is retained in all copies.
6    THERE IS NO WARRANTY - USE AT YOUR OWN RISK
7 */
8
9 /* $Id$ */
10 /* $Name$ */
11
12 #include "utf8.h"
13 #include <stdlib.h>
14 #include <assert.h>
15 #include "libcharset.h"
16
17 static convert_t locale_conv = NULL;
18
19 void convert_set_unknown(const char* unknown)
20 {
21   conversion_set_unknown(locale_conv, unknown);
22 }
23
24 void close_conversion_contexts()
25 {
26   cleanup_utf8_conversion(locale_conv);
27 }
28
29 int open_conversion_contexts()
30 {
31   assert (locale_conv == NULL);
32   locale_conv = initialize_utf8_conversion(locale_charset());
33
34   if (locale_conv) {
35     atexit(close_conversion_contexts);
36     return 0;
37   }
38   else {
39     return -1;
40   }
41 }
42
43 char* convert_utf8_to_locale(const char* input, int *conv_fails)
44 {
45   if (!locale_conv)
46     open_conversion_contexts();
47
48   return convert_from_utf8(locale_conv, input, conv_fails);
49 }
50
51 char* convert_locale_to_utf8(const char* input)
52 {
53   if (!locale_conv)
54     open_conversion_contexts();
55
56   return convert_to_utf8(locale_conv, input);
57 }