summaryrefslogtreecommitdiff
path: root/source3/lib/replace/inet_ntoa.m4
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2008-03-18 12:16:47 +0100
committerStefan Metzmacher <metze@samba.org>2008-03-18 16:44:59 +0100
commit5c73dabd49bfca840c062e8c49d8765dc0e4531e (patch)
tree481917c0100432b1f49129ed20cfa5760b284a16 /source3/lib/replace/inet_ntoa.m4
parenta4d7cbcb2f9af300b005457867903387fb61a532 (diff)
downloadsamba-5c73dabd49bfca840c062e8c49d8765dc0e4531e.tar.gz
samba-5c73dabd49bfca840c062e8c49d8765dc0e4531e.tar.bz2
samba-5c73dabd49bfca840c062e8c49d8765dc0e4531e.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 (cherry picked from commit 974c0c45ad42644348e0b55454715b12158f1028) (This used to be commit edcf2712bcdedabbfdd9ee8b9a18f46126930636)
Diffstat (limited to 'source3/lib/replace/inet_ntoa.m4')
-rw-r--r--source3/lib/replace/inet_ntoa.m419
1 files changed, 19 insertions, 0 deletions
diff --git a/source3/lib/replace/inet_ntoa.m4 b/source3/lib/replace/inet_ntoa.m4
new file mode 100644
index 0000000000..c1de4134d9
--- /dev/null
+++ b/source3/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