[PATCH 2/8] net: use static string in string_to_ip
Sascha Hauer
s.hauer at pengutronix.de
Sun Apr 15 10:28:25 EDT 2012
Simplify usage of ip_to_string by using a static string.
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
include/net.h | 2 +-
lib/parameter.c | 6 +-----
net/net.c | 14 ++++++--------
net/tftp.c | 3 +--
4 files changed, 9 insertions(+), 16 deletions(-)
diff --git a/include/net.h b/include/net.h
index 3f2187e..01e4b22 100644
--- a/include/net.h
+++ b/include/net.h
@@ -274,7 +274,7 @@ static inline void net_copy_uint32(uint32_t *to, uint32_t *from)
}
/* Convert an IP address to a string */
-char *ip_to_string (IPaddr_t x, char *s);
+char *ip_to_string (IPaddr_t x);
/* Convert a string to ip address */
int string_to_ip(const char *s, IPaddr_t *ip);
diff --git a/lib/parameter.c b/lib/parameter.c
index 379a057..5a7ae1a 100644
--- a/lib/parameter.c
+++ b/lib/parameter.c
@@ -74,11 +74,7 @@ IPaddr_t dev_get_param_ip(struct device_d *dev, char *name)
int dev_set_param_ip(struct device_d *dev, char *name, IPaddr_t ip)
{
- char ipstr[sizeof("xxx.xxx.xxx.xxx")];
-
- ip_to_string(ip, ipstr);
-
- return dev_set_param(dev, name, ipstr);
+ return dev_set_param(dev, name, ip_to_string(ip));
}
#endif
diff --git a/net/net.c b/net/net.c
index 046ddd4..d164992 100644
--- a/net/net.c
+++ b/net/net.c
@@ -85,8 +85,10 @@ uint16_t net_checksum(unsigned char *ptr, int len)
return xsum & 0xffff;
}
-char *ip_to_string (IPaddr_t x, char *s)
+char *ip_to_string (IPaddr_t x)
{
+ static char s[sizeof("xxx.xxx.xxx.xxx")];
+
x = ntohl (x);
sprintf (s, "%d.%d.%d.%d",
(int) ((x >> 24) & 0xff),
@@ -146,9 +148,9 @@ IPaddr_t getenv_ip_dns(const char *name, int dns)
int setenv_ip(const char *name, IPaddr_t ip)
{
- char str[sizeof("xxx.xxx.xxx.xxx")];
+ const char *str;
- ip_to_string(ip, str);
+ str = ip_to_string(ip);
setenv(name, str);
@@ -157,11 +159,7 @@ int setenv_ip(const char *name, IPaddr_t ip)
void print_IPaddr (IPaddr_t x)
{
- char tmp[16];
-
- ip_to_string (x, tmp);
-
- puts (tmp);
+ puts(ip_to_string(x));
}
int string_to_ethaddr(const char *str, char *enetaddr)
diff --git a/net/tftp.c b/net/tftp.c
index fc33c94..ca12638 100644
--- a/net/tftp.c
+++ b/net/tftp.c
@@ -273,7 +273,6 @@ static void tftp_handler(void *ctx, char *packet, unsigned len)
static int do_tftpb(int argc, char *argv[])
{
char *localfile, *remotefile, *file1, *file2;
- char ip1[16];
int opt;
struct stat s;
unsigned long flags;
@@ -328,7 +327,7 @@ static int do_tftpb(int argc, char *argv[])
printf("TFTP %s server %s ('%s' -> '%s')\n",
tftp_push ? "to" : "from",
- ip_to_string(net_get_serverip(), ip1),
+ ip_to_string(net_get_serverip()),
file1, file2);
init_progression_bar(tftp_push ? s.st_size : 0);
--
1.7.10
More information about the barebox
mailing list