From 1d7b92ea1f9ae73d87bd21aff3c3d13c159f0331 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 28 May 2014 19:27:15 +0200 Subject: [PATCH] dvr: Try to autodetect the UTF-8 filesystem charset --- src/dvr/dvr_db.c | 2 +- src/intlconv.c | 10 ++++++++++ src/intlconv.h | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index 359c010f..71c97625 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -174,7 +174,7 @@ dvr_charset_update(dvr_config_t *cfg, const char *charset) free(cfg->dvr_charset); free(cfg->dvr_charset_id); - s = charset ? charset : "ASCII"; + s = charset ? charset : intlconv_filesystem_charset(); id = intlconv_charset_id(s, 1, 1); cfg->dvr_charset = strdup(s); cfg->dvr_charset_id = id ? strdup(id) : NULL; diff --git a/src/intlconv.c b/src/intlconv.c index cfea4f21..46df126e 100644 --- a/src/intlconv.c +++ b/src/intlconv.c @@ -34,6 +34,16 @@ intlconv_done( void ) pthread_mutex_unlock(&intlconv_lock); } +const char * +intlconv_filesystem_charset( void ) +{ + char *s = getenv("LANG"); + if (s && strstr(s, ".utf8")) + return NULL; + /* be safe here */ + return "ASCII"; +} + static int intlconv_cmp ( intlconv_cache_t *a, intlconv_cache_t *b ) { diff --git a/src/intlconv.h b/src/intlconv.h index 54dd987a..1b57f6e0 100644 --- a/src/intlconv.h +++ b/src/intlconv.h @@ -23,6 +23,8 @@ extern const char *intlconv_charsets[]; void intlconv_init( void ); void intlconv_done( void ); +const char * +intlconv_filesystem_charset( void ); char * intlconv_charset_id( const char *charset, int transil,