OSDN Git Service

addid library source 20140221
[zither/ds-zither.git] / sources / lib / libms / convert.c
1 /* -- selef_convert_data() -- */
2 /* -- 20120910                */
3
4 #include <stdio.h>
5 #include <string.h>
6 #include <iconv.h>
7 #include <errno.h>
8
9 #include "almemsys.h"
10
11
12 int convert(const char *input_code, const char *output_code, const char *input_text, char *output_buf, size_t output_bufsize)
13 {
14 iconv_t iconv_fd;
15 size_t input_len, output_len;
16 size_t iconv_ret;
17
18 iconv_fd = iconv_open(output_code, input_code);
19 if(iconv_fd == (iconv_t)-1){
20   fprintf(stderr,"iconv not open =  %s <%d>\n", strerror(errno), errno);
21   iconv_close(iconv_fd);
22   return -1;
23   }
24
25 input_len = strlen(input_text);
26 output_len = output_bufsize - 1;
27
28 iconv_ret = iconv(iconv_fd, &input_text, &input_len, &output_buf, &output_len);
29
30 #ifdef ICONV_BUG
31 printf("iconv stat =  <ret %d> <max size %d>\n", iconv_ret, output_bufsize);
32 #endif
33
34 if(iconv_ret == -1){
35   fprintf(stderr, "iconv err =  %s <%d>\n", strerror(errno), errno);
36   iconv_close(iconv_fd);
37   return -1;
38   }
39
40 iconv_close(iconv_fd);
41 return 0;
42 }
43
44
45