Added a few extra lang code functions.

This commit is contained in:
Adam Sutton 2012-09-08 19:42:27 +01:00
parent 5e8d239a6a
commit 09042fd20a
2 changed files with 18 additions and 7 deletions

View file

@ -493,12 +493,12 @@ const lang_code_t lang_codes[] = {
* Functions
* *************************************************************************/
const char *lang_code_get2 ( const char *code, size_t len )
static const lang_code_t *_lang_code_get ( const char *code, size_t len )
{
int i;
char tmp[4];
if (code && *code) {
if (code && *code && len) {
/* Extract the code (lowercase) */
i = 0;
@ -515,19 +515,29 @@ const char *lang_code_get2 ( const char *code, size_t len )
if (i) {
const lang_code_t *c = lang_codes;
while (c->code2b) {
if ( !strcmp(tmp, c->code2b) ) return c->code2b;
if ( c->code1 && !strcmp(tmp, c->code1) ) return c->code2b;
if ( c->code2t && !strcmp(tmp, c->code2t) ) return c->code2b;
if ( !strcmp(tmp, c->code2b) ) return c;
if ( c->code1 && !strcmp(tmp, c->code1) ) return c;
if ( c->code2t && !strcmp(tmp, c->code2t) ) return c;
c++;
}
}
}
return lang_codes[0].code2b;
return &lang_codes[0];
}
const char *lang_code_get ( const char *code )
{
return lang_code_get2(code, strlen(code));
return lang_code_get3(code)->code2b;
}
const char *lang_code_get2 ( const char *code, size_t len )
{
return _lang_code_get(code, len)->code2b;
}
const lang_code_t *lang_code_get3 ( const char *code )
{
return _lang_code_get(code, strlen(code ?: ""));
}
const char **lang_code_split ( const char *codes )

View file

@ -32,6 +32,7 @@ extern const lang_code_t lang_codes[];
/* Convert code to preferred internal code */
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 );
/* Split list of codes as per HTTP Language-Accept spec */
const char **lang_code_split ( const char *codes );