Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Persch <chpe@src.gnome.org>2009-01-26 18:29:31 (GMT)
committer Christian Persch <chpe@src.gnome.org>2009-01-26 18:29:31 (GMT)
commit84c2106c83ce1eb1b0012e9714ef15875e202e72 (patch)
treebb20dd741519c3b73b860219d14a6b69a28ab8c6
parentd8e0f342c454da540242925c83a218d6c24be3dd (diff)
Move ev_dot_dir() from libdocument to shell, since it shouldn't be public
* 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. svn path=/trunk/; revision=3383
-rw-r--r--ChangeLog17
-rw-r--r--libdocument/ev-file-helpers.c42
-rw-r--r--libdocument/ev-file-helpers.h5
-rw-r--r--shell/ev-application.c28
-rw-r--r--shell/ev-application.h1
-rw-r--r--shell/ev-metadata-manager.c5
6 files changed, 57 insertions, 41 deletions
diff --git a/ChangeLog b/ChangeLog
index 6cf8b24..d025a11 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2009-01-26 Christian Persch <chpe@gnome.org>
+
+ * 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.
+
2009-01-25 Christian Persch <chpe@gnome.org>
Bug 569082 – use versioned directory for backends
diff --git a/libdocument/ev-file-helpers.c b/libdocument/ev-file-helpers.c
index b2451ac..9c65aa5 100644
--- a/libdocument/ev-file-helpers.c
+++ b/libdocument/ev-file-helpers.c
@@ -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 @@ ev_file_helpers_shutdown (void)
g_rmdir (tmp_dir);
g_free (tmp_dir);
- g_free (dot_dir);
-
- dot_dir = NULL;
tmp_dir = NULL;
}
diff --git a/libdocument/ev-file-helpers.h b/libdocument/ev-file-helpers.h
index 2c27b38..51d763d 100644
--- a/libdocument/ev-file-helpers.h
+++ b/libdocument/ev-file-helpers.h
@@ -36,14 +36,15 @@ typedef enum {
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);
diff --git a/shell/ev-application.c b/shell/ev-application.c
index bfd3f4e..4164d0b 100644
--- a/shell/ev-application.c
+++ b/shell/ev-application.c
@@ -22,6 +22,7 @@
#include <config.h>
+#include <stdlib.h>
#include <string.h>
#include <glib.h>
@@ -52,8 +53,8 @@ static void ev_application_save_print_settings (EvApplication *application)
struct _EvApplication {
GObject base_instance;
+ gchar *dot_dir;
gchar *accel_map_file;
-
gchar *toolbars_file;
EggToolbarsModel *toolbars_model;
@@ -731,7 +732,11 @@ ev_application_shutdown (EvApplication *application)
}
#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 (EvApplication *ev_application)
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_init (EvApplication *ev_application)
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 @@ ev_application_get_print_settings_file (EvApplication *application)
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 @@ ev_application_save_print_settings (EvApplication *application)
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 @@ ev_application_set_page_setup (EvApplication *application,
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;
+}
diff --git a/shell/ev-application.h b/shell/ev-application.h
index 1dfa321..1b96ca5 100644
--- a/shell/ev-application.h
+++ b/shell/ev-application.h
@@ -92,6 +92,7 @@ void ev_application_set_print_settings (EvApplication *applicati
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
diff --git a/shell/ev-metadata-manager.c b/shell/ev-metadata-manager.c
index ce164ad..c5235fa 100644
--- a/shell/ev-metadata-manager.c
+++ b/shell/ev-metadata-manager.c
@@ -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 @@ load_values ()
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 @@ ev_metadata_manager_save (gpointer data)
(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);