2007-06-21 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Thu, 21 Jun 2007 08:15:41 +0000 (08:15 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Thu, 21 Jun 2007 08:15:41 +0000 (08:15 -0000)
* Configuration.cs, InternalConfigurationHost.cs :
  configuration file to write might be given as an absolute path,
  where the ancestor directories may not exist.

svn path=/trunk/mcs/; revision=80407

mcs/class/System.Configuration/System.Configuration/ChangeLog
mcs/class/System.Configuration/System.Configuration/Configuration.cs
mcs/class/System.Configuration/System.Configuration/InternalConfigurationHost.cs

index 88e28fe796c29537058e581174e7a2d6b4aee140..35989a5a3cf8b6ffd2d61d816baa0053f34c3f8d 100644 (file)
@@ -1,3 +1,9 @@
+2007-06-21  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * Configuration.cs, InternalConfigurationHost.cs :
+         configuration file to write might be given as an absolute path,
+         where the ancestor directories may not exist.
+
 2007-06-20  Atsushi Enomoto  <atsushi@ximian.com>
 
        * ConfigurationManager.cs : in OpenExeConfiguration() and
index 74271acfa6d264555ebe486ad116cfe8e9ceb31f..c96f80d4f189efddfa9efc21528500deccabc02f 100644 (file)
@@ -387,6 +387,9 @@ namespace System.Configuration {
                [MonoInternalNote ("Detect if file has changed")]
                public void SaveAs (string filename, ConfigurationSaveMode mode, bool forceUpdateAll)
                {
+                       string dir = Path.GetDirectoryName (filename);
+                       if (!Directory.Exists (dir))
+                               Directory.CreateDirectory (dir);
                        Save (new FileStream (filename, FileMode.OpenOrCreate, FileAccess.Write), mode, forceUpdateAll);
                }
 
index b3dbb9610a0c57c25f284dea87544d72265f8c17..cd328058578d9428fd6ac553e8a3a893f1ddb4a7 100644 (file)
@@ -182,6 +182,9 @@ namespace System.Configuration
                
                public virtual Stream OpenStreamForWrite (string streamName, string templateStreamName, ref object writeContext)
                {
+                       string dir = Path.GetDirectoryName (streamName);
+                       if (!Directory.Exists (dir))
+                               Directory.CreateDirectory (dir);
                        return new FileStream (streamName, FileMode.Create, FileAccess.Write);
                }