[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