/*
* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
* Copyright (C) 2008 - INRIA - Sylvestre LEDRU
- *
+ *
* This file must be used under the terms of the CeCILL.
* This source file is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
- * are also available at
+ * are also available at
* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
*
*/
#include <stdlib.h>
#include "machine.h"
#ifndef _MSC_VER
- #ifdef HAVE_LIBINTL_H
- #include <libintl.h>
- #ifdef HAVE_LOCALE_H
- #include <locale.h>
- #else
- #error "Cannot find locale.h despite that libintl.h is available"
- #endif
- #endif
+#ifdef HAVE_LIBINTL_H
+#include <libintl.h>
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#else
+#error "Cannot find locale.h despite that libintl.h is available"
+#endif
+#endif
#else
- #include <libintl.h>
- #include <locale.h>
+#include <libintl.h>
+#include <locale.h>
#endif
#include "MALLOC.h"
#include "LanguagePreferences_Windows.h"
#endif
-/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
BOOL InitializeLocalization(void)
{
#ifdef HAVE_LIBINTL_H
- char *SCIpath = getSCIpath();
- char *pathLocales = NULL, *previousPathLocales = NULL;
- char *ret = NULL;
+ char *SCIpath = getSCIpath();
+ char *pathLocales = NULL, *previousPathLocales = NULL;
+ char *ret = NULL;
+
+ /* set directory containing message catalogs */
+ pathLocales = (char *)MALLOC(sizeof(char) * (strlen(SCIpath) + strlen(PATHLOCALIZATIONFILE) + 1));
- /* set directory containing message catalogs */
- pathLocales=(char *)MALLOC(sizeof(char)*(strlen(SCIpath)+strlen(PATHLOCALIZATIONFILE)+1));
+ strcpy(pathLocales, SCIpath);
+ strcat(pathLocales, PATHLOCALIZATIONFILE);
- strcpy(pathLocales, SCIpath);
- strcat(pathLocales, PATHLOCALIZATIONFILE);
+ if (bindtextdomain(NAMELOCALIZATIONDOMAIN, pathLocales) == NULL || !isdir(pathLocales))
+ {
+ /* source tree and classic build */
+ previousPathLocales = strdup(pathLocales);
+ if (pathLocales)
+ {
+ FREE(pathLocales);
+ pathLocales = NULL;
+ }
- if (bindtextdomain(NAMELOCALIZATIONDOMAIN,pathLocales)==NULL || !isdir(pathLocales))
- {
- /* source tree and classic build */
- previousPathLocales = strdup(pathLocales);
- if (pathLocales) {FREE(pathLocales); pathLocales = NULL;}
+ pathLocales = (char *)MALLOC(sizeof(char) * (strlen(SCIpath) + strlen("/..") + strlen(PATHLOCALIZATIONFILE) + 1));
+ strcpy(pathLocales, SCIpath);
+ strcat(pathLocales, "/..");
+ strcat(pathLocales, PATHLOCALIZATIONFILE);
+ if (bindtextdomain(NAMELOCALIZATIONDOMAIN, pathLocales) == NULL || !isdir(pathLocales))
+ {
+ /* when it is installed on the system for example /usr/share/locale/ */
+ fprintf(stderr, "Warning: Localization issue: Error while binding the domain from %s or %s: Switch to the default language (English).\n", pathLocales, previousPathLocales);
+ if (previousPathLocales)
+ {
+ FREE(previousPathLocales);
+ previousPathLocales = NULL;
+ }
+ if (pathLocales)
+ {
+ FREE(pathLocales);
+ pathLocales = NULL;
+ }
+ if (SCIpath)
+ {
+ FREE(SCIpath);
+ SCIpath = NULL;
+ }
+ return FALSE;
+ }
+ if (previousPathLocales)
+ {
+ FREE(previousPathLocales);
+ previousPathLocales = NULL;
+ }
+ if (pathLocales)
+ {
+ FREE(pathLocales);
+ pathLocales = NULL;
+ }
+ if (SCIpath)
+ {
+ FREE(SCIpath);
+ SCIpath = NULL;
+ }
- pathLocales=(char *)MALLOC(sizeof(char)*(strlen(SCIpath)+strlen("/..")+strlen(PATHLOCALIZATIONFILE)+1));
- strcpy(pathLocales, SCIpath);
- strcat(pathLocales, "/..");
- strcat(pathLocales, PATHLOCALIZATIONFILE);
- if (bindtextdomain(NAMELOCALIZATIONDOMAIN,pathLocales)==NULL || !isdir(pathLocales))
- {
- /* when it is installed on the system for example /usr/share/locale/ */
- fprintf(stderr, "Warning: Localization issue: Error while binding the domain from %s or %s: Switch to the default language (English).\n", pathLocales, previousPathLocales);
- if (previousPathLocales) {FREE(previousPathLocales); previousPathLocales = NULL;}
- if (pathLocales) {FREE(pathLocales); pathLocales = NULL;}
- if (SCIpath) {FREE(SCIpath); SCIpath = NULL;}
- return FALSE;
- }
- if (previousPathLocales) {FREE(previousPathLocales); previousPathLocales = NULL;}
- if (pathLocales) {FREE(pathLocales); pathLocales = NULL;}
- if (SCIpath) {FREE(SCIpath); SCIpath = NULL;}
-
- }
+ }
- /* set domain for future gettext() calls */
- ret=textdomain(NAMELOCALIZATIONDOMAIN);
- if (ret==NULL)
- {
- fprintf(stderr, "Localization: Error while declaring the text domain %s\n", NAMELOCALIZATIONDOMAIN);
- return FALSE;
- }
- bind_textdomain_codeset (NAMELOCALIZATIONDOMAIN,"UTF-8"); /*such that gettext and dgettext return UTF8 string*/
+ /* set domain for future gettext() calls */
+ ret = textdomain(NAMELOCALIZATIONDOMAIN);
+ if (ret == NULL)
+ {
+ fprintf(stderr, "Localization: Error while declaring the text domain %s\n", NAMELOCALIZATIONDOMAIN);
+ FREE(pathLocales);
+ return FALSE;
+ }
+ bind_textdomain_codeset (NAMELOCALIZATIONDOMAIN, "UTF-8"); /*such that gettext and dgettext return UTF8 string*/
#ifndef _MSC_VER
- /* Here, the "" means that we will try to use the language of the system
- * first. If it doesn't work, we switch back to default (English) */
- setlanguage("");
+ /* Here, the "" means that we will try to use the language of the system
+ * first. If it doesn't work, we switch back to default (English) */
+ setlanguage("");
#else
- /* We look if registry value LANGUAGE exists */
- /* If not exists the "" means that we will try to use the language of the system.*/
- {
- char *loadLanguage = getLanguagePreferences();
- setlanguage(loadLanguage);
- if (loadLanguage) {FREE(loadLanguage); loadLanguage = NULL;}
- }
+ /* We look if registry value LANGUAGE exists */
+ /* If not exists the "" means that we will try to use the language of the system.*/
+ {
+ char *loadLanguage = getLanguagePreferences();
+ setlanguage(loadLanguage);
+ if (loadLanguage)
+ {
+ FREE(loadLanguage);
+ loadLanguage = NULL;
+ }
+ }
#endif
- if (previousPathLocales) FREE(previousPathLocales);
- if (pathLocales) FREE(pathLocales);
- if (SCIpath) FREE(SCIpath);
+ if (previousPathLocales)
+ {
+ FREE(previousPathLocales);
+ }
+ if (pathLocales)
+ {
+ FREE(pathLocales);
+ }
+ if (SCIpath)
+ {
+ FREE(SCIpath);
+ }
- return TRUE;
+ return TRUE;
#else
- fprintf(stderr, "Localization: setlocale didn't exist on the computer used to compile Scilab ! This is abnormal ! No localization will be working for this distribution of Scilab.\n");
- return FALSE;
+ fprintf(stderr, "Localization: setlocale didn't exist on the computer used to compile Scilab ! This is abnormal ! No localization will be working for this distribution of Scilab.\n");
+ return FALSE;
#endif
}
-/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
/* MAXCHARSSCIPRINT_FULL is for sciprint_full - more than this gets truncated */
#define MAXCHARSSCIPRINT_FULL 5000
/*--------------------------------------------------------------------------*/
-void sciprint_full(char *fmt,...)
+void sciprint_full(char *fmt, ...)
{
- int lstr;
- va_list ap;
- char *s_buf=NULL;
- char *split_s_buf=NULL;
- int count=0;
- int p_s=0;
- static int colwidth;
+ int lstr;
+ va_list ap;
+ char *s_buf = NULL;
+ char *split_s_buf = NULL;
+ int count = 0;
+ int p_s = 0;
+ static int colwidth;
- s_buf=MALLOC(sizeof(char)*(MAXCHARSSCIPRINT_FULL+1));
- if (s_buf == (char *) 0)
- {
- sciprint(_("%s: No more memory.\n"),"sciprint_full");
- return;
- }
+ s_buf = MALLOC(sizeof(char) * (MAXCHARSSCIPRINT_FULL + 1));
+ if (s_buf == (char *) 0)
+ {
+ sciprint(_("%s: No more memory.\n"), "sciprint_full");
+ return;
+ }
- /* number of columns as set by command lines() */
- colwidth = getColumnsSize();
+ /* number of columns as set by command lines() */
+ colwidth = getColumnsSize();
- split_s_buf=MALLOC(sizeof(char)*(colwidth+1));
- if (split_s_buf == (char *) 0)
- {
- sciprint(_("%s: No more memory.\n"),"sciprint_full");
- return;
- }
+ split_s_buf = MALLOC(sizeof(char) * (colwidth + 1));
+ if (split_s_buf == (char *) 0)
+ {
+ sciprint(_("%s: No more memory.\n"), "sciprint_full");
+ FREE(s_buf);
+ return;
+ }
- va_start(ap,fmt);
+ va_start(ap, fmt);
#if defined(linux) || defined(_MSC_VER)
- count = vsnprintf (s_buf,MAXCHARSSCIPRINT_FULL-1, fmt, ap );
- if (count == -1)
- {
- s_buf[MAXCHARSSCIPRINT_FULL-1]='\0';
- }
+ count = vsnprintf (s_buf, MAXCHARSSCIPRINT_FULL - 1, fmt, ap );
+ if (count == -1)
+ {
+ s_buf[MAXCHARSSCIPRINT_FULL - 1] = '\0';
+ }
#else
- (void )vsprintf(s_buf, fmt, ap );
+ (void )vsprintf(s_buf, fmt, ap );
#endif
- va_end(ap);
+ va_end(ap);
- lstr=(int) strlen(s_buf);
+ lstr = (int) strlen(s_buf);
- if (lstr<colwidth)
- {
- sciprint("%s",s_buf);
- }
- else
- {
- strncpy(split_s_buf,s_buf+p_s,colwidth-1);
- split_s_buf[colwidth]='\0';
- p_s=p_s+colwidth-1;
- sciprint("%s",split_s_buf);
- sciprint("\n");
- while (p_s+colwidth-1<(int)lstr)
- {
- strncpy(split_s_buf,s_buf+p_s,colwidth-1);
- split_s_buf[colwidth]='\0';
- p_s=p_s+colwidth-1;
- sciprint(_(" (cont'd) %s\n"),split_s_buf);
- }
- strncpy(split_s_buf,s_buf+p_s,lstr-p_s);
- split_s_buf[lstr-p_s]='\0';
- sciprint(_(" (end) %s\n"),split_s_buf);
- }
+ if (lstr < colwidth)
+ {
+ sciprint("%s", s_buf);
+ }
+ else
+ {
+ strncpy(split_s_buf, s_buf + p_s, colwidth - 1);
+ split_s_buf[colwidth] = '\0';
+ p_s = p_s + colwidth - 1;
+ sciprint("%s", split_s_buf);
+ sciprint("\n");
+ while (p_s + colwidth - 1 < (int)lstr)
+ {
+ strncpy(split_s_buf, s_buf + p_s, colwidth - 1);
+ split_s_buf[colwidth] = '\0';
+ p_s = p_s + colwidth - 1;
+ sciprint(_(" (cont'd) %s\n"), split_s_buf);
+ }
+ strncpy(split_s_buf, s_buf + p_s, lstr - p_s);
+ split_s_buf[lstr - p_s] = '\0';
+ sciprint(_(" (end) %s\n"), split_s_buf);
+ }
- if (s_buf){FREE(s_buf);s_buf=NULL;}
- if (split_s_buf){FREE(split_s_buf);split_s_buf=NULL;}
+ if (s_buf)
+ {
+ FREE(s_buf);
+ s_buf = NULL;
+ }
+ if (split_s_buf)
+ {
+ FREE(split_s_buf);
+ split_s_buf = NULL;
+ }
}
/*--------------------------------------------------------------------------*/