core: Make sure autostart dir exists
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Wed, 18 Nov 2009 16:14:05 +0000 (18:14 +0200)
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Thu, 19 Nov 2009 12:37:47 +0000 (14:37 +0200)
Make sure autostart dir exists before attempting to write to it.

src/rygel/rygel-user-config.vala

index 643916e..d778182 100644 (file)
@@ -290,12 +290,14 @@ public class Rygel.UserConfig : GLib.Object, Configuration {
     }
 
     private void enable_upnp (bool enable) {
-        var dest_path = Path.build_filename (Environment.get_user_config_dir (),
-                                             "autostart",
-                                             "rygel.desktop");
-        var dest = File.new_for_path (dest_path);
-
+        var dest_dir = Path.build_filename (Environment.get_user_config_dir (),
+                                             "autostart");
         try {
+            this.ensure_dir_exists (dest_dir);
+
+            var dest_path = Path.build_filename (dest_dir, "rygel.desktop");
+            var dest = File.new_for_path (dest_path);
+
             if (enable) {
                 uint32 res;
 
@@ -333,5 +335,13 @@ public class Rygel.UserConfig : GLib.Object, Configuration {
                      err.message);
         }
     }
+
+    private void ensure_dir_exists (string dir_path) throws GLib.Error {
+        var dir = File.new_for_path (dir_path);
+
+        try {
+            dir.make_directory (null);
+        } catch (IOError.EXISTS err) { /* Thats OK */ }
+    }
 }