X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=lib%2Fev-file-helpers.c;h=247e511d11f67724b7d8eba84c9b98d21095f9b2;hb=205c689a78e992d1ad3cf9223f7c95bf424dda94;hp=d9daf6a5739b056b2ee0e221fc19db65c42d07f2;hpb=11368f9b50db86ce4f2ae0b549fb575a19af2a74;p=evince.git diff --git a/lib/ev-file-helpers.c b/lib/ev-file-helpers.c index d9daf6a5..247e511d 100644 --- a/lib/ev-file-helpers.c +++ b/lib/ev-file-helpers.c @@ -25,10 +25,13 @@ #include #include #include +#include #include "ev-file-helpers.h" static char *dot_dir = NULL; +static char *tmp_dir = NULL; +static int count = 0; static gboolean ensure_dir_exists (const char *dir) @@ -58,8 +61,7 @@ ev_dot_dir (void) { gboolean exists; - dot_dir = g_build_filename (g_get_home_dir (), - GNOME_DOT_GNOME, + dot_dir = g_build_filename (gnome_user_dir_get (), "evince", NULL); @@ -77,7 +79,48 @@ ev_file_helpers_init (void) void ev_file_helpers_shutdown (void) -{ +{ + if (tmp_dir != NULL) + rmdir (tmp_dir); + + g_free (tmp_dir); g_free (dot_dir); + dot_dir = NULL; + tmp_dir = NULL; +} + +gchar* +ev_tmp_filename (void) +{ + gchar *basename; + gchar *filename = NULL; + + if (tmp_dir == NULL) { + gboolean exists; + gchar *dirname; + + dirname = g_strdup_printf ("evince-%u", getpid()); + tmp_dir = g_build_filename (g_get_tmp_dir (), + dirname, + NULL); + g_free (dirname); + + exists = ensure_dir_exists (tmp_dir); + g_assert (exists); + } + + + do { + if (filename != NULL) + g_free (filename); + + basename = g_strdup_printf ("document-%d", count ++); + + filename = g_build_filename (tmp_dir, basename, NULL); + + g_free (basename); + } while (g_file_test (filename, G_FILE_TEST_EXISTS)); + + return filename; }