Date: Thu, 12 Apr 2012 21:31:28 -0700 From: Isaac Dunham <idunham@...abit.com> To: musl@...ts.openwall.com Subject: Re: [PATCH] string.h, _BSD_SOURCE, and *index() On Thu, 12 Apr 2012 23:30:13 -0400 Rich Felker <dalias@...ifal.cx> wrote: > On Thu, Apr 12, 2012 at 06:45:22PM -0700, Isaac Dunham wrote: > > I was working on _BSD_SOURCE for string.h. > > Warning: several of the functions are mislabeled as _GNU_SOURCE in > > the manpages. > > Everything in strings.h should be available if _GNU_SOURCE || > > BSD_SOURCE is defined and string.h is included. > > #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) > #include <strings.h> > #endif > > Actually I thought that was already there (minus the BSD) but it seems > I was mistaken. In any case, I think it's cleaner than duplicating all > the prototypes in 2 places. Definitely cleaner... but there are a few repeat definitions. (Some of it is now _POSIX_SOURCE). But that probably won't break things. And it could slow down compiles, etc. > > > (r)index was X/Open legacy, and has been dropped. The Open Group > > recommended using > > #define index(a,b) strchr((a),(b)) > > #define rindex(a,b) strrchr((a),(b)) > > Which will let us remove two more files if we do it (rindex.c & > > index.c) However, would removing those break the ABI? > > Yes. It would also break the API for programs which declare these > functions manually rather than using the header (that's more popular > than you think), and as your patch is written it's violating the > SUSv4 namespace (since these symbols were removed, you can't define > them). Huh? |+#if defined(_BSD_SOURCE) || defined(_GNU_SOURCE) |+int bcmp (const void *, const void *, size_t); |+void bcopy (const void *, void *, size_t); |+void bzero (void *, size_t); |+int strcasecmp (const char *, const char *); |+int strncasecmp (const char *, const char *, size_t); |+char *index (const char *, int); |+char *rindex (const char *, int); |+int ffs (int); |+#endif I didn't move them in the second patch, either. >The advice on using macros is advice for _applications_, not > for implementations. OK. That answers the question. I wasn't sure, so I did two patches.
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.