Kamil Dudka <[EMAIL PROTECTED]> wrote: > On Friday 03 October 2008 08:18:32 you wrote: >> I suppose you've seen Bruno's reply. >> So would you please make the copyright change he proposed, >> add the paragraph suggested by Ian, and post a final version? > Final version of patch is attached. > > Summary: > - add copyrights (from Bruno's reply) > - add verrevcmp function description (as Ian suggested) > - use c_isdigit from c_ctype.h
Thank you. 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 - reword match_suffix comment - reword module description - s/0/NULL/ in test-filevercmp.c >From 44266b31e530ce198638700d401d9c589aa332a3 Mon Sep 17 00:00:00 2001 From: Jim Meyering <[EMAIL PROTECTED]> Date: Fri, 3 Oct 2008 11:51:55 +0200 Subject: [PATCH] tweaks --- lib/filevercmp.c | 32 +++++++++++++------------------- modules/filevercmp | 2 +- tests/test-filevercmp.c | 3 +-- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/lib/filevercmp.c b/lib/filevercmp.c index a73c618..36ae95d 100644 --- a/lib/filevercmp.c +++ b/lib/filevercmp.c @@ -26,16 +26,10 @@ #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. */ +/* 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) { @@ -46,7 +40,7 @@ match_suffix (const char **str) if (read_alpha) { read_alpha = false; - if (!ISALPHA (**str)) + if (!c_isalpha (**str)) match = NULL; } else if ('.' == **str) @@ -55,7 +49,7 @@ match_suffix (const char **str) if (!match) match = *str; } - else if (!ISALNUM (**str)) + else if (!c_isalnum (**str)) match = NULL; (*str)++; } @@ -66,9 +60,9 @@ match_suffix (const char **str) static inline int order (unsigned char c) { - if (ISDIGIT (c)) + if (c_isdigit (c)) return 0; - else if (ISALPHA (c)) + else if (c_isalpha (c)) return c; else if (c == '~') return -1; @@ -94,8 +88,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 && !c_isdigit (s1[s1_pos])) || (s2_pos < s2_len + && !c_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]); @@ -108,16 +102,16 @@ verrevcmp (const char *s1, size_t s1_len, const char *s2, size_t s2_len) s1_pos++; while (s2[s2_pos] == '0') s2_pos++; - while (ISDIGIT (s1[s1_pos]) && ISDIGIT (s2[s2_pos])) + while (c_isdigit (s1[s1_pos]) && c_isdigit (s2[s2_pos])) { if (!first_diff) first_diff = s1[s1_pos] - s2[s2_pos]; s1_pos++; s2_pos++; } - if (ISDIGIT (s1[s1_pos])) + if (c_isdigit (s1[s1_pos])) return 1; - if (ISDIGIT (s2[s2_pos])) + if (c_isdigit (s2[s2_pos])) return -1; if (first_diff) return first_diff; 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