dup_mb_to_wc.c 757 B

1234567891011121314151617181920212223242526272829
  1. /*
  2. * dup_mb_to_wc: memory-allocating wrapper on mb_to_wc.
  3. *
  4. * Also dup_mb_to_wc_c: same but you already know the length of the
  5. * string.
  6. */
  7. #include "putty.h"
  8. #include "misc.h"
  9. wchar_t *dup_mb_to_wc_c(int codepage, int flags, const char *string, int len)
  10. {
  11. int mult;
  12. for (mult = 1 ;; mult++) {
  13. wchar_t *ret = snewn(mult*len + 2, wchar_t);
  14. int outlen;
  15. outlen = mb_to_wc(codepage, flags, string, len, ret, mult*len + 1);
  16. if (outlen < mult*len+1) {
  17. ret[outlen] = L'\0';
  18. return ret;
  19. }
  20. sfree(ret);
  21. }
  22. }
  23. wchar_t *dup_mb_to_wc(int codepage, int flags, const char *string)
  24. {
  25. return dup_mb_to_wc_c(codepage, flags, string, strlen(string));
  26. }