have const msg ptr to iconv
This commit is contained in:
parent
d1df9f8d60
commit
82de6ace6d
2 changed files with 23 additions and 6 deletions
|
@ -19,7 +19,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
//$Id: Font.cc,v 1.15 2004/08/31 20:27:08 fluxgen Exp $
|
//$Id: Font.cc,v 1.16 2004/08/31 21:24:05 fluxgen Exp $
|
||||||
|
|
||||||
|
|
||||||
#include "StringUtil.hh"
|
#include "StringUtil.hh"
|
||||||
|
@ -119,8 +119,15 @@ char* recode(iconv_t cd,
|
||||||
char *new_msg_ptr = new_msg;
|
char *new_msg_ptr = new_msg;
|
||||||
char *msg_ptr = strdup(msg);
|
char *msg_ptr = strdup(msg);
|
||||||
char *orig_msg_ptr = msg_ptr; // msg_ptr modified in iconv call
|
char *orig_msg_ptr = msg_ptr; // msg_ptr modified in iconv call
|
||||||
|
size_t result = (size_t)(-1);
|
||||||
|
|
||||||
if (iconv(cd, &msg_ptr, &inbytesleft, &new_msg, &outbytesleft) == -1) {
|
#ifdef HAVE_CONST_ICONV
|
||||||
|
result = iconv(cd, const_cast<char **>(&msg_ptr), &inbytesleft, &new_msg, &outbytesleft);
|
||||||
|
#else
|
||||||
|
result = iconv(cd, &msg_ptr, &inbytesleft, &new_msg, &outbytesleft);
|
||||||
|
#endif // HAVE_CONST_ICONV
|
||||||
|
|
||||||
|
if (result == (size_t)(-1)) {
|
||||||
// iconv can fail for three reasons
|
// iconv can fail for three reasons
|
||||||
// 1) Invalid multibyte sequence is encountered in the input
|
// 1) Invalid multibyte sequence is encountered in the input
|
||||||
// 2) An incomplete multibyte sequence
|
// 2) An incomplete multibyte sequence
|
||||||
|
@ -143,7 +150,7 @@ char* recode(iconv_t cd,
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
||||||
char *recode(iconv_t cd,
|
char *recode(int cd,
|
||||||
const char *msg, size_t size) {
|
const char *msg, size_t size) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -232,8 +239,13 @@ Font::Font(const char *name, bool antialias):
|
||||||
m_antialias(false), m_rotated(false),
|
m_antialias(false), m_rotated(false),
|
||||||
m_shadow(false), m_shadow_color("#000000"),
|
m_shadow(false), m_shadow_color("#000000"),
|
||||||
m_shadow_offx(1), m_shadow_offy(1),
|
m_shadow_offx(1), m_shadow_offy(1),
|
||||||
m_halo(false), m_halo_color("#ffffff"),
|
m_halo(false), m_halo_color("#ffffff") {
|
||||||
m_iconv((iconv_t)-1) {
|
|
||||||
|
#ifdef HAVE_ICONV
|
||||||
|
m_iconv = (iconv_t)(-1);
|
||||||
|
#else
|
||||||
|
m_iconv = -1;
|
||||||
|
#endif // HAVE_ICONV
|
||||||
|
|
||||||
// MB_CUR_MAX returns the size of a char in the current locale
|
// MB_CUR_MAX returns the size of a char in the current locale
|
||||||
if (MB_CUR_MAX > 1) // more than one byte, then we're multibyte
|
if (MB_CUR_MAX > 1) // more than one byte, then we're multibyte
|
||||||
|
@ -252,6 +264,8 @@ Font::Font(const char *name, bool antialias):
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
cerr<<"FbTk::Font: check UTF-8 convert for codeset = "<<locale_codeset<<endl;
|
cerr<<"FbTk::Font: check UTF-8 convert for codeset = "<<locale_codeset<<endl;
|
||||||
#endif // DEBUG
|
#endif // DEBUG
|
||||||
|
|
||||||
|
#ifdef HAVE_ICONV
|
||||||
m_iconv = iconv_open("UTF-8", locale_codeset);
|
m_iconv = iconv_open("UTF-8", locale_codeset);
|
||||||
if(m_iconv == (iconv_t)(-1)) {
|
if(m_iconv == (iconv_t)(-1)) {
|
||||||
cerr<<"FbTk::Font: code error: from "<<locale_codeset<<" to: UTF-8"<<endl;
|
cerr<<"FbTk::Font: code error: from "<<locale_codeset<<" to: UTF-8"<<endl;
|
||||||
|
@ -266,6 +280,7 @@ Font::Font(const char *name, bool antialias):
|
||||||
m_utf8mode = true;
|
m_utf8mode = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif // HAVE_ICONV
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
cerr<<"FbTk::Font m_iconv = "<<(int)m_iconv<<endl;
|
cerr<<"FbTk::Font m_iconv = "<<(int)m_iconv<<endl;
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
//$Id: Font.hh,v 1.11 2004/08/31 20:27:08 fluxgen Exp $
|
//$Id: Font.hh,v 1.12 2004/08/31 21:24:05 fluxgen Exp $
|
||||||
|
|
||||||
#ifndef FBTK_FONT_HH
|
#ifndef FBTK_FONT_HH
|
||||||
#define FBTK_FONT_HH
|
#define FBTK_FONT_HH
|
||||||
|
@ -119,6 +119,8 @@ private:
|
||||||
std::string m_halo_color; ///< halo color
|
std::string m_halo_color; ///< halo color
|
||||||
#ifdef HAVE_ICONV
|
#ifdef HAVE_ICONV
|
||||||
iconv_t m_iconv;
|
iconv_t m_iconv;
|
||||||
|
#else
|
||||||
|
int m_iconv;
|
||||||
#endif // HAVE_ICONV
|
#endif // HAVE_ICONV
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue