diff options
author | Michael Adam <obnox@samba.org> | 2008-03-18 12:16:47 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2008-03-18 16:44:59 +0100 |
commit | 5c73dabd49bfca840c062e8c49d8765dc0e4531e (patch) | |
tree | 481917c0100432b1f49129ed20cfa5760b284a16 /source3/lib/replace/inet_ntoa.m4 | |
parent | a4d7cbcb2f9af300b005457867903387fb61a532 (diff) | |
download | samba-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.m4 | 19 |
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 |