hi,

After a short talk on IRC, we agreed to go with the solution 1.

David, Stas, any objection for 5.4? As it adds a new feature it is
actually a bug fix too.

Cheers,

On Mon, Nov 21, 2011 at 11:46 AM, Pierre Joye <pierre....@gmail.com> wrote:
> Hi Gustavo!
>
> Thanks for the quick action :)
>
> I prefer however the 1st solution so that the code using the function can
> use transparently the returned value.
>
> At some point we may add classes as well, for those interested in more
> details.
>
> Cheers,
>
> On Nov 21, 2011 4:53 AM, "Gustavo Lopes" <glo...@nebm.ist.utl.pt> wrote:
>>
>> On Fri, 18 Nov 2011 13:12:01 -0000, Pierre Joye <pierre....@gmail.com>
>> wrote:
>>
>>>
>>>> Possibly the best course of action would be to follow the ICU API and
>>>> create a new class in the intl extension with labelToASCII
>>>> (uidna_labelToASCII_UTF8), labelToUnicode (uidna_labelToUnicodeUTF8),
>>>> nameToASCII (uidna_nameToASCII_UTF8) and nameToUnicode
>>>> (uidna_nameToUnicodeUTF8).
>>>
>>> If it is actually correct to use the new API, then I would rather do
>>> it now and by updating the current implementation in INTL. There is no
>>> need to add new functions or classes for that, we should support 2008
>>> per default using the current IDN functions. Another possible bug is
>>> the RTL support.
>>>
>>>> However, I don't know receptive people are to add such a change to PHP
>>>> 5.4 at this point. Another option would be to do it in trunk exclusively 
>>>> and
>>>> sync PECL intl with it.
>>>
>>> It is more a bug fix, which can be related to security as well
>>> (spoofing attacks). If it is actually correct to use the new API and
>>> fully 2003-2008 compliant, then I will use the new API directly.
>>
>> I've patched intl to support the new ICU API, adding another parameter to
>> the functions so they assume either the current behavior or call the new
>> API.
>>
>> Example:
>>
>> var_dump(idn_to_ascii("www.fußball.com",
>>        IDNA_NONTRANSITIONAL_TO_ASCII, IDNA_VARIANT_UTS46));
>>
>> array(3) {
>>  ["result"]=>
>>  string(22) "www.xn--fuball-cta.com"
>>  ["isTransitionalDifferent"]=>
>>  bool(true)
>>  ["errors"]=>
>>  int(0)
>> }
>>
>> However there's a little problem. The new interface reports errors via the
>> usual ICU mechanism AND it also uses a new structure to pass IDNA specific
>> errors. Also, it reports whether the use of the transitional mechanism
>> affects the result. So I see only two solutions so that that extra
>> information is passed to the PHP user.
>>
>> * Add a second new parameter, by reference, wherein this extra information
>> is written.
>> * Instead of returning a string, return an array with all the new
>> information.
>>
>> In the patched attached I've gone for the second one, but I'm now more
>> inclined to the first. So if no one objects, I'm going to change that
>> detail, add a few tests and commit to 5.3, 5.4 and trunk somewhere this next
>> week.
>>
>> --
>> Gustavo Lopes
>> --
>> PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php
>



-- 
Pierre

@pierrejoye | http://blog.thepimp.net | http://www.libgd.org

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to