evince r3383 - in trunk: . libdocument shell



Author: chpe
Date: Mon Jan 26 18:29:31 2009
New Revision: 3383
URL: http://svn.gnome.org/viewvc/evince?rev=3383&view=rev

Log:
	* libdocument/ev-file-helpers.c: (ev_dir_ensure_exists),
	(ev_tmp_dir), (ev_file_helpers_init), (ev_file_helpers_shutdown):
	* libdocument/ev-file-helpers.h:
	* shell/ev-application.c: (ev_application_shutdown),
	(ev_application_init), (ev_application_screensaver_disable),
	(ev_application_save_print_settings),
	(ev_application_set_page_setup):
	* shell/ev-application.h:
	* shell/ev-metadata-manager.c: (load_values),
	(ev_metadata_manager_save): Move ev_dot_dir() from libdocument to
	shell, since it shouldn't be public API. Bug #569120.

	* libdocument/ev-file-helpers.c: (ev_tmp_filename): Use
	g_get_prgname() instead of hardcoding "evince" for the tmpdir name.

Modified:
   trunk/ChangeLog
   trunk/libdocument/ev-file-helpers.c
   trunk/libdocument/ev-file-helpers.h
   trunk/shell/ev-application.c
   trunk/shell/ev-application.h
   trunk/shell/ev-metadata-manager.c

Modified: trunk/libdocument/ev-file-helpers.c
==============================================================================
--- trunk/libdocument/ev-file-helpers.c	(original)
+++ trunk/libdocument/ev-file-helpers.c	Mon Jan 26 18:29:31 2009
@@ -36,59 +36,38 @@
 
 #include "ev-file-helpers.h"
 
-static gchar *dot_dir = NULL;
 static gchar *tmp_dir = NULL;
 static gint   count = 0;
 
-static gboolean
-ensure_dir_exists (const char *dir)
+gboolean
+ev_dir_ensure_exists (const gchar *dir,
+                      int          mode)
 {
-	if (g_file_test (dir, G_FILE_TEST_IS_DIR))
-		return TRUE;
-	
-	if (g_mkdir_with_parents (dir, 488) == 0)
+	if (g_mkdir_with_parents (dir, mode) == 0)
 		return TRUE;
 
 	if (errno == EEXIST)
 		return g_file_test (dir, G_FILE_TEST_IS_DIR);
 	
-	g_warning ("Failed to create directory %s: %s", dir, strerror (errno));
+	g_warning ("Failed to create directory %s: %s", dir, g_strerror (errno));
 	return FALSE;
 }
 
 const gchar *
-ev_dot_dir (void)
-{
-	if (dot_dir == NULL) {
-		gboolean exists;
-
-		dot_dir = g_build_filename (g_get_home_dir (),
-					    ".gnome2",
-					    "evince",
-					    NULL);
-
-		exists = ensure_dir_exists (dot_dir);
-		if (!exists)
-			exit (1);
-	}
-
-	return dot_dir;
-}
-
-const gchar *
 ev_tmp_dir (void)
 {
 	if (tmp_dir == NULL) {
 		gboolean exists;
-		gchar   *dirname;
+		gchar   *dirname, *prgname;
 
-		dirname = g_strdup_printf ("evince-%u", getpid ());
+                prgname = g_get_prgname ();
+		dirname = g_strdup_printf ("%s-%u", prgname ? prgname : "unknown", getpid ());
 		tmp_dir = g_build_filename (g_get_tmp_dir (),
 					    dirname,
 					    NULL);
 		g_free (dirname);
 
-		exists = ensure_dir_exists (tmp_dir);
+		exists = ev_dir_ensure_exists (tmp_dir, 0700);
 		g_assert (exists);
 	}
 
@@ -107,9 +86,6 @@
 		g_rmdir (tmp_dir);
 
 	g_free (tmp_dir);
-	g_free (dot_dir);
-
-	dot_dir = NULL;
 	tmp_dir = NULL;
 }
 

Modified: trunk/libdocument/ev-file-helpers.h
==============================================================================
--- trunk/libdocument/ev-file-helpers.h	(original)
+++ trunk/libdocument/ev-file-helpers.h	Mon Jan 26 18:29:31 2009
@@ -36,14 +36,15 @@
 	EV_COMPRESSION_GZIP
 } EvCompressionType;
 
-const gchar *ev_dot_dir               (void);
-
 const gchar *ev_tmp_dir               (void);
 
 void         ev_file_helpers_init     (void);
 
 void         ev_file_helpers_shutdown (void);
 
+gboolean     ev_dir_ensure_exists     (const gchar       *dir,
+                                       int                mode);
+
 GFile       *ev_tmp_file_get          (const gchar       *prefix);
 gchar       *ev_tmp_filename          (const char        *prefix);
 void         ev_tmp_filename_unlink   (const gchar       *filename);

Modified: trunk/shell/ev-application.c
==============================================================================
--- trunk/shell/ev-application.c	(original)
+++ trunk/shell/ev-application.c	Mon Jan 26 18:29:31 2009
@@ -22,6 +22,7 @@
 
 #include <config.h>
 
