--- psiconv/trunk/lib/psiconv/misc.c 2004/01/04 22:20:43 183 +++ psiconv/trunk/lib/psiconv/misc.c 2004/01/06 20:15:01 184 @@ -30,17 +30,32 @@ #endif -char *psiconv_make_printable(const char *s) +char *psiconv_make_printable(const psiconv_config config, + const psiconv_string_t input) { - int i; - char *res = malloc(strlen(s) + 1); - if (!res) + int i,len; + psiconv_u8 *intermed; + char *output; + int res; + + if ((res = psiconv_unicode_to_chars(config,input,&intermed))) return NULL; - for (i = 0; i < strlen(s); i ++) - if (s[i] < 0x20 || s[i] >= 0x7f) - res[i] = '.'; + + len = 0; + while (intermed[len]) + len++; + + if (!(output = malloc(sizeof(*output) * (len + 1)))) { + free(intermed); + return NULL; + } + + for (i = 0; i < len; i ++) + if (intermed[i] < 0x20 || intermed[i] >= 0x7f) + output[i] = '.'; else - res[i] = s[i]; - res[strlen(s)] = 0; - return res; + output[i] = intermed[i]; + output[i] = 0; + free(intermed); + return output; }