--- rpm-4.5/rpmio/rpmmg.c.org 2012-02-29 16:32:05.655058968 +0100 +++ rpm-4.5/rpmio/rpmmg.c 2012-02-29 16:36:22.430972834 +0100 @@ -118,7 +118,29 @@ /*@fallthrough@*/ case URL_IS_UNKNOWN: default: + { + 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"); + } + t = magic_file(mg->ms, fn); + + if (old_ctype) { + setlocale(LC_CTYPE, old_ctype); + _free(old_ctype); + } + if (old_collate) { + setlocale(LC_COLLATE, old_collate); + _free(old_collate); + } /* XXX HACK: libmagic compiled without spews here. */ if (t == NULL) { const char * msg = magic_error(mg->ms); @@ -147,6 +176,7 @@ rpmlog(RPMLOG_ERR, _("magic_file(ms, %s) failed: %s\n"), (fn ? fn : "(nil)"), msg); } + } break; } }