bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] inttostr: simplify by removing unnecessary redundancy


From: Paul Eggert
Subject: [PATCH] inttostr: simplify by removing unnecessary redundancy
Date: Fri, 22 Oct 2010 11:18:02 -0700
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.14) Gecko/20101006 Thunderbird/3.0.9

>From 3a77a23690108e721b8b99f947937bda9026ee07 Mon Sep 17 00:00:00 2001
From: Paul Eggert <address@hidden>
Date: Fri, 22 Oct 2010 11:14:17 -0700
Subject: [PATCH] inttostr: simplify by removing unnecessary redundancy

While looking into the inttostr issues raised recently, I discovered
that an #if would be a bit cleaner if rewritten as an if (as per
Spencer & Collyer's classic paper #ifdef Considered Harmful), and
installed this:

* 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'.
---
 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, 15 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 1239a10..5015e22 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2010-10-22  Paul Eggert  <address@hidden>
+
+       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  <address@hidden>
 
        nl_langinfo test: Avoid test failure on NetBSD 5.
diff --git a/lib/anytostr.c b/lib/anytostr.c
index 27ad985..a64011f 100644
--- a/lib/anytostr.c
+++ b/lib/anytostr.c
@@ -20,7 +20,6 @@
 #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
@@ -29,12 +28,10 @@
 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 inttype_is_signed
-  if (i < 0)
+  if (TYPE_SIGNED (inttype) && i < 0)
     {
       do
         *--p = '0' - i % 10;
@@ -43,7 +40,6 @@ anytostr (inttype i, char *buf)
       *--p = '-';
     }
   else
-#endif
     {
       do
         *--p = '0' + i % 10;
diff --git a/lib/imaxtostr.c b/lib/imaxtostr.c
index d2a0429..b91ac98 100644
--- a/lib/imaxtostr.c
+++ b/lib/imaxtostr.c
@@ -1,4 +1,3 @@
 #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 14db9b8..c96b5ca 100644
--- a/lib/inttostr.c
+++ b/lib/inttostr.c
@@ -1,4 +1,3 @@
 #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 68f2b69..96082aa 100644
--- a/lib/offtostr.c
+++ b/lib/offtostr.c
@@ -1,4 +1,3 @@
 #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 21fa376..48fd98f 100644
--- a/lib/uinttostr.c
+++ b/lib/uinttostr.c
@@ -1,4 +1,3 @@
 #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 7fd9950..f95bfc3 100644
--- a/lib/umaxtostr.c
+++ b/lib/umaxtostr.c
@@ -1,4 +1,3 @@
 #define anytostr umaxtostr
 #define inttype uintmax_t
-#define inttype_is_signed 0
 #include "anytostr.c"
diff --git a/modules/inttostr b/modules/inttostr
index 495ef25..6bbec28 100644
--- a/modules/inttostr
+++ b/modules/inttostr
@@ -14,7 +14,6 @@ m4/inttostr.m4
 Depends-on:
 intprops
 stdint
-verify
 
 configure.ac:
 gl_INTTOSTR
-- 
1.7.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]