|
Message-ID: <20130607011348.GN29800@brightrain.aerifal.cx> Date: Thu, 6 Jun 2013 21:13:48 -0400 From: Rich Felker <dalias@...ifal.cx> To: musl@...ts.openwall.com Subject: Re: apr and time.h On Thu, Jun 06, 2013 at 10:38:37PM +0200, Szabolcs Nagy wrote: > * Jens <jensl@...s.mine.nu> [2013-06-06 19:42:39 +0200]: > > apr wont build (for me) with the following part of time.h (musl-0.9.10): > > > > #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) > > #define tm_gmtoff __tm_gmtoff > > #define tm_zone __tm_zone > > #endif > > > > apr implements a struct with a member named tm_gmtoff. > > > > you gotta love "portability runtime" libraries.. > > tm_ is in the reserved namespace of posix, > but time.h is specified by iso c as well > which does not have such restriction > so in this case they are not strictly wrong > > the correct behaviour of musl would be > to only expose iso c interfaces by default > but then all the codes in the world break.. > (including apr most likely) > > an ugly workaround that does less namespace > pollution (no tm_* macro): > > #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) > #define __tm_gmtoff tm_gmtoff > #define __tm_zone tm_zone > #define _FIX(x) x > #else > #define _FIX(x) __##x > #endif > > struct tm { > /*...*/ > long _FIX(tm_gmtoff); > const char *_FIX(tm_zone); > }; > > either this or fix apr so it does not collide > with the posix namespace.. This is ugly. I would just put the #if right inside the struct definition. Any objections to this change? If I'm not mistaken it's the way glibc and other libraries do it. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.