---- rpm-4.5/lib/rpmfc.c.org 2010-10-06 20:47:04.748417761 +0200
-+++ rpm-4.5/lib/rpmfc.c 2010-10-06 20:48:13.364041124 +0200
-@@ -1356,8 +1356,18 @@
+--- rpm-4.5/lib/rpmfc.c.org 2012-02-29 16:32:05.655058968 +0100
++++ rpm-4.5/lib/rpmfc.c 2012-02-29 16:36:22.430972834 +0100
+@@ -1114,9 +1114,31 @@
/* XXX skip all files in /dev/ which are (or should be) %dev dummies. */
else if (slen >= fc->brlen+sizeof("/dev/") && !strncmp(s+fc->brlen, "/dev/", sizeof("/dev/")-1))
ftype = "";
- else
+ else {
-+ char *old_loc = setlocale(LC_CTYPE, NULL);
-+ if (old_loc) {
-+ old_loc = xstrdup(old_loc);
++ char *old_ctype = setlocale(LC_CTYPE, NULL);
++ char *old_collate = setlocale(LC_COLLATE, NULL);
++
++ if (old_ctype) {
++ old_ctype = xstrdup(old_ctype);
+ setlocale(LC_CTYPE, "C");
+ }
++ if (old_collate) {
++ old_collate = xstrdup(old_collate);
++ setlocale(LC_COLLATE, "C");
++ }
++
ftype = magic_file(ms, s);
-+ if (old_loc) {
-+ setlocale(LC_CTYPE, old_loc);
-+ _free(old_loc);
+
++ if (old_ctype) {
++ setlocale(LC_CTYPE, old_ctype);
++ _free(old_ctype);
++ }
++ if (old_collate) {
++ setlocale(LC_COLLATE, old_collate);
++ _free(old_collate);
+ }
+ }
-
++
if (ftype == NULL) {
xx = RPMERR_EXEC;
+ rpmError(xx, _("magic_file(ms, \"%s\") failed: mode %06o %s\n"),