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 "util.h" 24 #ifdef HAVE_LANGINFO_H 25 #include <langinfo.h> 26 #endif 27 #ifdef HAVE_LOCALE_H 28 #include <locale.h> 29 #endif 30 #include <stdlib.h> 31 #include <stdio.h> 32 #include <string.h> 33 34 void checklang(void) 35 { 36 char *langsuff = NULL; 37 char *lang = getenv("LANG"); 38 39 #ifdef HAVE_LOCALE_H 40 // Set the locale in accordance with environment 41 setlocale(LC_ALL, ""); 42 #endif 43 #ifdef HAVE_LANGINFO_H 44 langsuff = nl_langinfo(CODESET); 45 #else 46 /* 47 * Check environment variables $LANG and $LC_CTYPE 48 * to see if we want to support UTF-8 unicode 49 */ 50 if (lang != NULL) { 51 if (strlen(lang) > 5) { 52 langsuff = &lang[strlen(lang)-5]; 53 } 54 } 55 #endif 56 if (langsuff == NULL) { 57 printf("Could not determine language suffix for your system. Please check your setup!\n"); 58 } else if (strcmp(langsuff, "UTF-8")) { 59 printf("Your system does not appear to have UTF-8 enabled ($LANG=\"%s\")\n", lang); 60 printf("If you want to have support for diacritics and Unicode characters,\n"); 61 printf("please switch your locale to an UTF-8 locale, e.g. \"en_US.UTF-8\".\n"); 62 } 63 } 64