[maemo-commits] [maemo-commits] r8933 - projects/haf/trunk/libosso-help/src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Jan 3 16:22:51 EET 2007
- Previous message: [maemo-commits] r8932 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gdk/x11
- Next message: [maemo-commits] r8934 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gdk/x11
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: schulhof
Date: 2007-01-03 16:22:50 +0200 (Wed, 03 Jan 2007)
New Revision: 8933
Modified:
projects/haf/trunk/libosso-help/src/osso-helplib.c
Log:
Fall back to retrieving the "en_GB" helpfile if the default language doesn't work.
Fixes: NB#50011
Modified: projects/haf/trunk/libosso-help/src/osso-helplib.c
===================================================================
--- projects/haf/trunk/libosso-help/src/osso-helplib.c 2007-01-03 14:07:34 UTC (rev 8932)
+++ projects/haf/trunk/libosso-help/src/osso-helplib.c 2007-01-03 14:22:50 UTC (rev 8933)
@@ -43,6 +43,8 @@
/*---=== Generic helpers (private interface) ===---*/
+static gboolean ossohelp_file2_private( const char *basename, int basename_len,
+ char *fn_buf, size_t fn_buflen, char *language ) ;
/**
Returns the last character of a string, or '\0' if NULL/empty.
@@ -254,13 +256,52 @@
extern
const gchar *ossohelp_getpath( const gchar *lang )
{
+ static gchar *last_lang = NULL ;
static gchar *ret = NULL;
- /* Initialize the path only once (optimization)
- *
- * We expect the language to remain the same throughout
- * the lifespan of this library; change this if not so.
+ /* Initialize the path only once (optimization) for each language change,
+ * which is expected to occur only infrequently
*/
+ if (NULL == last_lang)
+ {
+ if (NULL != lang)
+ {
+ last_lang = g_strdup (lang) ;
+ if (NULL != ret)
+ {
+ g_free (ret) ;
+ ret = NULL ;
+ }
+ }
+ /* else we're fine */
+ }
+ else /* NULL != last_lang */
+ {
+ if (NULL == lang)
+ {
+ g_free (last_lang) ;
+ last_lang = NULL ;
+ if (NULL != ret)
+ {
+ g_free (ret) ;
+ ret = NULL ;
+ }
+ }
+ else
+ {
+ if (strcmp (lang, last_lang))
+ {
+ g_free (last_lang) ;
+ last_lang = g_strdup (lang) ;
+ if (NULL != ret)
+ {
+ g_free (ret) ;
+ ret = NULL ;
+ }
+ }
+ }
+ }
+
if (!ret) {
const gchar *base= help_basepath();
@@ -407,11 +448,19 @@
gboolean ossohelp_file2( const char *basename, int basename_len,
char *fn_buf, size_t fn_buflen )
{
+ if (!ossohelp_file2_private (basename, basename_len, fn_buf, fn_buflen, NULL))
+ return ossohelp_file2_private (basename, basename_len, fn_buf, fn_buflen, "en_GB") ;
+ return TRUE ;
+}
+
+static gboolean ossohelp_file2_private( const char *basename, int basename_len,
+ char *fn_buf, size_t fn_buflen, char *language )
+{
char *p;
g_assert( fn_buf );
- strcpy_safe( fn_buf, ossohelp_getpath(NULL), fn_buflen );
+ strcpy_safe( fn_buf, ossohelp_getpath(language), fn_buflen );
strcat_safe_max( fn_buf, basename, fn_buflen, basename_len );
p= strchr( fn_buf, '\0' ); /* current end of the string (no ext) */
- Previous message: [maemo-commits] r8932 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gdk/x11
- Next message: [maemo-commits] r8934 - in projects/haf/branches/gtk+/maemo-gtk-2-10: . gdk/x11
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
