RE: [PATCH 6/10] Fix header breakage with _XOPEN_SOURCE.
From: Ramsay Jones <hidden>
Date: 2016-06-15 22:42:35
On Wed, 2006-08-02 at 8:46, Junio C Hamano wrote:
"Ramsay Jones" [off-list ref] writes:quoted
convert-objects.c sets _XOPEN_SOURCE and _XOPEN_SOURCE_EXTENDED before including <time.h>, in order to get the declaration of strptime(). This leads to breakage in cache.h, due to S_ISLNK and S_IFLNK no longer being defined by <sys/stat.h>. These definitions are protected by the __USE_BSD symbol, which is not set when _XOPEN_SOURCE is set. Moving the #defines and #include <time.h> below all other #includes does not fix the problem, however, since now _USE_XOPEN, which protects the declaration of strptime(), is now not defined (don't ask!).Wouldn't including "cache.h" and friends first and including <time.h> last solve the problem, then?
Not for me. It may be a glibc 2.1 specific problem, of course, but strptime() remains undeclared.
This kind of change tends to fix one system while potentially breaking another, and we would need to be careful. Will queue for post 1.4.2 and have people scream if it breaks somebody, I guess.
Yes, I had some concern about that myself. Unfortunately, you can't make it conditional on the glibc version macros; in order to get the macros, you have to include (one way or another) <features.h>, at which point it is already too late ... Ramsay