On 11/2/07, David Symonds <dsymonds@xxxxxxxxx> wrote: > It would probably be most appropriate for the autoconf script. Now > that I look at configure.ac, there's already a test for iconv in > there; is it not used? The crux of this problem is that the prototype for iconv in /usr/include/iconv.h is different between OS X 10.4 and OS X 10.5. So the "right thing" is definitely to determine what is in the function prototype, and then act accordingly. >From OS X 10.4.10: #define _LIBICONV_VERSION 0x0109 /* version number: (major<<8) + minor */ ... extern size_t iconv (iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); >From OS X 10.5: #define _LIBICONV_VERSION 0x010B /* version number: (major<<8) + minor */ ... size_t iconv (iconv_t /*cd*/, char ** __restrict /*inbuf*/, size_t * __restrict /*inbytesleft*/, char ** __restrict /*outbuf*/, size_t * __restrict /*outbytesleft*/); So what happened in git is that someone put in OLD_ICONV to dynamically adjust the const-ness of parameter 2 to the iconv function, and the way they chose to do that is to identify the OS (more accurately, the kernel), and then I went and furthered that by identifying the version. Now that I look at it further, it seems that yanking OLD_ICONV altogether is a better approach, and to just check _LIBICONV_VERSION to make sure it's "new enough". Now, I'm not sure what that comparison would be, but we know that "later than 0x0109" is a good start. Based on the version difference between OS X 10.4 and 10.5 I note that there is only 0x010A intervening. This strategy presumes that this const parameter was const all the way up to a particular point, and then stopped being const, which is probably a reasonable assumption. Blake -- Blake Ramsdell | http://www.blakeramsdell.com - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html