summaryrefslogtreecommitdiff
path: root/source4/lib/replace/inet_ntoa.m4
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2008-03-18 12:16:47 +0100
committerMichael Adam <obnox@samba.org>2008-03-18 16:30:15 +0100
commit87b48a812683794935db950446e9fb1db8e3da48 (patch)
tree8378c52e0980ec6fa1787f58811d68304e262adf /source4/lib/replace/inet_ntoa.m4
parent58dfb0ff3cb9a75e8caad89819f586b64df05f8a (diff)
downloadsamba-87b48a812683794935db950446e9fb1db8e3da48.tar.gz
samba-87b48a812683794935db950446e9fb1db8e3da48.tar.bz2
samba-87b48a812683794935db950446e9fb1db8e3da48.zip
libreplace: replace inet_ntoa() when it is missing
...not only replace it when it is broken. This moves the defintion of rep_inet_ntoa from replace.c to inet_ntoa.c and adds configure checks for existence of inet_ntoa(). Checks are moved to an include file of its own. NOTE: The original rep_inet_ntoa in replace.c was wrapped into a "#ifndef WITH_PTHREADS" but the prototype in replace.h and the define in system/network.h were not. I removed that ifndef since the inet_ntoa() function is usually not thread safe anyways, since it returns a pointer to a static buffer. So whoever calls inet_ntoa() should be aware that it is not thread safe anyways. Michael (This used to be commit 974c0c45ad42644348e0b55454715b12158f1028)
Diffstat (limited to 'source4/lib/replace/inet_ntoa.m4')
-rw-r--r--source4/lib/replace/inet_ntoa.m419
1 files changed, 19 insertions, 0 deletions
diff --git a/source4/lib/replace/inet_ntoa.m4 b/source4/lib/replace/inet_ntoa.m4
new file mode 100644
index 0000000000..c1de4134d9
--- /dev/null
+++ b/source4/lib/replace/inet_ntoa.m4
@@ -0,0 +1,19 @@
+AC_CHECK_FUNCS(inet_ntoa,[],[LIBREPLACEOBJ="${LIBREPLACEOBJ} inet_ntoa.o"])
+
+AC_CACHE_CHECK([for broken inet_ntoa],libreplace_cv_REPLACE_INET_NTOA,[
+AC_TRY_RUN([
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+main() { struct in_addr ip; ip.s_addr = 0x12345678;
+if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
+ strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); }
+exit(1);}],
+ libreplace_cv_REPLACE_INET_NTOA=yes,libreplace_cv_REPLACE_INET_NTOA=no,libreplace_cv_REPLACE_INET_NTOA=cross)])
+if test x"$libreplace_cv_REPLACE_INET_NTOA" = x"yes"; then
+ AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
+fi