nt

A sensible note-taking program
git clone git://git.laack.co/nt.git
Log | Files | Refs | README

charset_unix.go (1453B)


      1 //go:build !windows && !nacl && !plan9
      2 // +build !windows,!nacl,!plan9
      3 
      4 // Copyright 2016 The TCell Authors
      5 //
      6 // Licensed under the Apache License, Version 2.0 (the "License");
      7 // you may not use file except in compliance with the License.
      8 // You may obtain a copy of the license at
      9 //
     10 //    http://www.apache.org/licenses/LICENSE-2.0
     11 //
     12 // Unless required by applicable law or agreed to in writing, software
     13 // distributed under the License is distributed on an "AS IS" BASIS,
     14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15 // See the License for the specific language governing permissions and
     16 // limitations under the License.
     17 
     18 package tcell
     19 
     20 import (
     21 	"os"
     22 	"strings"
     23 )
     24 
     25 func getCharset() string {
     26 	// Determine the character set.  This can help us later.
     27 	// Per POSIX, we search for LC_ALL first, then LC_CTYPE, and
     28 	// finally LANG.  First one set wins.
     29 	locale := ""
     30 	if locale = os.Getenv("LC_ALL"); locale == "" {
     31 		if locale = os.Getenv("LC_CTYPE"); locale == "" {
     32 			locale = os.Getenv("LANG")
     33 		}
     34 	}
     35 	if locale == "POSIX" || locale == "C" {
     36 		return "US-ASCII"
     37 	}
     38 	if i := strings.IndexRune(locale, '@'); i >= 0 {
     39 		locale = locale[:i]
     40 	}
     41 	if i := strings.IndexRune(locale, '.'); i >= 0 {
     42 		locale = locale[i+1:]
     43 	} else {
     44 		// Default assumption, and on Linux we can see LC_ALL
     45 		// without a character set, which we assume implies UTF-8.
     46 		return "UTF-8"
     47 	}
     48 	// XXX: add support for aliases
     49 	return locale
     50 }