X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/34d37b3e2d05e305469a58166ff21c867c6f610b..9db4c365d579ae79d0d14fca218d61573d2f7379:/lib/charset.c diff --git a/lib/charset.c b/lib/charset.c index 0e29269..b8af6e6 100644 --- a/lib/charset.c +++ b/lib/charset.c @@ -1,6 +1,6 @@ /* * This file is part of DisOrder. - * Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell + * Copyright (C) 2004, 2005, 2007, 2008, 2013 Richard Kettlewell * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,9 +19,13 @@ #include "common.h" -#include +#if HAVE_ICONV_H +# include +#endif #include -#include +#if HAVE_LANGINFO_H +# include +#endif #include "mem.h" #include "log.h" @@ -30,6 +34,17 @@ #include "vector.h" #include "unicode.h" +#if _WIN32 +// TODO WIN32 we assume UTF-8 here, which is *definitely wrong* +char *mb2utf8(const char *mb) { + return xstrdup(mb); +} + +char *utf82mb(const char *utf8) { + return xstrdup(utf8); +} +#else + /** @brief Low-level converstion routine * @param from Source encoding * @param to Destination encoding @@ -45,7 +60,7 @@ static void *convert(const char *from, const char *to, size_t bufsize = 0, sl, dl; if((i = iconv_open(to, from)) == (iconv_t)-1) - fatal(errno, "error calling iconv_open"); + disorder_fatal(errno, "error calling iconv_open"); do { bufsize = bufsize ? 2 * bufsize : 32; buf = xrealloc_noptr(buf, bufsize); @@ -59,7 +74,7 @@ static void *convert(const char *from, const char *to, } while(len == (size_t)-1 && errno == E2BIG); iconv_close(i); if(len == (size_t)-1) { - error(errno, "error converting from %s to %s", from, to); + disorder_error(errno, "error converting from %s to %s", from, to); return 0; } return buf; @@ -113,6 +128,8 @@ char *any2any(const char *from, else return xstrdup(any); } +#endif + /** @brief Truncate a string for display purposes * @param s Pointer to UTF-8 string * @param max Maximum number of columns