This repository has been archived on 2025-05-24. You can view files and clone it, but cannot push or open issues or pull requests.
Files
Mono.Fuse.NETStandard/ChangeLog
2018-01-05 02:00:57 +07:00

747 lines
36 KiB
Plaintext

2018-01-05 Alexey Kolpakov <mail@alhimik.me>
Port to .Net Standard 2
2016-06-08 Justin Needham <jneedhamspkt@gmail.com>
Migrate from gmcs to mcs for Mono 4.*
* configure.ac: gmcs --> mcs
* doc/en/Mono.Fuse/FileSystem.xml : gmcs --> mcs
2008-04-01 Jonathan Pryor <jonpryor@vt.edu>
* configure.in: Error if `mono' can't be found (not continue), and continue
if `monodoc' can't be found (not error). Simplify.
2008-01-30 Jonathan Pryor <jonpryor@vt.edu>
* configure.in: Bump version numbers; genreate mono-fuse.spec.
* Makefile.am: Add `rpm', `prepare-release' targets.
* example/HelloFS/Makefile.am, example/RedirectFS/Makefile.am,
lib/mono-fuse/Makefile.am, src/Mono.Fuse/Makefile.am,
src/MonoFuseHelper/Makefile.am: Enhance so `make distcheck works`.
* .gitignore, doc/.gitignore, example/HelloFS/.gitignore,
example/RedirectFS/.gitignore, lib/.gitignore, lib/mono-fuse/.gitignore,
lib/pkgconfig/.gitignore, src/Mono.Fuse/.gitignore,
src/MonoFuseHelper/.gitignore: Added; ignore generated files.
* INSTALL: Added; install information.
* src/Mono.Fuse/AssemblyInfo.cs.in: Added; contains assembly version info.
* mono-fuse.spec.in: Added; RPM .spec file; thanks to
Jay Miller <jnmiller@cryptofreak.org> for the original version.
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.