]> www.fi.muni.cz Git - evince.git/blobdiff - lib/ev-file-helpers.c
Make frontends depend on just libev. Rework and group CFLAGS/LIBS
[evince.git] / lib / ev-file-helpers.c
index d9daf6a5739b056b2ee0e221fc19db65c42d07f2..247e511d11f67724b7d8eba84c9b98d21095f9b2 100644 (file)
 #include <sys/stat.h>
 #include <glib.h>
 #include <libgnome/gnome-init.h>
+#include <unistd.h>
 
 #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;
 }