+#include <stdlib.h>
 #include <string.h>
 
 #include <glib.h>
@@ -52,8 +53,8 @@
 struct _EvApplication {
 	GObject base_instance;
 
+	gchar *dot_dir;
 	gchar *accel_map_file;
-	
 	gchar *toolbars_file;
 
 	EggToolbarsModel *toolbars_model;
@@ -731,7 +732,11 @@
 	}
 #endif /* ENABLE_DBUS */
 	
+        g_free (application->dot_dir);
+        application->dot_dir = NULL;
 	g_free (application->last_chooser_uri);
+        application->last_chooser_uri = NULL;
+
 	g_object_unref (application);
 	
 	gtk_main_quit ();
@@ -750,6 +755,15 @@
 	
 	ev_application_init_session (ev_application);
 
+        ev_application->dot_dir = g_build_filename (g_get_home_dir (),
+                                                    ".gnome2",
+                                                    "evince",
+                                                    NULL);
+
+        /* FIXME: why make this fatal? */
+        if (!ev_dir_ensure_exists (ev_application->dot_dir, 0700))
+                exit (1);
+
 	home_dir = g_get_home_dir ();
 	if (home_dir) {
 		ev_application->accel_map_file = g_build_filename (home_dir,
@@ -763,7 +777,7 @@
 	ev_application->toolbars_model = egg_toolbars_model_new ();
 
 	ev_application->toolbars_file = g_build_filename
-			(ev_dot_dir (), "evince_toolbar.xml", NULL);
+			(ev_application->dot_dir, "evince_toolbar.xml", NULL);
 
 	egg_toolbars_model_load_names (ev_application->toolbars_model,
 				       DATADIR "/evince-toolbar.xml");
@@ -893,7 +907,7 @@
 
 	application->print_settings_file = g_key_file_new ();
 	
-	filename = g_build_filename (ev_dot_dir (), EV_PRINT_SETTINGS_FILE, NULL);
+	filename = g_build_filename (ev_application_get_dot_dir (application), EV_PRINT_SETTINGS_FILE, NULL);
 	if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) {
 		GError *error = NULL;
 
@@ -934,7 +948,7 @@
 					    key_file,
 					    EV_PAGE_SETUP_GROUP);
 	
-	filename = g_build_filename (ev_dot_dir (), EV_PRINT_SETTINGS_FILE, NULL);
+	filename = g_build_filename (ev_application_get_dot_dir (application), EV_PRINT_SETTINGS_FILE, NULL);
 	data = g_key_file_to_data (key_file, (gsize *)&data_length, NULL);
 	g_file_set_contents (filename, data, data_length, &error);
 	if (error) {
@@ -1022,3 +1036,9 @@
 	application->page_setup = g_object_ref (page_setup);
 	gtk_page_setup_to_key_file (page_setup, key_file, EV_PAGE_SETUP_GROUP);
 }
+
+const gchar *
+ev_application_get_dot_dir (EvApplication   *application)
+{
+	return application->dot_dir;
+}

Modified: trunk/shell/ev-application.h
==============================================================================
--- trunk/shell/ev-application.h	(original)
+++ trunk/shell/ev-application.h	Mon Jan 26 18:29:31 2009
@@ -92,6 +92,7 @@
 GtkPageSetup     *ev_application_get_page_setup      (EvApplication   *application);
 void              ev_application_set_page_setup      (EvApplication   *application,
 						      GtkPageSetup    *page_setup);
+const gchar      *ev_application_get_dot_dir         (EvApplication   *application);
 
 G_END_DECLS
 

Modified: trunk/shell/ev-metadata-manager.c
==============================================================================
--- trunk/shell/ev-metadata-manager.c	(original)
+++ trunk/shell/ev-metadata-manager.c	Mon Jan 26 18:29:31 2009
@@ -37,6 +37,7 @@
 #include <libxml/xmlreader.h>
 
 #include "ev-metadata-manager.h"
+#include "ev-application.h"
 #include "ev-file-helpers.h"
 
 #define METADATA_FILE 	"ev-metadata.xml"
@@ -271,7 +272,7 @@
 	xmlKeepBlanksDefault (0);
 
 	/* FIXME: file locking - Paolo */
-	file_name = g_build_filename (ev_dot_dir (), METADATA_FILE, NULL);
+	file_name = g_build_filename (ev_application_get_dot_dir (EV_APP), METADATA_FILE, NULL);
 	if (!g_file_test (file_name, G_FILE_TEST_EXISTS))
 	{
 		g_free (file_name);
@@ -670,7 +671,7 @@
 			  (GHFunc)save_item, root);        
 
 	/* FIXME: lock file - Paolo */
-	file_name = g_build_filename (ev_dot_dir (), METADATA_FILE, NULL);
+	file_name = g_build_filename (ev_application_get_dot_dir (EV_APP), METADATA_FILE, NULL);
 	xmlSaveFormatFile (file_name, doc, 1);
 	g_free (file_name);
 	



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]