1 /** 2 * \file util.c 3 * A set of common utility functions found 4 * in all samples. 5 * 6 * Copyright (C) 2008 Linus Walleij <triad (at) df.lth.se> 7 * 8 * This library is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2 of the License, or (at your option) any later version. 12 * 13 * This library is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with this library; if not, write to the 20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 21 * Boston, MA 02111-1307, USA. 22 */ 23 #include "config.h" 24 #include "util.h" 25 #ifdef HAVE_LANGINFO_H 26 #include <langinfo.h> 27 #endif 28 #ifdef HAVE_LOCALE_H 29 #include <locale.h> 30 #endif 31 #include <stdlib.h> 32 #include <stdio.h> 33 #include <string.h> 34 #include <strings.h> 35 36 void checklang(void) 37 { 38 const char *langsuff = NULL; 39 const char *lang = getenv("LANG"); 40 41 #ifdef HAVE_LOCALE_H 42 // Set the locale in accordance with environment 43 setlocale(LC_ALL, ""); 44 #endif 45 #ifdef HAVE_LANGINFO_H 46 langsuff = nl_langinfo(CODESET); 47 #else 48 /* 49 * Check environment variables $LANG and $LC_CTYPE 50 * to see if we want to support UTF-8 unicode 51 */ 52 if (lang != NULL) { 53 const char *sep = strrchr(lang, '.'); 54 if (sep != NULL) { 55 langsuff = sep + 1; 56 } else { 57 langsuff = lang; 58 } 59 } 60 #endif 61 if (langsuff == NULL) { 62 printf("Could not determine language suffix for your system. Please check your setup!\n"); 63 } else if (strcasecmp(langsuff, "UTF-8") && strcasecmp(langsuff, "UTF8")) { 64 printf("Your system does not appear to have UTF-8 enabled ($LANG=\"%s\")\n", lang); 65 printf("If you want to have support for diacritics and Unicode characters,\n"); 66 printf("please switch your locale to an UTF-8 locale, e.g. \"en_US.UTF-8\".\n"); 67 } 68 } 69