* lib/getaddrinfo.c (getnameinfo): Use new lightweight uinttostr,
authorJim Meyering <jim@meyering.net>
Mon, 23 Oct 2006 06:03:01 +0000 (06:03 +0000)
committerJim Meyering <jim@meyering.net>
Mon, 23 Oct 2006 06:03:01 +0000 (06:03 +0000)
in place of snprintf.

* modules/inttostr (Files): Add lib/uinttostr.c.
* lib/uinttostr.c (inttostr): New file/function.
* lib/inttostr.h (uinttostr): Declare.
* m4/inttostr.m4: Add AC_LIBOBJ([uinttostr]).
* MODULES.html.sh (Numeric conversion functions <stdlib.h>):
Add uinttostr.
* modules/getaddrinfo (Depends-on): Remove snprintf.  Add inttostr.

ChangeLog
MODULES.html.sh
lib/getaddrinfo.c
lib/inttostr.h
lib/uinttostr.c [new file with mode: 0644]
m4/inttostr.m4
modules/getaddrinfo
modules/inttostr

index a97d6e6..190b68a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-10-23  Jim Meyering  <jim@meyering.net>
+
+       * lib/getaddrinfo.c (getnameinfo): Use new lightweight uinttostr,
+       in place of snprintf.
+
+       * modules/inttostr (Files): Add lib/uinttostr.c.
+       * lib/uinttostr.c (inttostr): New file/function.
+       * lib/inttostr.h (uinttostr): Declare.
+       * m4/inttostr.m4: Add AC_LIBOBJ([uinttostr]).
+       * MODULES.html.sh (Numeric conversion functions <stdlib.h>):
+       Add uinttostr.
+       * modules/getaddrinfo (Depends-on): Remove snprintf.  Add inttostr.
+
 2006-10-21  Paul Eggert  <eggert@cs.ucla.edu>
 
        * lib/canonicalize.c (ELOOP): Define if not already defined.
index 1196121..81f1b78 100755 (executable)
@@ -1802,6 +1802,7 @@ func_all_modules ()
   func_begin_table
   func_module intprops
   func_module inttostr
+  func_module uinttostr
   func_module xstrtoimax
   func_module xstrtoumax
   func_end_table
index ef6fbbc..51cc033 100644 (file)
@@ -39,7 +39,7 @@
 #define N_(String) String
 
 #include "inet_ntop.h"
-#include "snprintf.h"
+#include "intprops.h"
 #include "strdup.h"
 
 /* BeOS has AF_INET, but not PF_INET.  */
@@ -405,10 +405,15 @@ int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen,
 #if HAVE_IPV6
       case AF_INET6:
 #endif
-       if (snprintf (service, servicelen, "%d",
-                     ntohs (((const struct sockaddr_in *) sa)->sin_port))
-           + 1 > servicelen)
-         return EAI_OVERFLOW;
+       {
+         unsigned short int port
+           = ntohs (((const struct sockaddr_in *) sa)->sin_port);
+         char buf[INT_BUFSIZE_BOUND (port)];
+         char const *s = uinttostr (port, buf);
+         if (strlen (s) + 1 > servicelen)
+           return EAI_OVERFLOW;
+         memcpy (service, s, strlen (s) + 1);
+       }
        break;
       }
 
index 3988a6d..31258ca 100644 (file)
@@ -27,3 +27,4 @@
 char *offtostr (off_t, char *);
 char *imaxtostr (intmax_t, char *);
 char *umaxtostr (uintmax_t, char *);
+char *uinttostr (unsigned int, char *);
diff --git a/lib/uinttostr.c b/lib/uinttostr.c
new file mode 100644 (file)
index 0000000..52d288e
--- /dev/null
@@ -0,0 +1,3 @@
+#define inttostr uinttostr
+#define inttype unsigned int
+#include "inttostr.c"
index 4de28f1..0a41fad 100644 (file)
@@ -1,4 +1,4 @@
-#serial 6
+#serial 7
 dnl Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -9,11 +9,13 @@ AC_DEFUN([gl_INTTOSTR],
   AC_LIBOBJ([imaxtostr])
   AC_LIBOBJ([offtostr])
   AC_LIBOBJ([umaxtostr])
+  AC_LIBOBJ([uinttostr])
 
   gl_PREREQ_INTTOSTR
   gl_PREREQ_IMAXTOSTR
   gl_PREREQ_OFFTOSTR
   gl_PREREQ_UMAXTOSTR
+  gl_PREREQ_UINTTOSTR
 ])
 
 # Prerequisites of lib/inttostr.h.
@@ -30,3 +32,6 @@ AC_DEFUN([gl_PREREQ_OFFTOSTR], [:])
 
 # Prerequisites of lib/umaxtostr.c.
 AC_DEFUN([gl_PREREQ_UMAXTOSTR], [:])
+
+# Prerequisites of lib/uinttostr.c.
+AC_DEFUN([gl_PREREQ_UINTTOSTR], [:])
index ff0d16e..8f5979d 100644 (file)
@@ -9,12 +9,12 @@ m4/getaddrinfo.m4
 
 Depends-on:
 gettext-h
-snprintf
+inet_ntop
+inttostr
 socklen
 stdbool
 strdup
 sys_socket
-inet_ntop
 
 configure.ac:
 gl_GETADDRINFO
index 658afb0..1f031ab 100644 (file)
@@ -7,6 +7,7 @@ lib/inttostr.c
 lib/inttostr.h
 lib/offtostr.c
 lib/umaxtostr.c
+lib/uinttostr.c
 m4/inttostr.m4
 
 Depends-on: