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. Actually, that's slightly an oversimplification-there are two functions (*_l) that should be _GNU_SOURCE only. (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? There are two patches attached: the first (string.diff) will define everything from strings.h if defined _BSD_SOURCE || _GNU_SOURCE The second patch (rindex.diff) applies the second change, but does not remove (r)index.c, to prevent ABI breakage. Isaac Dunham