Mercurial > hg > octave-nkf > gnulib-hg
changeset 11429:a32a8b26323e
filevercmp: handle simple~ and numbered.~3~ backup suffixes
* lib/filevercmp.c: Handle simple~ and numbered.~3~ backup suffixes.
* tests/test-filevercmp.c: Add tests for backup suffixes.
Reported by Sven Joachim.
author | Kamil Dudka <kdudka@redhat.com> |
---|---|
date | Fri, 20 Mar 2009 11:20:12 +0100 |
parents | 766299801152 |
children | 960a5f2974d0 |
files | ChangeLog lib/filevercmp.c lib/filevercmp.h tests/test-filevercmp.c |
diffstat | 4 files changed, 20 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-03-24 Kamil Dudka <kdudka@redhat.com> + + filevercmp: handle simple~ and numbered.~3~ backup suffixes + * lib/filevercmp.c: Handle simple~ and numbered.~3~ backup suffixes. + * tests/test-filevercmp.c: Add tests for backup suffixes. + 2009-03-24 Simon Josefsson <simon@josefsson.org> * modules/stdlib (Depends-on): Add stdint, needed when defining
--- a/lib/filevercmp.c +++ b/lib/filevercmp.c @@ -1,7 +1,7 @@ /* Copyright (C) 1995 Ian Jackson <iwj10@cus.cam.ac.uk> Copyright (C) 2001 Anthony Towns <aj@azure.humbug.org.au> - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008-2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ #include <limits.h> /* 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 @@ if (read_alpha) { read_alpha = false; - if (!c_isalpha (**str)) + if (!c_isalpha (**str) && '~' != **str) match = NULL; } else if ('.' == **str) @@ -49,7 +49,7 @@ if (!match) match = *str; } - else if (!c_isalnum (**str)) + else if (!c_isalnum (**str) && '~' != **str) match = NULL; (*str)++; }
--- a/lib/filevercmp.h +++ b/lib/filevercmp.h @@ -1,7 +1,7 @@ /* Copyright (C) 1995 Ian Jackson <iwj10@cus.cam.ac.uk> Copyright (C) 2001 Anthony Towns <aj@azure.humbug.org.au> - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008-2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -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.
--- a/tests/test-filevercmp.c +++ b/tests/test-filevercmp.c @@ -1,5 +1,5 @@ /* Test of filevercmp() function. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008-2009 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,10 +45,17 @@ ".b", "a~", "a", + "a.b~", + "a.b", + "a.bc~", + "a.bc", "b~", "b", "gcc-c++-10.fc9.tar.gz", + "gcc-c++-10.fc9.tar.gz.~1~", + "gcc-c++-10.fc9.tar.gz.~2~", "gcc-c++-10.8.12-0.7rc2.fc9.tar.bz2", + "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",