Bug 154804 - strptime '%z' format doesn't work.
Summary: strptime '%z' format doesn't work.
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: glibc
Version: 3
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact: Brian Brock
URL:
Whiteboard:
Keywords:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2005-04-14 10:53 UTC by David Woodhouse
Modified: 2007-11-30 22:11 UTC (History)
2 users (show)

(edit)
Clone Of:
(edit)
Last Closed: 2005-04-28 12:34:56 UTC


Attachments (Terms of Use)

Description David Woodhouse 2005-04-14 10:53:48 UTC
The '%z' format character isn't functional. Try the following:

#define _XOPEN_SOURCE
#define _BSD_SOURCE
#include <time.h>
#include <stdio.h>

int main(void)
{
	struct tm tm;

	strptime("1113472456 +1000", "%s %z", &tm);

	if (tm.tm_gmtoff == 36000) {
		printf("OK");
		return 0;
	} else {
		printf("Error: tm_gmtoff is %ld\n", tm.tm_gmtoff);
		return 1;
	}
}

The man page states that "In most cases the corresponding fields are parsed, but
no field in tm is changed.". I assume that in the case of at least %F and %z,
the field in tm _should_ be changed.

Comment 1 Jakub Jelinek 2005-04-15 18:52:11 UTC
%z has never been implemented, so I'd say this is mainly a documentation
bug that documents a GNU extension that never existed.
You can see that strptime returns NULL, i.e. an error.
Unlike %z, %Z does not cause a failure, but is simply ignored.
%z perhaps could be implemented, but %Z would be much harder.

Comment 2 Ulrich Drepper 2005-04-27 04:33:01 UTC
I fixed this in upstream glibc.

Comment 3 Jakub Jelinek 2005-04-28 12:34:56 UTC
%z has been implemented in CVS glibc, should appear in glibc-2.3.5-3 and above.


Note You need to log in before you can comment on or make changes to this bug.