You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Travis Vitek (JIRA)" <ji...@apache.org> on 2007/09/06 21:28:31 UTC

[jira] Updated: (STDCXX-535) std::time_put can generate output that is not parseable by std::time_get facet

     [ https://issues.apache.org/jira/browse/STDCXX-535?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Travis Vitek updated STDCXX-535:
--------------------------------

    Description: 
std::time_get<>::get_date() is required to be able to parse the output produced by std::time_put<>::put(..., 'x'). For some locales, the '%x' format specifier expands out to '%e.%m.%Y'. When a date is formatted using this, there will be a leading space, and that leading space causes the time_get<>::get_date() operation to fail.

The root of the problem is that the POSIX strftime() function [which we emulate in time_get] requires that the '%e' specifier generate whitespace for single digit monthdays, and the POSIX strptime() function says that the number may be padded on the left with 0s. It does not appear to specify that whitespace is allowed. The strptime() implementation on some platforms [sun, linux, compaq, aix] allow this whitespace, while others [hp, freebsd] do not.

Discussion here.
[http://mail-archives.apache.org/mod_mbox/incubator-stdcxx-dev/200708.mbox/%3c46CC8D6C.9000007@roguewave.com%3e]

  was:
std::num_get<>::get_date() is required to be able to parse the output produced by std::num_put<>::put(..., 'x'). For some locales, the '%x' format specifier expands out to '%e.%m.%Y'. When a date is formatted using this, there will be a leading space, and that leading space causes the num_get<>::get_date() operation to fail.

The root of the problem is that the POSIX strftime() function requires that the '%e' specifier generate whitespace for single digit monthdays, and the POSIX strptime() function says that the number may be padded on the left with 0s. It does not appear to specify that whitespace is allowed. The strptime() implementation on some platforms [sun, linux, compaq, aix] allow this whitespace, while others [hp, freebsd] do not.

Discussion here.
[http://mail-archives.apache.org/mod_mbox/incubator-stdcxx-dev/200708.mbox/%3c46CC8D6C.9000007@roguewave.com%3e]

        Summary: std::time_put can generate output that is not parseable by std::time_get facet  (was: std::num_put can generate output that is not parseable by std::num_get facet)

Corrected locale facet name to time_get.

> std::time_put can generate output that is not parseable by std::time_get facet
> ------------------------------------------------------------------------------
>
>                 Key: STDCXX-535
>                 URL: https://issues.apache.org/jira/browse/STDCXX-535
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: 22. Localization
>    Affects Versions: 4.1.2, 4.1.3, 4.1.4
>            Reporter: Travis Vitek
>
> std::time_get<>::get_date() is required to be able to parse the output produced by std::time_put<>::put(..., 'x'). For some locales, the '%x' format specifier expands out to '%e.%m.%Y'. When a date is formatted using this, there will be a leading space, and that leading space causes the time_get<>::get_date() operation to fail.
> The root of the problem is that the POSIX strftime() function [which we emulate in time_get] requires that the '%e' specifier generate whitespace for single digit monthdays, and the POSIX strptime() function says that the number may be padded on the left with 0s. It does not appear to specify that whitespace is allowed. The strptime() implementation on some platforms [sun, linux, compaq, aix] allow this whitespace, while others [hp, freebsd] do not.
> Discussion here.
> [http://mail-archives.apache.org/mod_mbox/incubator-stdcxx-dev/200708.mbox/%3c46CC8D6C.9000007@roguewave.com%3e]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.