From: kim Date: Tue, 18 Feb 2014 17:59:21 +0000 (+0000) Subject: Use C locale for LC_CTYPE around one more regcomp(). X-Git-Tag: FILE5_18~62 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=401b28595b350d91c265c5d0f5bb9e2b6bdd101d;p=file Use C locale for LC_CTYPE around one more regcomp(). --- diff --git a/src/softmagic.c b/src/softmagic.c index b7228c61..799e55c0 100644 --- a/src/softmagic.c +++ b/src/softmagic.c @@ -32,7 +32,7 @@ #include "file.h" #ifndef lint -FILE_RCSID("@(#)$File: softmagic.c,v 1.174 2014/02/12 23:20:53 christos Exp $") +FILE_RCSID("@(#)$File: softmagic.c,v 1.175 2014/02/18 11:09:31 kim Exp $") #endif /* lint */ #include "magic.h" @@ -1891,6 +1891,7 @@ magiccheck(struct magic_set *ms, struct magic *m) double dl, dv; int matched; union VALUETYPE *p = &ms->ms_value; + char *old_lc_ctype; switch (m->type) { case FILE_BYTE: @@ -2049,6 +2050,11 @@ magiccheck(struct magic_set *ms, struct magic *m) if (ms->search.s == NULL) return 0; + old_lc_ctype = setlocale(LC_CTYPE, NULL); + assert(old_lc_ctype != NULL); + old_lc_ctype = strdup(old_lc_ctype); + assert(old_lc_ctype != NULL); + (void)setlocale(LC_CTYPE, "C"); l = 0; rc = regcomp(&rx, m->value.s, REG_EXTENDED|REG_NEWLINE| @@ -2097,6 +2103,8 @@ magiccheck(struct magic_set *ms, struct magic *m) } regfree(&rx); } + (void)setlocale(LC_CTYPE, old_lc_ctype); + free(old_lc_ctype); if (v == (uint64_t)-1) return -1; break;