On 03/30/2011 10:44 PM, Daniel Veillard wrote:
On Wed, Mar 30, 2011 at 08:29:53PM -0600, Eric Blake wrote:
> strcase{cmp/str} have the drawback of being sensitive to the global
> locale; this is unacceptable in a library setting. Prefer a
> hard-coded C locale alternative for all but virsh, which is user
> facing and where the global locale isn't changing externally.
>
> * .gnulib: Update to latest, for c-strcasestr change.
> +++ b/tools/virsh.c
> @@ -432,6 +432,7 @@ static int namesorter(const void *a, const void *b) {
> const char **sa = (const char**)a;
> const char **sb = (const char**)b;
>
> + /* User visible sort, so we want locale-specific case comparison. */
> return strcasecmp(*sa, *sb);
Hmm, maybe strcoll would be better, but that has undefined behavior if
not all strings have valid encodings. It's a perfect fit for gnulib's
mbmemcasecoll module, except that it is GPL with no chance of being
relaxed (that really is a value-added function that goes way beyond libc
basics). And while virsh could link with GPL stuff, I'm not ready to
deal with the hassle of two gnulib-tool invocations (lgpl for the
library, gpl for virsh). So I'm fine with keeping strcasecmp for now.
ACK
Thanks; pushed.
I've got one more gnulib update coming later today which should fix the
non-blocking pipe fd problem for mingw.
Oh, and I realized I forgot to list the gnulib commits being pulled in
by this change:
* .gnulib 422ab2e...790645d (47):
stdio: Avoid GCC >= 4.4 warnings when using %lld and similar on
mingw.
passfd: fix scoping bug
passfd: standardize coding conventions
passfd: fix incorrect sendmsg arguments
c-strcasestr: Relicense under LGPLv2+.
doc: update users.txt
tests: readlink* ("",... fails with EINVAL on newer kernels
Relicense some modules under LGPLv2+, for libidn2.
lib-symbol-visibility: Add a notice.
autoupdate
getaddrinfo: Doc fix.
getaddrinfo: Doc fix.
unictype/property-byname: Reduce the number of load-time relocations.
unictype/property-byname: Allow omitted word separators and aliases.
unictype/joininggroup-byname: Allow hyphens, omitted word separators.
unictype/joiningtype-byname: Recognize long names as well.
Tests for module 'unictype/joiningtype-longname'.
New module 'unictype/joiningtype-longname'.
unictype/bidiclass-byname: Recognize long names as well.
Tests for module 'unictype/bidiclass-longname'.
New module 'unictype/bidiclass-longname'.
unictype/bidi*: Rename modules, part 2.
unictype/bidi*: Rename modules.
unictype/bidi*: Rename functions, part 2.
New module 'unictype/combining-class-all'.
Tests for module 'unictype/combining-class-byname'.
New module 'unictype/combining-class-byname'.
Tests for module 'unictype/combining-class-longname'.
New module 'unictype/combining-class-longname'.
Tests for module 'unictype/combining-class-name'.
New module 'unictype/combining-class-name'.
unictype/combining-class: Rename source files.
unictype: Update list of canonical combining classes.
unictype/category-byname: Recognize long names as well.
Tests for module 'unictype/category-longname'.
New module 'unictype/category-longname'.
New module 'unictype/category-LC', part 2.
Tests for module 'unictype/category-LC'.
New module 'unictype/category-LC'.
xmalloc: revert yesterday's regression
maint.mk: add missing version to VC-tag
valgrind: do leak checking, and exit with code 1 on error (not 0)
posix-modules: say what it does.
xmalloc: Do not leak if underlying realloc is C99 compatible.
realloc: document portability problem
autoupdate
doc: add cvsps and tmpwatch to users.txt
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org