From: Jaroslav Kysela Date: Fri, 29 May 2015 16:50:53 +0000 (+0200) Subject: language: add lang_code_preferred() to properly handle NULL for lang_str_add X-Git-Tag: v4.2.1~2421 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b06e24107fc917e208c1a28cc9979f5a292fc330;p=thirdparty%2Ftvheadend.git language: add lang_code_preferred() to properly handle NULL for lang_str_add --- diff --git a/src/lang_codes.c b/src/lang_codes.c index 6c0964d85..ad75fa882 100644 --- a/src/lang_codes.c +++ b/src/lang_codes.c @@ -674,7 +674,6 @@ static void lang_code_free( lang_code_lookup_t *l ) { lang_code_lookup_element_t *element; if (l == NULL) - return; while ((element = RB_FIRST(l)) != NULL) { RB_REMOVE(l, element, link); free(element); @@ -682,6 +681,20 @@ static void lang_code_free( lang_code_lookup_t *l ) free(l); } +const char *lang_code_preferred( void ) +{ + const char *codes = config_get_language(), *ret = "und"; + const lang_code_t *co; + + if (codes) { + co = lang_code_get3(codes); + if (co && co->code2b) + ret = co->code2b; + } + + return ret; +} + void lang_code_done( void ) { lang_code_free(lang_codes_code2b); diff --git a/src/lang_codes.h b/src/lang_codes.h index 13f52ba75..ffdf0a457 100644 --- a/src/lang_codes.h +++ b/src/lang_codes.h @@ -36,6 +36,8 @@ const char *lang_code_get ( const char *code ); const char *lang_code_get2 ( const char *code, size_t len ); const lang_code_t *lang_code_get3 ( const char *code ); +const char *lang_code_preferred( void ); + /* Split list of codes as per HTTP Language-Accept spec */ const char **lang_code_split ( const char *codes ); const lang_code_t **lang_code_split2 ( const char *codes ); diff --git a/src/lang_str.c b/src/lang_str.c index fd06c4a59..13aaedaa5 100644 --- a/src/lang_str.c +++ b/src/lang_str.c @@ -117,6 +117,7 @@ static int _lang_str_add if (!str) return 0; /* Get proper code */ + if (!lang) lang = lang_code_preferred(); if (!(lang = lang_code_get(lang))) return 0; /* Create skel */