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.c | |
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.c')
-rw-r--r-- | source3/lib/replace/inet_ntoa.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/source3/lib/replace/inet_ntoa.c b/source3/lib/replace/inet_ntoa.c new file mode 100644 index 0000000000..f3e733fa61 --- /dev/null +++ b/source3/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; +} |