bug-gnulib
[Top][All Lists]
Advanced

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

Re: filevercmp: please post final filevercmp


From: Jim Meyering
Subject: Re: filevercmp: please post final filevercmp
Date: Fri, 03 Oct 2008 13:45:35 +0200

Kamil Dudka <address@hidden> wrote:

> On Friday 03 of October 2008 09:55:40 Jim Meyering wrote:
>> Please review these small changes that I expect to fold into your change
>> set: - use c_isdigit, c_isalpha, c_isalnum directly; no need for casts -
> Sorry, but I am not sure here. This was Bruno's suggestion from
> http://lists.gnu.org/archive/html/bug-coreutils/2008-09/msg00115.html but we
> moved from ctype.h to c-ctype.h since that. The c-ctype module is new to me.
> I am not in office right now to probe it...
>
>> reword match_suffix comment
>>   - reword module description
>>   - s/0/NULL/ in test-filevercmp.c
> No problem here...

FYI, here's the adjusted patch, using the relatively type-safe
to_uchar function instead of casts.  Also adjusted a misleadingly
split/indented expression:

>From 5f4f36b8607ba69bb2b672f1ea9c9b0717e74cb3 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Fri, 3 Oct 2008 11:51:55 +0200
Subject: [PATCH] tweaks

---
 lib/filevercmp.c        |   25 ++++++++++++++-----------
 modules/filevercmp      |    2 +-
 tests/test-filevercmp.c |    3 +--
 3 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/lib/filevercmp.c b/lib/filevercmp.c
index a73c618..6aabf5f 100644
--- a/lib/filevercmp.c
+++ b/lib/filevercmp.c
@@ -26,16 +26,19 @@
 #include <c-ctype.h>
 #include <limits.h>

-#define ISDIGIT(c) c_isdigit ((unsigned char) (c))
-#define ISALPHA(c) c_isalpha ((unsigned char) (c))
-#define ISALNUM(c) c_isalnum ((unsigned char) (c))
-
-/*
-   match file suffix defined as RE (\.[A-Za-z][A-Za-z0-9]*)*$
-
-   Scan string pointed by *str and return pointer to suffix begin or NULL if
-   not found. Pointer *str points to ending zero of scanned string after
-   return. */
+#define ISDIGIT(c) c_isdigit (to_uchar (c))
+#define ISALPHA(c) c_isalpha (to_uchar (c))
+#define ISALNUM(c) c_isalnum (to_uchar (c))
+
+/* Convert a possibly-signed character to an unsigned character.  This is
+   a bit safer than casting to unsigned char, since it catches some type
+   errors that the cast doesn't.  */
+static inline unsigned char to_uchar (char ch) { return ch; }
+
+/* Match a file suffix defined by this regular expression:
+   /(\.[A-Za-z][A-Za-z0-9]*)*$/
+   Scan the string *STR and return a pointer to the matching suffix, or
+   NULL if not found.  Upon return, *STR points to terminating NUL.  */
 static const char *
 match_suffix (const char **str)
 {
@@ -49,7 +52,7 @@ match_suffix (const char **str)
           if (!ISALPHA (**str))
             match = NULL;
         }
-      else if ('.'  == **str)
+      else if ('.' == **str)
         {
           read_alpha = true;
           if (!match)
@@ -94,8 +97,8 @@ verrevcmp (const char *s1, size_t s1_len, const char *s2, 
size_t s2_len)
   while (s1_pos < s1_len || s2_pos < s2_len)
     {
       int first_diff = 0;
-      while ((s1_pos < s1_len && !ISDIGIT (s1[s1_pos])) || (s2_pos < s2_len
-           && !ISDIGIT (s2[s2_pos])))
+      while ((s1_pos < s1_len && !ISDIGIT (s1[s1_pos]))
+            || (s2_pos < s2_len && !ISDIGIT (s2[s2_pos])))
        {
          int s1_c = (s1_pos == s1_len) ? 0 : order (s1[s1_pos]);
          int s2_c = (s2_pos == s2_len) ? 0 : order (s2[s2_pos]);
diff --git a/modules/filevercmp b/modules/filevercmp
index db71442..12b0520 100644
--- a/modules/filevercmp
+++ b/modules/filevercmp
@@ -1,5 +1,5 @@
 Description:
-function comparing version strings (and file names with version)
+compare version strings and version-containing file names

 Files:
 lib/filevercmp.h
diff --git a/tests/test-filevercmp.c b/tests/test-filevercmp.c
index af5ca4a..4efd108 100644
--- a/tests/test-filevercmp.c
+++ b/tests/test-filevercmp.c
@@ -56,7 +56,7 @@ static const char *const examples[] =
   "nss_ldap-1.0-0.1a.tar.gz",
   "nss_ldap-10beta1.fc8.tar.gz",
   "nss_ldap-10.11.8.6.20040204cvs.fc10.ebuild",
-  0
+  NULL
 };

 int
@@ -93,4 +93,3 @@ main (int argc, char **argv)

   return 0;
 }
-
--
1.6.0.2.307.gc427




reply via email to

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