On 03/08/13 03:37 PM, Alex Xu wrote:
> On 03/08/13 02:29 PM, Michał Górny wrote:
>> Dnia 2013-08-03, o godz. 17:54:42
>> Ulrich Mueller <u...@gentoo.org> napisał(a):
>>
>>>>>>>> On Sat, 3 Aug 2013, Michał Górny wrote:
>>>
>>>> 2. The eclass comes with a pure bash-3.2 CamelCase converter for
>>>> changing PNs like 'twisted-foo' into 'TwistedFoo'. The relevant code
>>>> can be moved to eutils as portable replacements for bash-4 ${foo^}
>>>> and friends.
>>>
>>>>            # obtain octal ASCII code for the first letter.
>>>>            local ord=$(printf '%o' "'${fl}")
>>>>
>>>>            # check if it's [a-z]. ASCII codes are locale-safe.
>>>>            if [[ ${ord} -ge 141 && ${ord} -le 172 ]]; then
>>>>                    # now substract 040 to make it upper-case.
>>>>                    # fun fact: in range 0141..0172, decimal '- 40' is fine.
>>>>                    local ord=$(( ${ord} - 40))
>>>>                    # and convert it back to the character.
>>>>                    fl=$(printf '\'${ord})
>>>>            fi
>>>
>>> This looks just horrible. You do decimal arithmetic on octal numbers?
>>
>> Yes. Bash wasn't really happy to do octal arithmetic for me. Yet
>> in this particular case, with proper assumptions, decimal arithmetic is
>> practically equivalent.
>>
> 
>               # obtain decimal ASCII code for the first letter.
>               local fl=$(printf '%d' "'${w}")
> 
>               # check if it's [a-z]. ASCII codes are locale-safe.
>               if [[ ${ord} -ge 97 && ${ord} -le 122 ]]; then
>                       local ord=$(( ${ord} - 32 ))
>                       # and convert it back to the character.
>                       fl=$(printf '\'${ord})
>               fi
> 
>               echo -n "${fl}${w:1}"
> 
> Probably var names should be adjusted, I'm not too familiar with bash
> locals.
> 
> printf '%d' "'twisted" outputs "116" as expected, similar to
> printf("%d", *"asdf qwerty") in C.
> 
> Tested in Bash 4.2.45.
> 
> Now time to sit back and wait for it to break in bash
> <obscure-version-here>.
> 

I am dumb. Please disregard the previous message.

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to