From d889021cebb7bf798d1b7bf24149c354627e9553 Mon Sep 17 00:00:00 2001 From: Kamil Dudka Date: Fri, 20 Mar 2009 11:20:12 +0100 Subject: [PATCH] filevercmp: extension for simple and numbered backups --- ChangeLog | 5 +++++ lib/filevercmp.c | 6 +++--- lib/filevercmp.h | 2 +- tests/test-filevercmp.c | 9 +++++++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0bc942d..83075df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-20 Kamil Dudka + + * lib/filevercmp.c: Treat simple or numbered backup suffix as suffix. + * tests/test-filevercmp.c: Add tests for backup suffixes. + 2009-03-19 Eric Blake doc: mention more functions added in cygwin 1.7.0 diff --git a/lib/filevercmp.c b/lib/filevercmp.c index 7b40c98..b1ceab6 100644 --- a/lib/filevercmp.c +++ b/lib/filevercmp.c @@ -27,7 +27,7 @@ #include /* Match a file suffix defined by this regular expression: - /(\.[A-Za-z][A-Za-z0-9]*)*$/ + /(\.[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 * @@ -40,7 +40,7 @@ match_suffix (const char **str) if (read_alpha) { read_alpha = false; - if (!c_isalpha (**str)) + if (!c_isalpha (**str) && '~' != **str) match = NULL; } else if ('.' == **str) @@ -49,7 +49,7 @@ match_suffix (const char **str) if (!match) match = *str; } - else if (!c_isalnum (**str)) + else if (!c_isalnum (**str) && '~' != **str) match = NULL; (*str)++; } diff --git a/lib/filevercmp.h b/lib/filevercmp.h index 569b4d0..9568d15 100644 --- a/lib/filevercmp.h +++ b/lib/filevercmp.h @@ -32,7 +32,7 @@ It returns number >0 for S1 > S2, 0 for S1 == S2 and number <0 for S1 < S2. This function compares strings, in a way that if VER1 and VER2 are version - numbers and PREFIX and SUFFIX (SUFFIX defined as (\.[A-Za-z][A-Za-z0-9]*)*) + numbers and PREFIX and SUFFIX (SUFFIX defined as (\.[A-Za-z~][A-Za-z0-9~]*)*) are strings then VER1 < VER2 implies filevercmp (PREFIX VER1 SUFFIX, PREFIX VER2 SUFFIX) < 0. diff --git a/tests/test-filevercmp.c b/tests/test-filevercmp.c index fe54dc2..45a594b 100644 --- a/tests/test-filevercmp.c +++ b/tests/test-filevercmp.c @@ -45,10 +45,15 @@ static const char *const examples[] = ".b", "a~", "a", + "a.b~", + "a.b", + "a.bc~", + "a.bc", "b~", "b", - "gcc-c++-10.fc9.tar.gz", - "gcc-c++-10.8.12-0.7rc2.fc9.tar.bz2", + "gcc-c++-10.fc9.tar.gz.~1~", + "gcc-c++-10.fc9.tar.gz.~2~", + "gcc-c++-10.8.12-0.7rc2.fc9.tar.bz2.~1~", "glibc-2-0.1.beta1.fc10.rpm", "glibc-common-5-0.2.beta2.fc9.ebuild", "glibc-common-5-0.2b.deb", -- 1.6.1.2