diff options
author | Michael Adam <obnox@samba.org> | 2008-03-18 12:16:47 +0100 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2008-03-18 16:30:15 +0100 |
commit | 87b48a812683794935db950446e9fb1db8e3da48 (patch) | |
tree | 8378c52e0980ec6fa1787f58811d68304e262adf /source4/lib/replace/inet_ntoa.c | |
parent | 58dfb0ff3cb9a75e8caad89819f586b64df05f8a (diff) | |
download | samba-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.c')
-rw-r--r-- | source4/lib/replace/inet_ntoa.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/source4/lib/replace/inet_ntoa.c b/source4/lib/replace/inet_ntoa.c new file mode 100644 index 0000000000..f3e733fa61 --- /dev/null +++ b/source4/lib/replace/inet_ntoa.c @@ -0,0 +1,39 @@ +/* + * Unix SMB/CIFS implementation. + * replacement routines for broken systems + * Copyright (C) Andrew Tridgell 2003 + * Copyright (C) Michael Adam 2008 + * + * ** NOTE! The following LGPL license applies to the replace + * ** library. This does NOT imply that all of Samba is released + * ** under the LGPL + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see <http://www.gnu.org/licenses/>. + */ + +#include "replace.h" +#include "system/network.h" + +/** + * NOTE: this is not thread safe, but it can't be, either + * since it returns a pointer to static memory. + */ +char *rep_inet_ntoa(struct in_addr ip) +{ + uint8_t *p = (uint8_t *)&ip.s_addr; + static char buf[18]; + slprintf(buf, 17, "%d.%d.%d.%d", + (int)p[0], (int)p[1], (int)p[2], (int)p[3]); + return buf; +} |