Patch to expand tz checking scope in TimeZone_md.c
Masayoshi Okutsu
masayoshi.okutsu at oracle.com
Wed Nov 2 14:27:34 UTC 2011
Hi Jonathan,
IIRC, the difference came from some behavioral difference between the
Linux and Solaris libc date-time functions and/or the date command, and
TimeZone_md.c tries to follow the difference. But the code was written
looooong ago. The difference may no longer exist.
Thanks,
Masayoshi
On 11/2/2011 8:39 PM, Jonathan Lu wrote:
> On 11/02/2011 07:00 PM, David Holmes wrote:
>> On 2/11/2011 7:01 PM, Jonathan Lu wrote:
>>> On 11/02/2011 04:56 PM, Jonathan Lu wrote:
>>>> Hi core-libs-dev,
>>>>
>>>> In jdk/src/solaris/native/java/util/TimeZone_md.c, starting from line
>>>> 626, I found that the scope of "#ifdef __solaris__" might be too
>>>> narrow, since it also works for some kind of OS which I'm currently
>>>> working on, such as AIX.
>>>> So I suggest to just remove the '#ifdef __solaris__' and leave the
>>>> "#else" to accommodate more conditions, see attachment 'patch.diff'. I
>>>> think this may enhance the cross-platform ability, any ideas about
>>>> this modification?
>>>>
>>>> Regards
>>>> - Jonathan Lu
>>> I'm not sure why the attachment got filtered, here paste it to the mail
>>> content directly.
>>>
>>> diff -r 4788745572ef src/solaris/native/java/util/TimeZone_md.c
>>> --- a/src/solaris/native/java/util/TimeZone_md.c Mon Oct 17 19:06:53
>>> 2011 -0700
>>> +++ b/src/solaris/native/java/util/TimeZone_md.c Thu Oct 20 13:43:47
>>> 2011 +0800
>>> @@ -626,10 +626,8 @@
>>> #ifdef __linux__
>>> if (tz == NULL) {
>>> #else
>>> -#ifdef __solaris__
>>> if (tz == NULL || *tz == '\0') {
>>> #endif
>>> -#endif
>>> tz = getPlatformTimeZoneID();
>>> freetz = tz;
>>> }
>>
>> I'm unclear why any of that code needs to be platform specific - is
>> an empty TZ string somehow valid on linux? I would have thought the
>> following would be platform neutral:
>>
>> if (tz == NULL || *tz == '\0') {
>> tz = getPlatformTimeZoneID();
>> freetz = tz;
>> }
>>
> Hi David,
>
> getenv("TZ") returns NULL when TZ environment variable is not set at
> all and returns '\0' when TZ was exported as empty string. After more
> checking for both cases, I agree with you, nothing useful can be
> retrieved from that environment variable.
> So I changed the patch to this,
>
> diff -r 7ab0d613cd1a src/solaris/native/java/util/TimeZone_md.c
> --- a/src/solaris/native/java/util/TimeZone_md.c Thu Oct 20
> 10:32:47 2011 -0700
> +++ b/src/solaris/native/java/util/TimeZone_md.c Wed Nov 02
> 19:34:51 2011 +0800
> @@ -623,13 +623,7 @@
>
> tz = getenv("TZ");
>
> -#ifdef __linux__
> - if (tz == NULL) {
> -#else
> -#ifdef __solaris__
> if (tz == NULL || *tz == '\0') {
> -#endif
> -#endif
> tz = getPlatformTimeZoneID();
> freetz = tz;
> }
>
>> David
>> -----
>>
>>> Regards
>>> - Jonathan Lu
> Regards
>
> - Jonathan
>
More information about the core-libs-dev
mailing list