gettext.c: move get_preferred_languages() from http.c

Calling setlocale(LC_MESSAGES, ...) directly from http.c, without
including <locale.h>, was causing compilation warnings.  Move the
helper function to gettext.c that already includes the header and
where locale-related issues are handled.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2015-02-25 22:04:16 -05:00 committed by Junio C Hamano
parent f18604bbf2
commit 93f7d9108a
3 changed files with 28 additions and 25 deletions

View File

@ -18,6 +18,31 @@
# endif
#endif
/*
* Guess the user's preferred languages from the value in LANGUAGE environment
* variable and LC_MESSAGES locale category if NO_GETTEXT is not defined.
*
* The result can be a colon-separated list like "ko:ja:en".
*/
const char *get_preferred_languages(void)
{
const char *retval;
retval = getenv("LANGUAGE");
if (retval && *retval)
return retval;
#ifndef NO_GETTEXT
retval = setlocale(LC_MESSAGES, NULL);
if (retval && *retval &&
strcmp(retval, "C") &&
strcmp(retval, "POSIX"))
return retval;
#endif
return NULL;
}
#ifdef GETTEXT_POISON
int use_gettext_poison(void)
{

View File

@ -65,4 +65,6 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n)
/* Mark msgid for translation but do not translate it. */
#define N_(msgid) msgid
const char *get_preferred_languages(void);
#endif

26
http.c
View File

@ -8,6 +8,7 @@
#include "credential.h"
#include "version.h"
#include "pkt-line.h"
#include "gettext.h"
int active_requests;
int http_is_verbose;
@ -991,31 +992,6 @@ static void extract_content_type(struct strbuf *raw, struct strbuf *type,
strbuf_addstr(charset, "ISO-8859-1");
}
/*
* Guess the user's preferred languages from the value in LANGUAGE environment
* variable and LC_MESSAGES locale category if NO_GETTEXT is not defined.
*
* The result can be a colon-separated list like "ko:ja:en".
*/
static const char *get_preferred_languages(void)
{
const char *retval;
retval = getenv("LANGUAGE");
if (retval && *retval)
return retval;
#ifndef NO_GETTEXT
retval = setlocale(LC_MESSAGES, NULL);
if (retval && *retval &&
strcmp(retval, "C") &&
strcmp(retval, "POSIX"))
return retval;
#endif
return NULL;
}
static void write_accept_language(struct strbuf *buf)
{
/*