From c551f4c479f5b695a45dd663e41f7e3db6e4422f Mon Sep 17 00:00:00 2001 From: Jeroen Zwartepoorte Date: Mon, 1 Nov 2004 21:00:09 +0000 Subject: [PATCH] 2004-11-01 Jeroen Zwartepoorte * gnomevfs/Directory.cs: New Create and Delete methods. Free the FileInfo List returned by gnome_vfs_directory_list_load. * gnomevfs/FileInfo.cs: Copy the FileInfoNative struct so the original can be properly freed. * gnomevfs/Vfs.cs: Move MakeDirectory and RemoveDirectory to Directory. svn path=/trunk/gtk-sharp/; revision=35535 --- ChangeLog | 8 ++++++++ gnomevfs/Directory.cs | 36 +++++++++++++++++++++++++++++++++--- gnomevfs/FileInfo.cs | 19 ++++--------------- gnomevfs/Vfs.cs | 16 ---------------- 4 files changed, 45 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5d1826203..78fedf06b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-11-01 Jeroen Zwartepoorte + + * gnomevfs/Directory.cs: New Create and Delete methods. Free the + FileInfo List returned by gnome_vfs_directory_list_load. + * gnomevfs/FileInfo.cs: Copy the FileInfoNative struct so the original + can be properly freed. + * gnomevfs/Vfs.cs: Move MakeDirectory and RemoveDirectory to Directory. + 2004-11-01 Jeroen Zwartepoorte * gnomevfs/Directory.cs: Bind gnome_vfs_directory_list_load as a static diff --git a/gnomevfs/Directory.cs b/gnomevfs/Directory.cs index 3540a0eb2..075c3b158 100644 --- a/gnomevfs/Directory.cs +++ b/gnomevfs/Directory.cs @@ -13,9 +13,6 @@ using System.Runtime.InteropServices; namespace Gnome.Vfs { public class Directory { - [DllImport ("gnomevfs-2")] - private static extern Result gnome_vfs_directory_list_load (out IntPtr list, string uri, FileInfoOptions options); - public static FileInfo[] GetEntries (Uri uri) { return GetEntries (uri.ToString ()); @@ -31,6 +28,12 @@ namespace Gnome.Vfs { return GetEntries (text_uri, FileInfoOptions.Default); } + [DllImport ("gnomevfs-2")] + private static extern Result gnome_vfs_directory_list_load (out IntPtr list, string uri, FileInfoOptions options); + + [DllImport ("gnomevfs-2")] + private static extern void gnome_vfs_file_info_list_free (IntPtr list); + public static FileInfo[] GetEntries (string text_uri, FileInfoOptions options) { IntPtr raw_ret; @@ -41,8 +44,35 @@ namespace Gnome.Vfs { FileInfo[] entries = new FileInfo [list.Count]; for (int i = 0; i < list.Count; i++) entries[i] = new FileInfo ((FileInfo.FileInfoNative) list [i]); + gnome_vfs_file_info_list_free (raw_ret); return entries; } + + [DllImport ("gnomevfs-2")] + private static extern Result gnome_vfs_make_directory (string uri, uint perm); + + public static Result Create (Uri uri, uint perm) + { + return Create (uri.ToString (), perm); + } + + public static Result Create (string uri, uint perm) + { + return gnome_vfs_make_directory (uri, perm); + } + + [DllImport ("gnomevfs-2")] + private static extern Result gnome_vfs_remove_directory (string uri); + + public static Result Delete (Uri uri) + { + return Delete (uri.ToString ()); + } + + public static Result Delete (string uri) + { + return gnome_vfs_remove_directory (uri); + } } } diff --git a/gnomevfs/FileInfo.cs b/gnomevfs/FileInfo.cs index 368d15aed..f5245b9e4 100644 --- a/gnomevfs/FileInfo.cs +++ b/gnomevfs/FileInfo.cs @@ -41,22 +41,19 @@ namespace Gnome.Vfs { } private FileInfoNative info; - private Uri uri; - private FileInfoOptions options; [DllImport ("gnomevfs-2")] extern static FileInfoNative gnome_vfs_file_info_new (); [DllImport ("gnomevfs-2")] - private static extern Result gnome_vfs_get_file_info_uri (IntPtr uri, ref FileInfoNative info, FileInfoOptions options); + extern static void gnome_vfs_file_info_copy (ref FileInfoNative dest, ref FileInfoNative src); [DllImport ("gnomevfs-2")] - extern static void gnome_vfs_file_info_unref (ref FileInfoNative info); + private static extern Result gnome_vfs_get_file_info_uri (IntPtr uri, ref FileInfoNative info, FileInfoOptions options); internal FileInfo (FileInfoNative info) { - this.info = info; - uri = null; + gnome_vfs_file_info_copy (ref this.info, ref info); } public FileInfo (string uri) : this (uri, FileInfoOptions.Default) {} @@ -67,14 +64,12 @@ namespace Gnome.Vfs { public FileInfo (Uri uri, FileInfoOptions options) { - this.uri = uri; - this.options = options; info = gnome_vfs_file_info_new (); Result result = gnome_vfs_get_file_info_uri (uri.Handle, ref info, options); Vfs.ThrowException (uri, result); } - + public string Name { get { if (info.name != IntPtr.Zero) @@ -265,12 +260,6 @@ namespace Gnome.Vfs { } } - public void Update () - { - Result result = gnome_vfs_get_file_info_uri (uri.Handle, ref info, options); - Vfs.ThrowException (uri, result); - } - public override String ToString () { string result = "Name = " + Name + "\n" + diff --git a/gnomevfs/Vfs.cs b/gnomevfs/Vfs.cs index b1096ba6b..32d71256a 100644 --- a/gnomevfs/Vfs.cs +++ b/gnomevfs/Vfs.cs @@ -58,22 +58,6 @@ namespace Gnome.Vfs { return gnome_vfs_move (old_uri, new_uri, force_replace); } - [DllImport ("gnomevfs-2")] - private static extern Result gnome_vfs_make_directory (string uri, uint perm); - - public static Result MakeDirectory (string uri, uint perm) - { - return gnome_vfs_make_directory (uri, perm); - } - - [DllImport ("gnomevfs-2")] - private static extern Result gnome_vfs_remove_directory (string uri); - - public static Result RemoveDirectory (string uri) - { - return gnome_vfs_remove_directory (uri); - } - [DllImport ("gnomevfs-2")] private static extern Result gnome_vfs_unlink (string uri);