return retval;
}
+static gchar *
+get_label_from_filename (const gchar *filename)
+{
+ GFile *file;
+ gchar *label;
+ gboolean exists;
+
+ label = g_strrstr (filename, "#");
+ if (!label)
+ return NULL;
+
+ /* Filename contains a #, check
+ * whether it's part of the path
+ * or a label
+ */
+ file = g_file_new_for_commandline_arg (filename);
+ exists = g_file_query_exists (file, NULL);
+ g_object_unref (file);
+
+ return exists ? NULL : label;
+}
+
static void
load_files (const char **files)
{
const gchar *app_uri;
filename = files[i];
- label = strchr (filename, '#');
+ label = get_label_from_filename (filename);
if (label) {
*label = 0;
label++;
}
}
+static gchar*
+ev_get_locale_dir ()
+{
+#ifdef G_OS_WIN32
+ gchar *install_dir = NULL, *locale_dir;
+ gchar *retval = NULL;
+
+ install_dir =
+ g_win32_get_package_installation_directory_of_module (NULL);
+
+ if (install_dir) {
+ locale_dir = g_build_filename (install_dir,
+ "share", "locale", NULL);
+ retval = g_win32_locale_filename_from_utf8 (locale_dir);
+ g_free (install_dir);
+ g_free (locale_dir);
+ }
+
+ if (retval)
+ return retval;
+ else
+ return g_strdup ("");
+#else
+ return g_strdup (GNOMELOCALEDIR);
+#endif
+}
+
int
main (int argc, char *argv[])
{
#ifdef ENABLE_NLS
/* Initialize the i18n stuff */
- bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ gchar *tmp = ev_get_locale_dir ();
+ bindtextdomain (GETTEXT_PACKAGE, tmp);
+ g_free (tmp);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
#endif
ev_application_load_session (EV_APP);
load_files (file_arguments);
- if (ev_application_has_window (EV_APP)) {
- /* Change directory so we don't prevent unmounting in case the initial cwd
- * is on an external device (see bug #575436)
- */
- g_chdir (g_get_home_dir ());
- gtk_main ();
- }
+ /* Change directory so we don't prevent unmounting in case the initial cwd
+ * is on an external device (see bug #575436)
+ */
+ g_chdir (g_get_home_dir ());
+
+ gtk_main ();
ev_shutdown ();
ev_stock_icons_shutdown ();