Date: Thu, 5 Apr 2012 18:03:07 -0700 From: Isaac Dunham <idunham@...abit.com> To: musl@...ts.openwall.com Subject: Re: Namespace issues, missing functions, _BSD_SOURCE for unistd.h > There is no "ANSI" namespace in unistd.h because it's not a standard C > header but a POSIX header. It's definitely correct for POSIX 2008 base > as-is without any patching. Should have checked that. I guess it will be a rewrite then. Which profiles are you aiming to support? Latest versions only for POSIX, ISO, and X/Open? Or only versions in the past decade? I don't see any signs of version checks, so I assume you want POSIX2008 and XOPEN2008 (_XOPEN_SOURCE >= 700) only, and no support for SUSv3. This will make the patch a lot smaller and cleaner. > > BSD || XOPEN means the macro test should be > > #if defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE) > > I see glibc turns on both of these with _GNU_SOURCE. > Yes, I think you overlooked some of the logic of how glibc's > features.h works... Tried to decode it, but it's pretty easy to lose track (especially in the ifdef nest that handles XOPEN_SOURCE). > > Misplaced (should be BSD || XOPEN): > > (Properly, these require XOPEN >= 500) > > usleep, ualarm, fchown, fchdir, lchown,vhangup, > > apparently fsync? > All incorrect. > usleep and ualarm were removed by SUSv4/POSIX 2008 and thus do not > belong in any profile except ones with nonstandard extensions. > fchown, fchdir, and lchown are all POSIX 2008 base. > vhangup was perhaps standard at one time but removed OK. _GNU_SOURCE || _BSD_SOURCE It's _XOPEN_SOURCE == 500 || 600, which I take it will not be supported. <snip> > AFAIK most of these do not exist in musl at the moment. Guessed that. It was meant as a comment on the status. > > BSD||GNU: .. > > +#if defined(_BSD_SOURCE) && !defined(L_SET) > > +#define L_SET > > +#define L_INCR > > +#define L_XTND > > +#endif Forgot to add the SEEK_SET, etc. here. Should be #define L_SET SEEK_SET .. hence the placement. > > +#if !( (_POSIX_SOURCE - 0) < 200112L ) > > +int seteuid(uid_t); > > +int setegid(gid_t); > > +#endif > > I have no intention of trying to make a profile that conforms to the > 1990 version of POSIX. Forgot they went from straight from 1993 to 2001; I'll take that test out. > > > +#if defined(_BSD_SOURCE) || ... > > +pid_t vfork(void); > > +int vhangup(void); > > +int usleep(unsigned); > > +unsigned ualarm(unsigned, unsigned); > > And these do not exist in SUSv4. (The first two are not in SUSv3 > either.) Will fix. Thanks for the comments. Isaac Dunham
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.