2007-06-29 Jonathan Pryor <jonpryor@vt.edu> * configure.in: My sh-fu needs work. Properly check the return value of `gmcs' so I can determine whether it compiled successfully. 2007-06-29 Jonathan Pryor <jonpryor@vt.edu> * configure.in: Use a better check for the Mono.Unix.Native.NativeConvert.TryCopy() methods, as relying on libMonoPosixHelper.so is inadequate. * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Use NativeConvert.TryCopy(), not NativeConvert.Copy(). (NativeConvert.Copy() was only proposed, but never made it into an official Mono.Posix release, while .TryCopy did.) 2007-04-17 Jonathan Pryor <jonpryor@vt.edu> * example/HelloFS/hellofs.in, example/RedirectFS/redirectfs.in, example/RedirectFS/redirects-fh.in: Define DYLD_LIBRARY_PATH so that example programs work seamlessly on OS X as well as Linux. * lib/mono-fuse/Mono.Fuse.dll.config: Added; Mono dllmap config file so that MonoFuseHelper is redirected to libMonoFuseHelper.dylib on Mac OS X. * src/Mono.Fuse/Makefile.am: Install the Mono.Fuse.dll.mdb and Mono.Fuse.dll.config files. 2007-04-17 Jonathan Pryor <jonpryor@vt.edu> * src/MonoFuseHelper/Makefile.am: Define HAVE_STRUCT_FUSE_ARGS so that map.c's Mono_Fuse_ToArgs() and Mono_Fuse_FromArgs() will be compiled. Otherwise, we get an unsatisfied link error when loading MonoFuseHelper. 2007-04-17 Jonathan Pryor <jonpryor@vt.edu> * src/Mono.Fuse/create-native-map.exe, src/Mono.Fuse/MapAttribute.cs: Update to latest versions (fixes buggy overflow checking in MonoFuseHelper). * lib/Mono.Fuse/Makefile.am: FUSE_USE_VERSION should be in the .c file, not the .h file. Also fixes Mac OS X compilation, as FUSE_USE_VERSION needs to be defined *before* including <fuse.h>, but <fuse.h> is inserted before the include of lib/map.h -- bad order. 2007-01-17 Jonathan Pryor <jonpryor@vt.edu> * src/MonoFuseHelper/Makefile.am: Use $(LIBTOOL), not `libtool', as the libtool program may go by different names on different platforms (e.g. glibtool on OS X). 2006-10-31 Jonathan Pryor <jonpryor@vt.edu> * example/HelloFS/HelloFS.cs: Add extra Trace statements; remove unused code. 2006-10-23 Jonathan Pryor <jonpryor@vt.edu> * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Add [In,Out] to the FileSystmeOperationContext parameter in mfh_fuse_get_context(). Otherwise, the data is never marshaled back into managed memory, so all fields are zero'd out (making the method useless). Oops! 2006-10-12 Jonathan Pryor <jonpryor@vt.edu> * doc/mono-fuse-docs.source: Update @basefile to contain the actual basefile. Allows installed monodoc documentation to work. 2006-10-12 Jonathan Pryor <jonpryor@vt.edu> * doc/Makefile.am: Add `-pretty' so monodocer produces nicely indented XML. * doc/en/Mono.Fuse/DirectoryEntry.xml, doc/en/Mono.Fuse/FileSystem.xml, doc/en/Mono.Fuse/FileSystemOperationContext.xml, doc/en/Mono.Fuse/OpenedPathInfo.xml: Flush documentation (largest change was due to reformatting of XML). Also used svn version of monodocer to get proper Generics-formatted method declarations, so FileSystem.OnReadDirectory now lists a parameter of System.Collections.Generic.IEnumerable<Mono.Fuse.DirectoryEntry> instead of System.Collections.Generic.IEnumerable`1[[Mono.Fuse.DirectoryEntry, Mono.Fuse, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]. * src/Mono.Fuse/create-native-map.exe: Commit latest version; fixes #ifndef name formatting so that SYMBOL in "#ifndef SYMBOL" doesn't contain `/'. 2006-09-21 Jonathan Pryor <jonpryor@vt.edu> * configure.in: Remove checks for mint. Mint is dead. 2006-09-21 Jonathan Pryor <jonpryor@vt.edu> * doc/en/Mono.Fuse/FileSystem.xml, doc/en/Mono.Fuse/OpenedPathInfo.xml: Minor doc updates. 2006-09-20 Jonathan Pryor <jonpryor@vt.edu> * doc/Makefile.am: Create mono-fuse-docs.* files, not mono-fuse.* files. This matches Gtk#, and allows for clarity if we ever have mono-fuse-docs.zip and mono-fuse-VERSION.tar.gz in the same directory. * doc/en/index.xml, doc/en/Mono.Fuse.xml, doc/en/Mono.Fuse/DirectoryEntry.xml, doc/en/Mono.Fuse/FileSystem.xml, doc/en/Mono.Fuse/FileSystemOperationContext.xml, doc/en/Mono.Fuse/OpenedPathInfo.xml: Add documentation. * doc/en/Mono.Fuse/FileSystemEntry.xml: Renamed to DirectoryEntry.xml. * example/HelloFS/HelloFS.cs: Use DirectoryEntry instead of FileSystemEntry; use OpenedPathInfo.OpenAccess instead of OpenedPathInfo.OpenReadOnly. * example/RedirectFS/RedirectFS.cs, example/RedirectFS/RedirectFS-FH.cs: Use DirectoryEntry instead of FileSystemEntry; s/OnCloseDirectory/OnReleaseDirectory/. * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Changes by type: - FileSystemOperationContext: - Make sealed (this should only be created internally). - Constructor is now internal. - FileSystemEntry: - Renamed to DirectoryEntry. - Renamed Path property to Name. - Add argument checking to DirectoryEntry constructor. - Remove implicit conversion to string (as constructor may generate exceptions). - OpenedPathInfo: - Make seaeled (this should only be created internally). - Constructor now internal. - Remove OpenReadOnly, OpenWriteOnly, OpenReadWrite properties - Add OpenAccess property. - FileSystem: - Now `abstract'. There are no abstract methods, but it's pointless to create instances of this type, as it wouldn't do anything. - Make constructors protected (to emphasize the above). - Rename FileSystemName property to Name. - Rename ImmediateRemoval property to ImmediatePathRemoval. - Rename DirectIO property to EnableDirectIO. - Rename Umask property to DefaultUmask. - Add EnableKernelCache property. - Rename UserId property to DefaultUserId. - Rename GroupId property to DefaultGroupId. - Rename EntryTimeout property to PathTimeout. - Rename DeletedNameTimeout property to DeletedPathTimeout. - Change types of Timeout properties to `double' from `int'; changes PathTimeout, DeletedPathTimeout, AttributeTimeout. - Rename OnCloseDirectory() method to OnReleaseDirectory() (for consistency with OnReleaseHandle). - Rename Exit() method to Stop(). - Rename parameters of many methods to match the method names -- e.g. OnReadSymbolicLink() takes a `link' parameter instead of `path', OnOpenDirectory() takes a `directory' parameter instead of `path', etc. 2006-09-12 Jonathan Pryor <jonpryor@vt.edu> * src/Mono.Fuse/Makefile.am: Add FileNameMarshaler to the build. * src/Mono.Fuse/Mono.Fuse/FileNameMarshaler.cs: Added; marshals filenames with any encoding to/from managed code (from Mono.Unix.Native.FileNameMarshaler). * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: - Use the FileNameMarshaler custom marshaler to manipulate filenames entering/leaving managed code. This allows manipulation of filenames with non-UTF8 encodings. - Reimplement FillEntries(). When mfh_invoke_filler() returns 1, it means that the current entry was not inserted, and needs to be inserted during the next call. Previously, if a directory had many files (i.e. _OnReadDirectory() was called > 2 times), it would "drop" the file that was passed to mfh_invoke_filler() when it returned 1. Now, when mfh_invoke_filler() return 1, we remember this and return the current entry a 2nd time so that nothing is lost. 2006-09-11 Jonathan Pryor <jonpryor@vt.edu> * configure.in: Fix test for HAVE_MONO_UNIX_NATIVE_COPY_FUNCS; Add check for `mdassembler' and `monodocer' (from monodoc module); create doc/Makefile. * Makefile.am: Add `doc' directory to the build. * doc/Makefile.am: Added; build the Monodoc documentation. * doc/README: Added; short overview for adding docs to monodoc. * doc/mono-fuse.source: Added; monodoc source file (where in the tree the Mono.Fuse sources should be placed). * doc/en/index.xml, doc/en/Mono.Fuse.xml, doc/en/Mono.Fuse/FileSystem.xml, doc/en/Mono.Fuse/FileSystemEntry.xml, doc/en/Mono.Fuse/FileSystemOperationContext.xml, doc/en/Mono.Fuse/OpenedPathInfo.xml: Added; API documentation stubs. * src/MonoFuseHelper/Makefile.am: Remove automake warning message. 2006-09-11 Jonathan Pryor <jonpryor@vt.edu> * example/HelloFS/HelloFS.cs: Add extended attribute support for the `hello' file. 2006-09-11 Jonathan Pryor <jonpryor@vt.edu> * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: - Property renaming: s/Options/FuseOptions/g. - Method renaming: s/OnSetPathExtendedAttributes/OnSetPathExtendedAttribute/g; s/OnGetPathExtendedAttributes/OnGetPathExtendedAttribute/g; - Method argument changing: s/OnListPathExtendedAttributes(string, byte[], out int)/ OnListPathExtendedAttributes(string, out string[])/ * example/HelloFS/HelloFS.cs: s/\.Options/.FuseOptions/g. * example/HelloFS/Makefile.am: Add `-debug+' to compile line for HelloFS.exe; add Mono.Fuse.dll.mdb for line numbers in stack traces. * example/RedirectFS/RedirectFS.cs, example/RedirectFS/RedirectFS-FH.cs: Update to latest OnSetPathExtendedAttribute(), OnGetPathExtendedAttribute(), OnListPathExtendedAttributes() methods. 2006-09-09 Jonathan Pryor <jonpryor@vt.edu> * src/Mono.Fuse/Mono.Fuse.FileSystem.cs: - Add new public type FileSystemEntry, which provides both a Path string and a Mono.Unix.Native.Stat instance that can be passed to FUSE. The Stat instance will _only_ be used if Stat.st_ino is non-zero. - Change FileSystemOperationContext to use read-only properties instead of fields, as this information can't be changed. Change ProcessId to `int' instead of `long', for consistency with Mono.Posix. - Change FileSystem.OnReadDirectory() to use IEnumerable<FileSystemEntry> instead of IEnumerable<string>. This allows sub-classes to (optionally) provide Stat information to FUSE. (Currently FUSE will only use the st_ino & st_mode fields of the Stat, though I imagine this may be expanded in the future.) * src/MonoFuseHelper/mfh.c: Use current field names in FileSystemOperationContext. * example/HelloFS/HelloFS.cs: s/IEnumerable<string>/IEnumerable<FileSystemEntry>/g (migrate to latest Mono.Fuse.FileSystem.OnReadDirectory() prototype). * example/RedirectFS/RedirectFS.cs, example/RedirectFS/RedirectFS-FH.cs: s/IEnumerable<string>/IEnumerable<FileSystemEntry>/g (migrate to latest Mono.Fuse.FileSystem.OnReadDirectory() prototype); Fill in FileSystemEntry.Stat for use by FUSE. 2006-09-08 Jonathan Pryor <jonpryor@vt.edu> * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: - Redo OnReadDirectory() implementation to use a IEnumerator instead of a string[]. The previous approach required reading in the entire directory all at once, which would slow things down for large directories. The new approach allows FUSE to invoke _OnReadDirectory() multiple times to read from the same enumerator, allowing directory entries to be returned in "chunks" instead of all at once. Plus, it's damn cool to use a C# iterator to implement OnReadDirectory() (see HelloFS.cs & RedirectFS-FH.cs). - Remove check for OnCreateHandle()/OnOpenHandle() & OnReleaseHandle() consistency -- this broke the build (HelloFS has OnOpenHandle() but not OnReleaseHandle(), and it doesn't need OnReleaseHandle() either). * src/MonoFuseHelper/mfh.c: Help implement new OnReadDirectory() interface; add mfh_invoke_filler() helper method. * example/HelloFS/HelloFS.cs, example/RedirectFS/RedirectFS.cs, * example/RedirectFS/RedirectFS-FH.cs: Implement updated OnReadDirectory() interface. (Using iterators for OnReadDirectory is cool; especially check out the new RedirectFS-FH.cs implementation.) 2006-09-07 Jonathan Pryor <jonpryor@vt.edu> * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: - Add initial validation for method overriding -- some methods come in sets. For example, if OnOpenDirectory is overridden, OnCloseDirectory() should be as well (to ensure that any handles are closed if desired). Perform such sanity checking. - Correct GetOperations() so that the methods it finds via Reflection actually override the methods it thinks are being overridden. 2006-09-07 Jonathan Pryor <jonpryor@vt.edu> * example/HelloFS/HelloFS.cs: Update help text to show FUSE options. * example/RedirectFS/RedirectFS.cs, example/RedirectFS/RedirectFS-FH.cs: Update help text to show FUSE options. Alter command line arguments to be "program mountpoint basedir" (instead of "program basedir mountpoint") so that it matches the FUSE-generated help text. * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Add ShowFuseHelp static method to display FUSE help options to stderr. * src/MonoFuseHelper/mfh.c: Add mfh_show_fuse_help() helper. 2006-09-07 Jonathan Pryor <jonpryor@vt.edu> * configure.in: Generate Makefile for new directory example/RedirectFS. * src/Mono.Fuse/MapAttribute.cs: Update to latest mono-tools version. * src/Mono.Fuse/create-native-map.exe: Update to latest mono-tools version (removes support for MapAttribute.NativeSymbolPrefix, as this is no longer useful since MonoPosixHelper doesn't have a public API). * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: - Rename OpenedPathInfo.FileHandle to OpenedPathInfo.Handle (as the handle can be used by both files & directories). - Change ReadSymbolicLinkCb/OnReadSymbolicLink() as Mono can't pass a StringBuilder from native to managed code (it's a managed->native construct), so use a workable alternative. The new ``OnReadSymbolicLink(string path, out string target)'' prototype is also simpler for subclasses. - Native code can't pass an OpenedPathInfo into managed code via the delegates, as the delegates need to modify OpenedPathInfo.Handle and have this change propogate back to native code. Ideally, this would be fixed by making the delegates have an "[In, Out] OpenedPathInfo info" parameter (instead of the current "IntPtr" + manual marshal approach), but this causes Mono to die -- bugzilla 79298. This is now fixed, but only in HEAD, so we need the ugly workaround for 1.1.13.x support. - Add support for parsing the `-f' FUSE argument (use foreground operation; ignored, as we can only support foreground operation). - Don't throw Exception if MountPoint can't be mounted or mfh_fuse_new fails, throw a NotSupportedException. (Perhaps I should use a different type?) - Remove some Console.WriteLine()s. * src/MonoFuseHelper/Makefile.am: $(buildlibdir)/libMonoFuseHelper.so should be updated when its sources are updated. * src/MonoFuseHelper/mfh.c: - Add Mono_Fuse_FromOpenedPathInfo and Mono_Fuse_ToOpenedPathInfo (for struct fuse_file_info conversion), so it can be invoked by Mono.Fuse.dll. - Remove support for fuse_file_info->OpenedPathInfo conversion from MonoFuseHelper, this must now be done in managed code (see #79298). - mfh_readdir: Check return value of `filler' method to check for errors. * example/Makefile.am: Add new directory RedirectFS. * example/RedirectFS/Makefile.am: Added; build RedirectFS programs. * example/RedirectFS/RedirectFS.cs: Added; FS which forwards ("redirects") all FileSystem operations to the underlying filesystem. * example/RedirectFS/redirectfs.in: Added; runs RedirectFS.exe. Syntax: redirectfs BASEDIR MOUNT-POINT e.g. ./redirects /tmp t * example/RedirectFS/RedirectFS-FH.cs: Added; FS which forwards ("redirects") all FileSystem operations to the underlying filesystem. This uses OpenedPathInfo.Handle to track file & directory handles instead of re-opening files & directories all the time (compare to RedirectFS.cs). * example/RedirectFS/redirectfs-fh.in: Added; runs RedirectFS-FH.exe. Syntax: redirectfs-fh BASEDIR MOUNT-POINT e.g. ./redirects-fh /tmp t 2006-09-05 Jonathan Pryor <jonpryor@vt.edu> * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Mass API renaming for consistency. - s/OpenedFileInfo/OpenedPathInfo/g (for consistency with method naming convention, below, as it's used with both files & directories). - Remove FileSystemOperationContext.PrivateData (it's used internally). - Rename properties: s/EnableDebugOutput/EnableFuseDebugOutput/. - Add MultiThreaded property (default true), remove StartMultithreaded() method. Start() checks the MultiThreaded property and calls the appropriate FUSE method for (non-) multithreaded use. - Make OpenedPathInfo parameter 2nd parameter instead of the (variable) last parameter (so that `out' parameters can consistently be the last parameter and paramater placement is consistent). - Change method names for consistency, ease understanding, and help the impending documentation effort to include one of the following words: - Directory: Method deals with directories and not files. - OnCreateDirectory(), OnRemoveDirectory(), OnOpenDirectory(), OnReadDirectory(), OnCloseDirectory(), OnSynchronizeDirectory(). - File: Method deals with files and not directories. - OnCreateSpecialFile(), OnRemoveFile(), OnTruncateFile(). - FileSystem: Method deals with the file system as a whole. - OnGetFileSystemStatus(). - Link: Method deals with actual links (symbolic & hard links) - OnCreateHardLink(), OnCreateSymbolicLink(), OnReadSymbolicLink(). - Handle: Method deals with a "handle" to an opened file. - OnCreateHandle(), OnOpenHandle(), OnReadHandle(), OnWriteHandle(), OnFlushHandle(), OnReleaseHandle(), OnSynchronizeHandle(), OnTruncateHandle(), OnGetHandleStatus(). - Path: Method works on files and directories. - OnAccessPath(), OnGetPathStatus(), OnRenamePath(), OnChangePathPermissions(), OnChangePathOwner(), OnChangePathTimes(), OnGetPathExtendedAttributes(), OnListPathExtendedAttributes(), OnSetPathExtendedAttributes(), OnRemovePathExtendedAttribute(). * src/MonoFuseHelper/mfh.c: Deal with s/OpenedFileInfo/OpenedPathInfo/g. * example/HelloFS/HelloFS.cs: Deal with FileSystem method name changes. 2006-09-03 Jonathan Pryor <jonpryor@vt.edu> * COPYING: Specify license as MIT/X11. * example/HelloFS/HelloFS.cs, src/Mono.Fuse/FileSystem.cs, src/MonoFuseHelper/mfh.c, src/MonoFuseHelper/mph.c: Add license. 2006-09-01 Jonathan Pryor <jonpryor@vt.edu> * README: Add note about using fusermount to unmount FUSE filesystems. 2006-09-01 Jonathan Pryor <jonpryor@vt.edu> * configure.in: Set required Mono version is 1.1.13 (maybe could be lowered? No idea); add check for presence of Mono_Posix_ToStat in MonoPosixHelper -- if found, then we should have the new Mono.Unix.Native.NativeConvert.Copy methods, otherwise we need to roll our own equivalents. This allows portability to "down-level" mono versions. * src/Mono.Fuse/create-native-map.exe: Update; this version doesn't skip prototypes for structs within a different assembly, it generates struct declarations for all structs referenced (needed to get struct decls for Stat, Statvfs, etc.) * src/Mono.Fuse/Makefile.am: Add --rename-member arguments to create-native-map call so Stat can be used properly. * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Only use NativeConvert.Copy methods if HAVE_MONO_UNIX_NATIVE_COPY_FUNCS is defined, otherwise use the MonoFuseHelper internal methods. * src/MonoFuseHelper/Makefile.am: Add mph.c to the build. * src/MonoFuseHelper/mph.c: Added; structure copy functions from MonoPosixHelper for copying Stat, Statvfs, & Utimbuf between managed & native code. 2006-09-01 Jonathan Pryor <jonpryor@vt.edu> * README: Add comments about hellofs command-line arguments, capturing trace messages, and FUSE performance timing. * example/HelloFS/hellofs.in: Modify setting of LD_LIBRARY_PATH so that it retains the existing $LD_LIBRARY_PATH value. Remove -odebug parameter. If you want "full" trace output, set MONO_TRACE_LISTENER for the managed trace output, and add -odebug for FUSE trace output, e.g. MONO_TRACE_LISTENER=Console.Out:### ./hellofs -odebug mount-point 2006-08-31 Jonathan Pryor <jonpryor@vt.edu> * src/Mono.Fuse/Makefile.am: Remove dependency on external create-native-map.exe and a public Mono.Unix.Native.MapAttribute (as the latter will no longer be public). Add `update-map-source' target which uses pkg-config to copy the "reference" MapAttribute.cs & create-native-map.exe programs from their installed locations. * src/Mono.Fuse/create-native-map.exe, src/Mono.Fuse/MapAttribute.cs: Added; cached versions of create-native-map.exe & MapAttribute.cs as provided by pkg-config and the create-native-map.pc file. 2006-08-31 Jonathan Pryor <jonpryor@vt.edu> * configure.in: Remove use of mono-posix-helper.pc, and use glib-2.0 instead. * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Change the delegates so that they use only native types, not managed types. Change all of the _On* methods to do the native->managed conversion for parameters and the return value (depends upon addition of Mono.Unix.Native.NativConvert.Copy() methods to perform structure conversion). Make OpenedFileInfo.flags internal, so that FileSystem can convert the value when necessary, as MonoFuseHelper can't do the enum convert. * src/MonoFuseHelper/Makefile.am: Remove use of MPH, and add GLIB flags. * src/MonoFuseHelper/mfh.c: Remove use of MonoPosixHelper functions (as Mono.Fuse.FileSystem does the type conversions now). Don't copy-out OpenedFileInfo.flags, as this enum must be converted in managed, and I don't see much point in having another conversion on exit when I can just skip the copy-out (thus preserving the original value). 2006-08-31 Jonathan Pryor <jonpryor@vt.edu> * example/HelloFS/HelloFS.cs: Make creation of data_im_str thread-safe, so that it's only created once and reading threads don't see an intermediate state. 2006-08-28 Jonathan Pryor <jonpryor@vt.edu> * example/HelloFS/HelloFS.cs: Rename the ``data'' file to ``data.im'' (this is a text file with 100MB of data), and replace ``data'' with a file which computes its content at runtime (a time/space tradeoff). The ``data.im'' file isn't available by default; pass --data.im-in-memory to make it available (note that this file will be created in-memory the first time its content is accessed). Add command-line argument parsing. Use Trace.WriteLine instead of Console.WriteLine. * lib/pkgconfig/mono-fuse.pc.in: Use @libdir@ instead of ${prefix}/@reloc_libdir@. I'm not sure what @reloc_libdir@ is supposed to be, and it isn't currently expanded anyway. * src/Mono.Fuse/Makefile.am: Add the -d:TRACE define. Add --public-macro and --impl-header to the create-native-map call (create-native-map no longer supports MapHeaderAttribute). * src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Remove use of Mono.Unix.Native.MapHeaderAttribute (use create-native-map arguments instead). Add public argument parsing support (so that HelloFS can have its own command-line args in addition to the FUSE args). Use Trace instead of Console for trace messages. Add a `catch(Exception)' handler so we can trace exception messages (helps debugging). 2006-08-25 Jonathan Pryor <jonpryor@vt.edu> * src/MonoFuseHelper/mfh.c: Remove debug printf statements. 2006-08-24 Jonathan Pryor <jonpryor@vt.edu> * Makefile.am: Build the `lib' directory. * lib/mono-fuse/Makefile.am: Don't install anything; src/Mono.Fuse/Makefile.am already handles Mono.Fuse.dll installation. 2006-08-24 Jonathan Pryor <jonpryor@vt.edu> * configure.in: Don't forget to generate lib/mono-fuse/Makefile! 2006-08-24 Jonathan Pryor <jonpryor@vt.edu> * lib/Makefile.am: Build the mono-fuse directory as well * lib/mono-fuse/Makefile.am: Added; installs Mono.Fuse.dll. 2006-08-24 Jonathan Pryor <jonpryor@vt.edu> * NEWS: Added * configure.in: Use AM_PROG_LIBTOOL, not AC_PROG_LIBTOOL, to satisfy autogen.sh's checking. 2006-08-24 Jonathan Pryor <jonpryor@vt.edu> * AUTHORS, COPYING, README: Added (for autoconf) * autogen.sh, configure.in, Makefile.am, example/Makefile.am, example/HelloFS/Makefile.am, lib/Makefile.am, lib/pkgconfig/Makefile.am, src/Makefile.am, src/Mono.Fuse/Makefile.am, src/MonoFuseHelper/Makefile.am: Added (auto* build system files). * lib/map.c, lib/map.h: Removed (generated by the build; no need to keep these under version control). * lib/mfh.c: Renamed to src/MonoFuseHelper/mfh.c * lib/mph.c: Removed. (Functions added to MonoPosixHelper library.) * lib/mono-fuse/HelloFS.cs: Renamed to example/HelloFS/HelloFS.cs * example/HelloFS/hellofs.in: Added; template for `hellofs' program. * lib/mono-fuse/MakeMap.Test.cs, lib/mono-fuse/make-map.cs, lib/mono-fuse/test.c.ref, lib/mono-fuse/test.cs.ref, lib/mono-fuse/test.h.ref, lib/mono-fuse/test.xml.ref: Removed. make-map.exe renamed to create-native-map.exe, moved into mcs svn module under mcs/tools/create-native-map. * lib/pkgconfig/mono-fuse.pc.in: Remove Requires line (managed code doesn't depend on glib-2.0 or mono), add Mono.Posix.dll to Libs: line. * lib/mono-fuse/FileSystem.cs: renamed to src/Mono.Fuse/Mono.Fuse/FileSystem.cs 2006-08-21 Jonathan Pryor <jonpryor@vt.edu> * lib/map.c, lib/map.h: Flush (current make-map output for Mono.Fuse.dll). * lib/mono-fuse/MakeMap.Test.cs: Add additional tests for copying nested structures. * lib/mono-fuse/make-map.cs: Add support for copying nested structures. * lib/mono-fuse/test.c.ref, lib/mono-fuse/test.h.ref: Flush. 2006-08-21 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/MakeMap.Test.cs: Add enum (to test enum conversion code), class w/o namespace (generated NRE within make-map). * lib/mono-fuse/make-map.cs: - s/ExportPrefix/NativeSymbolPrefix/g (current Mono.Posix.dll naming); - check for t.Namespace==null before looking using Configuration.NamespaceRenames (Dictionary`2 doesn't like null keys); - HeaderFileGenerator needs to know about member renames (so it uses the renamed member in conversion code); - Clean up enumeration generation for readablility. - Remove dependency on <mono/posix/limits.h> (include macros within file with a _cnm prefix). * lib/mono-fuse/test.c.ref, lib/mono-fuse/test.cs.ref, lib/mono-fuse/test.h.ref, lib/mono-fuse/test.xml.ref: Flush. 2006-08-21 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/make-map.cs: Remove debug statements. 2006-08-21 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/Makefile: Add --library when generating ../map.c, ../map.h. * lib/mono-fuse/make-map.cs: Use Mono.Unix.Native.MapAttribute.ExportPrefix to get the namespace of a member, in addition to --rename-namespace. This is necessary for easier cross-assembly namespace renames -- Mono.Posix.dll uses a Mono_Posix C namespace, but the default algorithm would be a Mono_Unix_Native prefix. Thus, two choices for correct behavior: use MapAttribute.ExportPrefix within Mono.Posix.dll, allowing all consumers to get the correct prefix By Default (It Just Works), or require that all consumers add --rename-namespace arguments (more clunky, more difficult to diagnose, not as "version proof"). 2006-08-20 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/make-map.cs: Add new arguments: --autoconf-member, --exclude-native-symbol, --library, --rename-member, --rename-namespace. These are to remove the necessity of Mono.Unix.Native.MapAttribute.Optional (--autoconf-member) and MapAttribute.ExportPrefix (--rename-namespace), while adding much needed support for the DllImport libraries to generate prototypes for (--library), symbol exclusion (to remove Mono_Posix_Stdlib_snprintf; --exclude-native-symbol), and member renaming (curse you glibc making st_atime a macro! See --rename-member). * lib/mono-fuse/Makefile: Use new make-map.exe arguments to test their behavior when building test.c/test.h. * lib/mono-fuse/MakeMap.Test.cs: Add types/members to test new make-map.cs arguments. * lib/mono-fuse/test.c.ref, lib/mono-fuse/test.h.ref: Flush (new expected 2006-08-20 Jonathan Pryor <jonpryor@vt.edu> * lib/map.c, lib/map.h: Flush. * lib/mono-fuse/FileSystem.cs: Use Mono.Unix.Native.MapHeaderAttribute instead of Mono.Unix.Native.HeaderAttribute. 2006-08-17 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/make-map.cs: Add a newline after the implementation macro section. 2006-08-17 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/MakeMap.Test.cs: Use of MapHeaderAttribute.ImplementationMacro and MapHeaderAttribute.ImplementationIncludeFile. * lib/mono-fuse/make-map.cs: Add support for MapHeaderAttribute.Implementation* properties within the .c file. * lib/mono-fuse/test.c.ref, lib/mono-fuse/test.h.ref: Sync with current make-map.exe output. 2006-08-16 Jonathan Pryor <jonpryor@vt.edu> * lib/map.c, lib.map.h: Flush (new formatting due to make-map changes * lib/mono-fuse/MakeMap.Test.cs: Use MapHeaderAttribute; remove [Map("struct qux")] from Qux (can't compile this). * lib/mono-fuse/Makefile: Improve dependencies to ensure things are rebuilt when needed; add libtest.so target (to make sure test.c is valid C). * lib/mono-fuse/make-map.cs: Add support for Mono.Unix.Native.MapHeaderAttribute; formatting improvements. * lib/mono-fuse/test.c.ref, lib/mono-fuse/test.h.ref: Flush. 2006-08-14 Jonathan Pryor <jonpryor@vt.edu> API Cleanup -- return values should only be for reporting errors, not for reporting additional information (e.g. read(2) & write(2) overload the return value; we don't want to do that, as it's inconsistent). * lib/map.h: Sync with mono-fuse/FileSystem.cs * lib/mfh.c (mfh_read, mfh_write, mfh_setxattr, mfh_listxattr): Add additional argument to get number bytes read/written from buffer. * lib/mono-fuse/FileSystem.cs: Change ReadCb(), WriteCb(), GetExtendedAttributesCb(), ListExtendedAttributesCb() so that return type is Errno (consistency) and an extra `out' parameter is added to hold the number of bytes read/written from the buffer. * lib/mono-fuse/HelloFS.cs: Sync with latest API. 2006-08-14 Jonathan Pryor <jonpryor@vt.edu> Re-enable bounds checking in struct/class conversion functions; API cleanup. * lib/map.h: Sync with FileSystem.cs * lib/mph.c: Add more conversion functions. * lib/mfh.c: Fully implement all forwarding functions; remove some warnings; fix segfault in _free_argv(). * lib/mono-fuse/FileSystem.cs: Use properties, not public fields; add OpenReadOnly, OpenWriteOnly, OpenReadWrite helpers (to remove ugly ((OpenFlags) ((int) fi.Flags & 3)) == OpenFlags.O_RDONLY sillyness). Stat and Statvfs are `out', not `ref'. Correct marshaling of byte[]s within delegates, as some are `const' and some aren't (so no need to copy-in or copy-out if not appropriate). Use mfh_fuse_ prefix instead of mfh_. * lib/mono-fuse/HelloFS.cs: Use latest API. 2006-08-09 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/FileSystem.cs: - Remove DestroyCb() delegate, OnDestroy() method. It's not needed, as FileSystem.Dispose() cleans up opsp, and OnDestroy() was only called from fuse_destroy(), which is also invoked from Dispose(). - Add wrappers for all protected virtual methods to act as a "backstop" for exceptions. We cannot allow exceptions to enter native code from managed code (as this would likely kill the process, with Mono's exception handler "cleaning up" the native callstack, which can't make FUSE happy). If an exception is emitted, EIO is returned to FUSE. These methods can also be used to remove unnecessary parameters, such as the `WriteCb' `size' parameter (which becomes buf.Length). * lib/mono-fuse/HelloFS.cs: Add a `data' file, which contains 96MB of plain text data (useful for timing analysis to see the overhead from various forms of marshaling). Update to use new OnRead() parameters. 2006-08-08 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/FileSystem.cs: Correct FUSE argument parsing (bad regex used). GetFuseArgs() needs to prepend the executable name for proper FUSE operation. We're now able to start an app and pass `-d' to get FUSE debugging messages. 2006-08-08 Jonathan Pryor <jonpryor@vt.edu> Flush. 2006-08-08 Jonathan Pryor <jonpryor@vt.edu> Get things (somewhat) working -- we're now able to read a file contents through FUSE, but we're not able to opendir/readdir. :-/ * lib/Makefile: Add -g, and libMonoFuseHelper.so should link to libMonoPosixHelper.so. * lib/map.h: Synchronize with FileSystem.cs * lib/mfh.c: Disable some functions so that I don't need to write as many stub functions in lib/mph.c; fix mfh_read, mfh_write (return value nonsense; this needs to be fixed later). * lib/mono-fuse/FileSystem.cs: Fix prototypes of ReadCb and WriteCb delegates, as we need [MarshalAs] declarations on the byte[] arrays so that the marshaler knows what to do with them. Update all byte[] usage within delegates. Mono doesn't like ``[Out] out string[] paths'' (as used in ReadDirectoryCb()), so replace with `out IntPtr paths' and manually marshal the string[]. * lib/mono-fuse/Makefile: Use global Mono.Posix.dll file, not local copy; * add `hellofs' target to run HelloFS.exe with LD_LIBRARY_PATH set. * lib/mono-fuse/HelloFS.cs: Add C.WL helpers (for tracing); fix OnOpen() so that we can read a file (it's O_RDONLY check was wrong); print out parsed command line arguments (showing that FileSystem.Parse() is broken -- that's next to fix). * lib/mono-fuse/make-map.cs: Don't insert types into `structs' table when a type with [Map] is found, use RecordTypes() instead (so that we record all nested types as well). Warnings should be prefixed with "warning: ". Don't always generate Namespace_ToType/Namespace_FromType declarations, but only if MapAttribute.NativeType was specified. Allows for [Map] on structures that need to be exported from an assembly but aren't used within shared methods. * lib/mph.c: Let this compile. 2006-08-05 Jonathan Pryor <jonpryor@vt.edu> Include all correct .o files into libMonoFuseHelper.so Use correct return types in fuse_* methods. 2006-08-05 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/FileSystem.cs: Remove [Map] from Mono.Fuse.Operations, as it cannot be assigned to `struct fuse_operations'. Add necessary DllImport's. * lib/mono-fuse/HelloFS.cs: Fix to match new OnReadDirectory() prototype. 2006-08-05 Jonathan Pryor <jonpryor@vt.edu> * lib/mfh.c: Add implementation of mfh_readdir(). 2006-08-05 Jonathan Pryor <jonpryor@vt.edu> * lib/mono-fuse/FileSystem.cs: Add necessary Header attribute so that map.c/map.h are generated sanely. 2006-08-05 Jonathan Pryor <jonpryor@vt.edu> Add unit test for make-map.exe, check & check-update targets to Makefile, and expected output for unit tests. 2006-08-02 Jonathan Pryor <jonpryor@vt.edu> Provide implementations for most of the mfh_* functions. Remove backup files. 2006-08-02 Jonathan Pryor <jonpryor@vt.edu> Build libMonoFuseHelper.so. 2006-08-01 Jonathan Pryor <jonpryor@vt.edu> Add files for libMonoFuseHelper.so and Makefile to build libMonoFuseHelper.so. 2006-08-01 Jonathan Pryor <jonpryor@vt.edu> Current Mono.Fuse managed code implementation. 2006-07-22 Jonathan Pryor <jonpryor@vt.edu> Initial Import.
Generated by dwww version 1.15 on Wed Jun 26 20:37:54 CEST 2024.