From 7b0ac33694003a54d2b370f11b17248060e3ed17 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Fri, 22 Oct 2010 12:42:17 -0700
Subject: [PATCH] inttostr: revert most-recent change

---
 ChangeLog        | 14 --------------
 lib/anytostr.c   |  6 +++++-
 lib/imaxtostr.c  |  1 +
 lib/inttostr.c   |  1 +
 lib/offtostr.c   |  1 +
 lib/uinttostr.c  |  1 +
 lib/umaxtostr.c  |  1 +
 modules/inttostr |  1 +
 8 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5015e22fa6..1239a1092b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,17 +1,3 @@
-2010-10-22  Paul Eggert  <eggert@cs.ucla.edu>
-
-	inttostr: simplify by removing unnecessary redundancy
-	* lib/anytostr.c: Don't include verify.h.
-	(anytostr): Don't verify that TYPE_SIGNED (inttype) equals
-	inttype_is_signed.  Instead, use TYPE_SIGNED (inttype) directly.
-	This removes the need for inttype_is_signed, which was put in to
-	suppress some GCC warnings about conversions.  This rewrite should
-	also suppress those warnings.
-	* lib/imaxtostr.c (inttype_is_signed): Remove; no longer needed.
-	* lib/inttostr.c, lib/offtostr.c, lib/uinttostr.c, lib/umaxtostr.c:
-	Likewise.
-	* modules/inttostr (Depends-on): Remove 'verify'.
-
 2010-10-21  Bruno Haible  <bruno@clisp.org>
 
 	nl_langinfo test: Avoid test failure on NetBSD 5.
diff --git a/lib/anytostr.c b/lib/anytostr.c
index a64011f5ee..27ad985024 100644
--- a/lib/anytostr.c
+++ b/lib/anytostr.c
@@ -20,6 +20,7 @@
 #include <config.h>
 
 #include "inttostr.h"
+#include "verify.h"
 
 /* Convert I to a printable string in BUF, which must be at least
    INT_BUFSIZE_BOUND (INTTYPE) bytes long.  Return the address of the
@@ -28,10 +29,12 @@
 char * __attribute_warn_unused_result__
 anytostr (inttype i, char *buf)
 {
+  verify (TYPE_SIGNED (inttype) == inttype_is_signed);
   char *p = buf + INT_STRLEN_BOUND (inttype);
   *p = 0;
 
-  if (TYPE_SIGNED (inttype) && i < 0)
+#if inttype_is_signed
+  if (i < 0)
     {
       do
         *--p = '0' - i % 10;
@@ -40,6 +43,7 @@ anytostr (inttype i, char *buf)
       *--p = '-';
     }
   else
+#endif
     {
       do
         *--p = '0' + i % 10;
diff --git a/lib/imaxtostr.c b/lib/imaxtostr.c
index b91ac98c4e..d2a0429b0d 100644
--- a/lib/imaxtostr.c
+++ b/lib/imaxtostr.c
@@ -1,3 +1,4 @@
 #define anytostr imaxtostr
 #define inttype intmax_t
+#define inttype_is_signed 1
 #include "anytostr.c"
diff --git a/lib/inttostr.c b/lib/inttostr.c
index c96b5ca39b..14db9b8c11 100644
--- a/lib/inttostr.c
+++ b/lib/inttostr.c
@@ -1,3 +1,4 @@
 #define anytostr inttostr
 #define inttype int
+#define inttype_is_signed 1
 #include "anytostr.c"
diff --git a/lib/offtostr.c b/lib/offtostr.c
index 96082aafc0..68f2b695be 100644
--- a/lib/offtostr.c
+++ b/lib/offtostr.c
@@ -1,3 +1,4 @@
 #define anytostr offtostr
 #define inttype off_t
+#define inttype_is_signed 1
 #include "anytostr.c"
diff --git a/lib/uinttostr.c b/lib/uinttostr.c
index 48fd98f21c..21fa3761a9 100644
--- a/lib/uinttostr.c
+++ b/lib/uinttostr.c
@@ -1,3 +1,4 @@
 #define anytostr uinttostr
 #define inttype unsigned int
+#define inttype_is_signed 0
 #include "anytostr.c"
diff --git a/lib/umaxtostr.c b/lib/umaxtostr.c
index f95bfc3ee0..7fd995084e 100644
--- a/lib/umaxtostr.c
+++ b/lib/umaxtostr.c
@@ -1,3 +1,4 @@
 #define anytostr umaxtostr
 #define inttype uintmax_t
+#define inttype_is_signed 0
 #include "anytostr.c"
diff --git a/modules/inttostr b/modules/inttostr
index 6bbec28955..495ef25cf5 100644
--- a/modules/inttostr
+++ b/modules/inttostr
@@ -14,6 +14,7 @@ m4/inttostr.m4
 Depends-on:
 intprops
 stdint
+verify
 
 configure.ac:
 gl_INTTOSTR
-- 
2.39.5