X-Git-Url: https://git.tld-linux.org/?p=packages%2Frpm.git;a=blobdiff_plain;f=rpm-libmagic-locale.patch;h=29fcc32986867cdd270d732bec0fa3d761ecc760;hp=b25740706d5cabcfb457387128d50daf270a1c39;hb=630c68c81e8bfa147007554ef35258d125bc8657;hpb=84075475222d896bc30bf83aaa7caeee19bedaea diff --git a/rpm-libmagic-locale.patch b/rpm-libmagic-locale.patch index b257407..29fcc32 100644 --- a/rpm-libmagic-locale.patch +++ b/rpm-libmagic-locale.patch @@ -1,22 +1,35 @@ ---- 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"),