From 6f4600c533d370c6020835c786ebedaed00fcaf0 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Thu, 25 Jun 2009 15:59:27 +0000 Subject: [PATCH] Check the first of LC_CTYPE, LC_ALL and LANG, rather than just the last, when trying to decide about UTF-8, and use strcasestr. Reported by Geert Hendrickx. --- tmux.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tmux.c b/tmux.c index aabb3bcb..0f04cfa2 100644 --- a/tmux.c +++ b/tmux.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.c,v 1.7 2009/06/04 21:56:14 nicm Exp $ */ +/* $OpenBSD: tmux.c,v 1.8 2009/06/05 07:22:23 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -342,12 +342,17 @@ main(int argc, char **argv) if (!(flags & IDENTIFY_UTF8)) { /* - * If the user has set LANG to contain UTF-8, it is a safe + * If the user has set whichever of LC_ALL, LC_CTYPE or LANG + * exist (in that order) to contain UTF-8, it is a safe * assumption that either they are using a UTF-8 terminal, or * if not they know that output from UTF-8-capable programs may * be wrong. */ - if ((s = getenv("LANG")) != NULL && strstr(s, "UTF-8") != NULL) + if ((s = getenv("LC_CTYPE")) == NULL) { + if ((s = getenv("LC_ALL")) == NULL) + s = getenv("LANG"); + } + if (s != NULL && strcasestr(s, "UTF-8") != NULL) flags |= IDENTIFY_UTF8; }