Sat, 18 Jul 2009 14:08:34 +0200
Adjust buildconf until Nokia corrects flawed GNU iconv integration.
The problem corrected by this adjustment involves font glyphs appearing
as normal font sized empty squares. All text is illegible.
michael@110 | 1 | Index: include/sswf/libsswf.h |
michael@110 | 2 | --- include/sswf/libsswf.h.orig 2008-06-23 07:51:47 +0200 |
michael@110 | 3 | +++ include/sswf/libsswf.h 2008-06-23 18:10:33 +0200 |
michael@110 | 4 | @@ -71,12 +71,14 @@ |
michael@110 | 5 | /* wint_t is an "equivalent" to wchar_t without being limited to 16 bits as on MS-Windows */ |
michael@110 | 6 | #ifndef _MSVC |
michael@110 | 7 | #ifndef __APPLE_CC__ |
michael@110 | 8 | +#ifndef __FreeBSD__ |
michael@110 | 9 | #ifndef _WINT_T |
michael@110 | 10 | #define _WINT_T |
michael@110 | 11 | typedef unsigned int wint_t; |
michael@110 | 12 | #endif |
michael@110 | 13 | #endif |
michael@110 | 14 | #endif |
michael@110 | 15 | +#endif |
michael@110 | 16 | |
michael@110 | 17 | #ifndef M_PI |
michael@110 | 18 | #define M_PI 3.14159265358979323846 |
michael@110 | 19 | @@ -88,7 +90,7 @@ |
michael@110 | 20 | #define rint(x) ((double) (long) floor(x + 0.5)) |
michael@110 | 21 | #endif |
michael@110 | 22 | |
michael@110 | 23 | -#ifdef _LIBICONV_H |
michael@110 | 24 | +#if defined(_LIBICONV_H) && !defined(__FreeBSD__) |
michael@110 | 25 | #define ICONV_INPUT_CAST |
michael@110 | 26 | #else |
michael@110 | 27 | /* older versions of iconv() were broken in regard to the |
michael@110 | 28 | Index: include/sswf/libsswf_c.h |
michael@110 | 29 | --- include/sswf/libsswf_c.h.orig 2008-06-23 07:51:47 +0200 |
michael@110 | 30 | +++ include/sswf/libsswf_c.h 2008-06-23 18:10:33 +0200 |
michael@110 | 31 | @@ -38,7 +38,7 @@ |
michael@110 | 32 | |
michael@110 | 33 | #include <stdlib.h> |
michael@110 | 34 | #include <stdarg.h> |
michael@110 | 35 | -#if IRIX |
michael@110 | 36 | +#if IRIX || defined(__FreeBSD__) |
michael@110 | 37 | #include <inttypes.h> |
michael@110 | 38 | #endif |
michael@110 | 39 | #include <sswf/libsswf-config.h> |
michael@111 | 40 | Index: src/lib/libsswf_tag_header.c++ |
michael@111 | 41 | --- src/lib/libsswf_tag_header.c++.orig 2009-02-25 11:44:25.018888440 +0100 |
michael@111 | 42 | +++ src/lib/libsswf_tag_header.c++ 2009-02-25 12:03:04.998881702 +0100 |
michael@111 | 43 | @@ -745,7 +745,7 @@ |
michael@111 | 44 | } |
michael@111 | 45 | #endif |
michael@111 | 46 | |
michael@111 | 47 | - r = (int) iconv(f_iconvertor, ICONV_INPUT_CAST &string, &in, &p, &out); |
michael@111 | 48 | + r = (int) iconv(f_iconvertor, ICONV_INPUT_CAST const_cast<char **>(&string), &in, &p, &out); |
michael@111 | 49 | if(r < 0) { |
michael@111 | 50 | if(s != buf) { |
michael@111 | 51 | MemFree(s); |
michael@111 | 52 | Index: src/lib/sswf_lexical.c++ |
michael@111 | 53 | --- src/sswf/sswf_lexical.c++.orig 2008-06-23 07:51:47.000000000 +0200 |
michael@111 | 54 | +++ src/sswf/sswf_lexical.c++ 2009-02-25 12:06:36.214881561 +0100 |
michael@111 | 55 | @@ -2026,7 +2026,7 @@ |
michael@111 | 56 | out = sizeof(outchar); |
michael@111 | 57 | output = (char *) &outchar; |
michael@111 | 58 | b = (int) f_mb_count; |
michael@111 | 59 | - a = (int) iconv(f_iconvertor, ICONV_INPUT_CAST &input, &f_mb_count, &output, &out); |
michael@111 | 60 | + a = (int) iconv(f_iconvertor, ICONV_INPUT_CAST const_cast<char **>(&input), &f_mb_count, &output, &out); |
michael@111 | 61 | // the output buffer will usually be full before the |
michael@111 | 62 | // input is fully emptied! |
michael@111 | 63 | if(a < 0 && errno == E2BIG && out == 0 && b != (int) f_mb_count) { |