Hi,

Compiling memcached(svn trunk ver) failed with these errors.

$ make
make  all-recursive
Making all in doc
make[2]: Nothing to be done for `all'.
source='memcached.c' object='memcached.o' libtool=no \
depfile='.deps/memcached.Po' tmpdepfile='.deps/memcached.TPo' \
depmode=gcc3 /bin/sh ./depcomp \
gcc -DHAVE_CONFIG_H -I. -I. -I.   -I/opt/local/include   -g -O2 -c
`test -f 'memcached.c' || echo './'`memcached.c
memcached.c: In function `add_msghdr':
memcached.c:224: warning: assignment from incompatible pointer type
memcached.c: In function `add_iov':
memcached.c:584: error: `IOV_MAX' undeclared (first use in this function)
memcached.c:584: error: (Each undeclared identifier is reported only once
memcached.c:584: error: for each function it appears in.)
make[2]: *** [memcached.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

This is because OS X 10.3, unlike 10.4, doesn't have IOV_MAX in limits.h.
Below is my patch.

Index: memcached.c
===================================================================
--- memcached.c (revision 629)
+++ memcached.c (working copy)
@@ -52,9 +52,9 @@
 #endif
 #endif

-/* FreeBSD 4.x doesn't have IOV_MAX exposed. */
+/* FreeBSD 4.x and old OSX don't have IOV_MAX exposed. */
 #ifndef IOV_MAX
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__APPLE__)
 # define IOV_MAX 1024
 #endif
 #endif

__APPLE__is the flag for darwin.
http://www.google.com/codesearch?hl=en&q=+lang:c+darwin-c.c+__APPLE__+show:jXyBUL4_D4k:I24eDuyXrWQ:BPY6ixvGT5I&sa=N&cd=1&ct=rc&cs_p=http://gcc.fyxm.net/prerelease-4.1.2-20070128/gcc-core-4.1.2-20070128.tar.bz2&cs_f=gcc-4.1.2-20070128/gcc/config/darwin-c.c#first

I don't know whether this is right fix or not
so could someone please review this patch and accept this or write better patch?

Thank you in advance.

Reply via email to