[Scummvm-devel] setlocale() doesn't work at Symbian

Torbjörn Andersson eriktorbjorn at telia.com
Thu Feb 19 13:58:38 CET 2015


There is a sscanf() implementation in 
backends/platform/tizen/sscanf.cpp. I don't know the story behind it, 
but it might be a good starting point.

However, it seems to be missing at the very least floating-point support 
and assignment-suppression (e.g. "%*u"), both of which are currently 
used by ZVision.

Torbjörn Andersson

On 2015-02-19 12:14, Filippos Karapetis wrote:
> Well, it looks like sscanf() on Symbian isn't handling floating-point math
> correctly (same as most floating point calculations in Symbian).
>
> This StackOverflow question seems to verify this similar behavior with
> atof() under Symbian:
> http://stackoverflow.com/questions/11895686/atof-is-not-taking-entire-value-in-symbian
>
> If that is indeed the case, the only way to make this work is to roll our
> own version of sscanf(), and handle floating-point math for Symbian in
> there.
>
> But that does sound like a major task...
>
> Regards
> Filippos
>
>
>
> On Wed, Feb 18, 2015 at 8:43 PM, Федор <fedor_qd at mail.ru> wrote:
>
>> Result is same.
>>
>>
>> Fedor Strizhnev
>> Федор Стрижнёв.
>>
>> Серада, 18 лютага 2015, 20:35 +02:00 ад Filippos Karapetis <
>> bluegr at gmail.com>:
>>
>>    You're getting wrong results for sscanf(), which is why ZVision isn't
>> working for you
>>
>> Try putting this line:
>> setlocale(LC_ALL, "C");
>> before your test code and try again
>>
>> On Wed, Feb 18, 2015 at 8:23 PM, Федор <fedor_qd at mail.ru
>> <https://e.mail.ru/compose/?mailto=mailto%3afedor_qd@mail.ru>> wrote:
>>
>> I have:
>> Test dot: 30.000000
>> Test comma: 30.000000
>>
>> I confused.
>>
>> Fedor Strizhnev
>> Федор Стрижнёв.
>>
>> Серада, 18 лютага 2015, 14:44 UTC ад Willem Jan Palenstijn <
>> wjp at usecode.org
>> <https://e.mail.ru/compose/?mailto=mailto%3awjp@usecode.org>>:
>>
>>    On Wed, Feb 18, 2015 at 02:42:08PM +0300, Fiodar Strizhniou wrote:
>>> Is this test code good?
>>>
>>>
>>> sscanf("30.981", "%f", &y)
>>> printf("Test dot: \n")
>>> print y;
>>> sscanf("30,981", "%f", &y)
>>> printf("Test comma: \n")
>>> print y;
>>
>>
>> I had a quick look at how ZVision uses sscanf, and something like that
>> sounds
>> good, yes.
>>
>> If you want something that actually compiles, try:
>>
>>          float y;
>>          sscanf("30.981", "%f", &y);
>>          printf("Test dot: %f\n", y);
>>          sscanf("30,981", "%f", &y);
>>          printf("Test comma: %f\n", y);
>>
>>
>> You should get as output:
>>
>> Test dot: 30.981001
>> Test comma: 30.000000
>>
>>
>> -Willem Jan
>>
>>
>>> исходное сбщ
>>> Тема: Re: [Scummvm-devel] setlocale() doesn't work at Symbian
>>> От: Федор <fedor_qd at mail.ru
>> <https://e.mail.ru/compose?To=fedor_qd@mail.ru>>
>>> Дата: 17.02.2015 17.44
>>>
>>> I don't know what I need to test. Can you give me peace of code?
>>>
>>>
>>> Fedor Strizhnev
>>> Федор Стрижнёв.
>>>
>>> Аўторак, 17 лютага 2015, 13:47 UTC ад Willem Jan Palenstijn <
>> wjp at usecode.org <https://e.mail.ru/compose?To=wjp@usecode.org>>:
>>>> On Tue, Feb 17, 2015 at 04:06:00PM +0300, Fiodar Strizhniou wrote:
>>>>> I create bugreport month ago about bad colours in most scenes in
>> Zvision engine games. I get point to wrong setlocale() settings in some
>> backends. I create and run test app. Nothing works(see screenshot). Also i
>> have read somewhere in Symbian Sdk docs what setlocale doesnt work at
>> Symbian.
>>>>
>>>>
>>>> You should really say things like that directly, instead of having us
>> guess at
>>>> what you're trying to do.
>>>>
>>>>
>>>> The main question is: does sscanf work with "%f" for you? And if you
>> set locale
>>>> to "C" explicitly?
>>>>
>>>>
>>>> -Willem Jan
>>>>
>>>>
>>>>
>>>>> исходное сбщ
>>>>> Тема: Re: [Scummvm-devel] setlocale() doesn't work at Symbian
>>>>> От: Filippos Karapetis < bluegr at gmail.com
>> <https://e.mail.ru/compose?To=bluegr@gmail.com> >
>>>>> Дата: 17.02.2015 14.52
>>>>>
>>>>> You don't use a correct value for the locale
>>>>>
>>>>> You would want something like:
>>>>> setlocale(LC_ALL,"en_GB.ISO-8859-1");
>>>>>
>>>>> Having said that, check backends/platform/sdl/sdl.cpp, where it does
>> this:
>>>>> const Common::String locale = setlocale(LC_ALL, "");
>>>>>
>>>>> // Restore default C locale to prevent issues with
>>>>> // portability of sscanf(), atof(), etc.
>>>>> // See bug #3615148
>>>>> setlocale(LC_ALL, "C");
>>>>>
>>>>> Be careful when changing the locale, you need to reset it afterwards
>> (as
>>>>> the comment mentions).
>>>>>
>>>>> This stackoverflow question may be helpful:
>>>>>
>> http://stackoverflow.com/questions/3191664/list-of-all-locales-and-their-short-codes
>>>>>
>>>>> On Tue, Feb 17, 2015 at 1:08 PM, Fiodar Strizhniou < fedor_qd at mail.ru
>> <https://e.mail.ru/compose?To=fedor_qd@mail.ru> > wrote:
>>>>>
>>>>>> I write simple application and run on phone:
>>>>>> printf("Locale is: %s\n", setlocale(LC_ALL, "en_GB"));
>>>>>> Locale is NULL
>>>>>> Which parts (decimal separators, etc) should be set? Which values
>> from
>>>>>> setlocale() used?
>>>>>> Always yours, Strizhniou Fedor.
>>>>>> С уважением, Стрижнёв Фёдор.
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> "Experience is the name every one gives to their mistakes" - Oscar
>> Wilde
>>>>
>>>
>>>
>>>
>> ------------------------------------------------------------------------------
>>> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
>>> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
>>> with Interactivity, Sharing, Native Excel Exports, App Integration & more
>>> Get technology previously reserved for billion-dollar corporations, FREE
>>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
>>> _______________________________________________
>>> Scummvm-devel mailing list
>>> Scummvm-devel at lists.sourceforge.net
>> <https://e.mail.ru/compose?To=Scummvm%2ddevel@lists.sourceforge.net>
>>> https://lists.sourceforge.net/lists/listinfo/scummvm-devel
>>
>>
>> ------------------------------------------------------------------------------
>> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
>> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
>> with Interactivity, Sharing, Native Excel Exports, App Integration & more
>> Get technology previously reserved for billion-dollar corporations, FREE
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Scummvm-devel mailing list
>> Scummvm-devel at lists.sourceforge.net
>> <https://e.mail.ru/compose?To=Scummvm%2ddevel@lists.sourceforge.net>
>> https://lists.sourceforge.net/lists/listinfo/scummvm-devel
>>
>>
>>
>>
>>
>> --
>> "Experience is the name every one gives to their mistakes" - Oscar Wilde
>>
>>
>>
>
>
>
>
> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
> http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
>
>
>
> _______________________________________________
> Scummvm-devel mailing list
> Scummvm-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scummvm-devel
>





More information about the Scummvm-devel mailing list