From: Christos Zoulas Date: Wed, 10 Feb 2016 15:57:40 +0000 (+0000) Subject: PR/518: Fall back to use setlocale() for the OS's that don't support X-Git-Tag: FILE5_26~26 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b74175e236c34beeb930c95bb25300c92a205cd3;p=file PR/518: Fall back to use setlocale() for the OS's that don't support newlocale()/uselocale(). This is necessary because some regex patterns we use (apple) have non-ascii characters in them. --- diff --git a/src/file.h b/src/file.h index fcef3174..7177842f 100644 --- a/src/file.h +++ b/src/file.h @@ -27,7 +27,7 @@ */ /* * file.h - definitions for file(1) program - * @(#)$File: file.h,v 1.174 2015/11/13 15:36:14 christos Exp $ + * @(#)$File: file.h,v 1.175 2016/01/19 04:17:07 christos Exp $ */ #ifndef __file_h__ @@ -509,6 +509,8 @@ typedef struct { #define USE_C_LOCALE locale_t old_lc_ctype; locale_t c_lc_ctype; +#else + char *old_lc_ctype; #endif int rc; regex_t rx; diff --git a/src/funcs.c b/src/funcs.c index 9693bf0b..b1e91de9 100644 --- a/src/funcs.c +++ b/src/funcs.c @@ -27,7 +27,7 @@ #include "file.h" #ifndef lint -FILE_RCSID("@(#)$File: funcs.c,v 1.86 2015/09/17 01:14:09 christos Exp $") +FILE_RCSID("@(#)$File: funcs.c,v 1.87 2015/09/22 15:40:32 christos Exp $") #endif /* lint */ #include "magic.h" @@ -494,6 +494,8 @@ file_regcomp(file_regex_t *rx, const char *pat, int flags) assert(rx->c_lc_ctype != NULL); rx->old_lc_ctype = uselocale(rx->c_lc_ctype); assert(rx->old_lc_ctype != NULL); +#else + rx->old_lc_ctype = setlocale(LC_CTYPE, "C"); #endif rx->pat = pat; @@ -516,6 +518,8 @@ file_regfree(file_regex_t *rx) #ifdef USE_C_LOCALE (void)uselocale(rx->old_lc_ctype); freelocale(rx->c_lc_ctype); +#else + (void)setlocale(LC_CTYPE, rx->old_lc_ctype); #endif } diff --git a/src/readcdf.c b/src/readcdf.c index 663aeeba..52dc897e 100644 --- a/src/readcdf.c +++ b/src/readcdf.c @@ -26,7 +26,7 @@ #include "file.h" #ifndef lint -FILE_RCSID("@(#)$File: readcdf.c,v 1.53 2015/04/09 20:01:41 christos Exp $") +FILE_RCSID("@(#)$File: readcdf.c,v 1.54 2015/11/23 21:20:50 christos Exp $") #endif #include @@ -120,6 +120,8 @@ cdf_app_to_mime(const char *vbuf, const struct nv *nv) assert(c_lc_ctype != NULL); old_lc_ctype = uselocale(c_lc_ctype); assert(old_lc_ctype != NULL); +#else + char *old_lc_ctype = setlocale(LC_CTYPE, "C"); #endif for (i = 0; nv[i].pattern != NULL; i++) if (strcasestr(vbuf, nv[i].pattern) != NULL) { @@ -132,6 +134,8 @@ cdf_app_to_mime(const char *vbuf, const struct nv *nv) #ifdef USE_C_LOCALE (void)uselocale(old_lc_ctype); freelocale(c_lc_ctype); +#else + setlocale(LC_CTYPE, old_lc_ctype); #endif return rv; }