&separator[2],
&num,
&separator[3])) {
- char sep1 = separator[0];
+ const char sep1 = separator[0];
int i;
/* The four separators should be identical, or else this is an oddly
newport = num;
/* use the same IP we are already connected to */
- snprintf(newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str, newhost);
+ snprintf(newhost, NEWHOST_BUFSIZE, "%s", conn->ip_addr_str);
}
}
else
#include <sys/sockio.h>
#endif
-#if defined(HAVE_INET_NTOA_R) && !defined(HAVE_INET_NTOA_R_DECL)
-#include "inet_ntoa_r.h"
-#endif
-
#ifdef VMS
#include <inet.h>
#endif
struct sockaddr_in *s = (struct sockaddr_in *)&req.ifr_dstaddr;
memcpy(&in, &(s->sin_addr.s_addr), sizeof(in));
-#if defined(HAVE_INET_NTOA_R)
- ip = inet_ntoa_r(in,buf,buf_size);
-#else
- ip = strncpy(buf,inet_ntoa(in),buf_size);
- ip[buf_size - 1] = 0;
-#endif
+ ip = Curl_inet_ntop(s->sin_family, &in, buf, buf_size);
}
sclose(dummy);
}
#ifndef __INET_NTOA_R_H
#define __INET_NTOA_R_H
+
+#include "setup.h"
+
+#ifdef HAVE_INET_NTOA_R_2_ARGS
+/*
+ * uClibc 0.9.26 (at least) doesn't define this prototype. The buffer
+ * must be at least 16 characters long.
+ */
+char *inet_ntoa_r(const struct in_addr in, char buffer[]);
+
+#else
/*
* My solaris 5.6 system running gcc 2.8.1 does *not* have this prototype
* in any system include file! Isn't that weird?
char *inet_ntoa_r(const struct in_addr in, char *buffer, int buflen);
#endif
+
+#endif
*/
static const char *inet_ntop4 (const u_char *src, char *dst, size_t size)
{
-#ifdef HAVE_INET_NTOA_R
+#if defined(HAVE_INET_NTOA_R_2_ARGS)
+ const char *ptr;
+ size_t len;
+ curlassert(size >= 16);
+ ptr = inet_ntoa_r(*(struct in_addr*)src, dst);
+ len = strlen(ptr);
+ memmove(dst, ptr, len);
+ dst[len] = 0;
+ return dst;
+
+#elif defined(HAVE_INET_NTOA_R)
return inet_ntoa_r(*(struct in_addr*)src, dst, size);
+
#else
const char *addr = inet_ntoa(*(struct in_addr*)src);
#define LIBIDN_REQUIRED_VERSION "0.4.1"
+#ifdef __UCLIBC_MAJOR__
+#define HAVE_INET_NTOA_R_2_ARGS 1
+#endif
+
#endif /* __CONFIG_H */
#include "base64.h"
#include "ssluse.h"
#include "hostip.h"
-#include "if2ip.h"
#include "transfer.h"
#include "sendf.h"
#include "progress.h"