+2010-04-15 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixSignal.cs: Change the native WaitAny() method to accept a
+ Mono_Posix_RuntimeIsShuttingDown delegate, so that we can prevent an
+ infinite loop while shutting the process down. Fixes #592981.
+
+2009-03-23 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixDriveInfo.cs: UnixDriveInfo.AvailableFreeSpace needs to return
+ stat.f_bavail * stat.f_frsize, NOT f_bavail*f_bsize, as on some
+ platforms (Solaris) bsize is the preferred block I/O size, while
+ f_frsize is the *actual* filesystem block size. Thus, to get proper
+ disk under Solaris, we need to s/f_bsize/f_frsize/g.
+
+2009-02-20 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixSignal.cs: Add a pipecnt member to UnixSignal.SignalIinfo.
+ Patch thanks to tim.jenks@realtimeworlds.com.
+
+2009-02-09 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixGroupInfo.cs (GetMembers): Skip group members which aren't valid
+ users on the system (thus removing a possible exception). Patch
+ thanks to Daniel Peñalba.
+
+2009-01-08 Rodrigo Kumpera <rkumpera@novell.com>
+
+ * UnixSignal.cs: Check if realtime signal install failed with
+ EADDRINUSE due to the signal been used by outside of Mono.Posix.
+
+2008-12-19 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixSignal.cs: Allow RealTimeSignums to be used in addition to
+ Signum, so that real time signals can be used. Patch thanks to
+ tim.jenks@realtimeworlds.com.
+
+2008-11-04 Andrés G. Aragoneses <aaragoneses@novell.com>
+
+ * UnixStream.cs: Do not check offset against int.MaxValue
+ (System.IO doesn't have it). Reviewed by Jonathan Pryor.
+ Bug reported by Siro Blanco <siro.blanco@gmail.com>.
+
+2008-11-03 Miguel de Icaza <miguel@novell.com>
+
+ * UnixClient.cs (Client): Make this property public when using the
+ Mono 2.0 profile, based on a discussion with Vlad Hociota and Joe
+ Shaw.
+
+2008-02-11 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixSignal.cs: Improve argument checking to match docs.
+
+2008-02-08 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixSignal.cs: UnixSignal.WaitAny() should have the same return type as
+ WaitHandle.WaitAny(). Oops.
+
+2008-02-08 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixSignal.cs: Modification of Info->count should be thread safe.
+
+2008-01-28 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixSignal.cs: Added; Polling and blocking based Unix signal mechanism.
+ http://lists.ximian.com/pipermail/mono-devel-list/2008-January/026501.html
+
+2008-01-22 Sebastien Pouliot <sebastien@ximian.com>
+
+ * UnixPipes.cs: Fix Equals to avoid NRE (and return false if object
+ is null). Found using Gendarme.
+
+2007-12-17 Jonathan Pryor <jpryor@novell.com>
+
+ * UnixEnvironment.cs: Update MachineName property accesor to use uname(2)
+ instead of gethostname(2), as gethostname(2) truncates the machine name to
+ 16 characters, while uname(2) doesn't.
+
+2007-12-17 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixDirectoryInfo.cs: Fix Parent property so that it properly handles
+ returning the parent of "/". UnixPath.GetDirectoryName() returns "" on
+ "error", not null; act accordingly.
+ * UnixDriveInfo.cs: Fix IsReady property so that it returns `false' if no
+ media is mounted. The presence of media is determined by comparing the
+ Statvfs.f_fsid value of the current and parent directories; if they
+ differ, it is assumed that media is present, and thus the directory is
+ ready. If they're identical, then media isn't present, and the directory
+ isn't ready.
+ * UnixPath.cs: UnixPath.GetDirectoryName("/mnt") should return "/", not "".
+
+2007-09-13 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixStream.cs: Don't read/write if the buffer has no data. Fixes #82836.
+
+2006-10-24 Jonathan Pryor <jonpryor@vt.edu>
+
+ * MapAttribute.cs: Moved to ../Mono.Unix.Native/MapAttribute.cs.
+
+2006-08-21 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixStream.cs: .Close() shouldn't close(2) the fd unless owner==true;
+ .Flush() should be a no-op (as System.IO.Stream.Flush doesn't gaurantee
+ that .Flush() actually flush to disk, and .Flush() slows things down a
+ lot); see: http://joeshaw.org/2006/08/21/415.
+
+2006-08-16 Alp Toker <alp@atoker.com>
+
+ * UnixEndPoint.cs:
+ * AbstractUnixEndPoint.cs: Second half of the fix for #79084.
+ Add support for the abstract namespace, and update existing file-based
+ UnixEndPoint (de)serialization to reflect changes in the runtime.
+
+2006-07-02 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixSymbolicLinkInfo.cs: Oops. CreateSymbolicLinkTo() should create
+ FullPath, not OriginalName. This was fixed in one overload in January,
+ but I missed an overload. :-/
+
+2006-07-02 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixPath.cs: Follow .NET's System.IO.Path.Combine() behavior, and "reset"
+ the generated path if any argument beings with a path root --
+ UnixPath.Combine("/a", "/b") should return "/b", not "/a/b". Fixes #78580.
+
+2006-04-21 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixFileSystemInfo.cs: rename Create() to GetFileSystemEntry(), and make
+ it public (so that other's don't need to worry about the
+ Syscall.lstat()-and-switch to create a UnixFileSystemInfo instance).
+ * UnixDirectoryInfo.cs, UnixSymbolicLinkInfo.cs:
+ s/Create/GetFileSystemEntry/g (to cope with above change).
+
+2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * UnixEndPoint.cs: added GetHashCode/Equals.
+
+2006-03-06 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixDriveInfo.cs: Remove requirement that mountPoints be avaible via
+ getfsfile(3). This isn't always the case -- in particular drives mounted
+ via HAL and other mechanisms won't be listed in /etc/fstab, and thus won't
+ be returned via getfsfile(3). If getfsfile(3) fails, then we "guess" on
+ the drive format and volume label.
+ * UnixStream.cs: RefreshStat() should assert that the instance hasn't been
+ disposed.
+ * UnixEnvironment.cs (GetConfigurationValue, GetConfigurationString): Fix
+ error checking.
+
+2006-02-23 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixFileSystemInfo.cs: Create() should return a UnixFileInfo if the file
+ doesn't exist. This allows callers to use UnixFileInfo.Exists to see if
+ the file exists, and behaves more rationally e.g. if the directory
+ contents changes while calling UnixDirectoryInfo.GetFileSystemEntries(),
+ we'll get a UnixFileInfo entry that doesn't exist instead of an exception
+ terminating the entire array creation.
+ * UnixSymbolicLinkInfo.cs: [Obsolete] the Contents property -- this property
+ *always* creates a new object if HasContents=true, and since a
+ UnixFileSystemInfo instance is (104+2*(sizeof(void*))+1) bytes (~113 bytes
+ on 32-bit platforms), we don't want to create these frequently. Add a
+ GetContents() method as the replacement, to make it (slightly) more
+ explicit that information won't be cached (and thus should be cached by
+ the caller, if appropriate). GetContents() throws an exception if
+ HasContents=false instead of returning null; this change brings the
+ implementation in line with the documentation.
+
+2006-02-18 Alp Toker <alp@atoker.com>
+
+ * UnixEndPoint.cs: Avoid truncation of last two bytes of SocketAddress
+ string
+
+2006-01-26 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixMarshal.cs: Check for null arguments in PtrToString() and
+ PtrToStringArray().
+
+2006-01-24 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixMarshal.cs (StringToHeap): Return IntPtr.Zero if `s' is null.
+
+2006-01-24 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixMarshal.cs (StringToHeap): Check for null arguments.
+
+2006-01-20 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixDriveInfo.cs: Properties should generate an InvalidOperationException,
+ not an IOException. Users can use IsReady to avoid exception generation.
+ * UnixIOException.cs: Create a custom message that embeds the error name
+ within the text, e.g. "Permission denied [EACCES]."
+ * UnixSymbolicLinkInfo.cs: This really should create the file FullPath, not
+ OriginalPath. Created files shouldn't ever be relative to the current
+ working directory, as this can change at any time.
+
+2006-01-15 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixUserInfo.cs: The UnixUserInfo(Native.Passwd) constructor and
+ ToPasswd() should clone the underlying Native.Passwd, so
+ that it doesn't get changed from underneath it.
+ * UnixGroupInfo.cs: The UnixGroupInfo(Native.Group) constructor should also
+ clone the provided Native.Group instance.
+
+2006-01-14 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixGroupInfo.cs: ToGroup() should clone the underlying Native.Group, so
+ that it doesn't get changed from underneath it.
+
+2006-01-13 Jonathan Pryor <jonpryor@vt.edu>
+
+ * Catalog.cs, UnixMarshal.cs: Throw `UnixIOException(Native.Errno.ENOMEM)`
+ instead of System.OutOfMemoryException. OOME should be reserved for use
+ by the CLR (according to FxDG).
+
+2006-01-12 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixPath.cs: Add ReadLink() and TryReadLink() methods.
+
+2006-01-12 Miguel de Icaza <miguel@novell.com>
+
+ * PeerCred.cs: Do not define PeerCredData as this is a structure
+ known to the runtime. Instead use the Mono.Posix.PeerCredData
+ internal class.
+
+2006-01-10 Jonathan Pryor <jonpryor@vt.edu>
+
+ * Catalog.cs: Don't use
+ System.Runtime.InteropServices.Marshal.StringToHGlobalAuto(), use
+ UnixMarshal.StringToHeap(). We require that the converted string be in
+ UTF-8 format, but .NET's Marshal.StringToHGlobalAuto converts to the local
+ code page, *not* UTF-8 (Mono's does UTF-8). UnixMarshal.StringToHeap
+ *always* does UTF-8, so use that instead.
+
+2006-01-09 Jonathan Pryor <jonpryor@vt.edu>
+
+ * FileTypes.cs: Remove [Flags] attribute -- these aren't bitfield values.
+ * UnixFileSystemInfo.cs: Fix Is<<Type>> properties -- before it would
+ erroneously say that a symlink was a character device. (This is because
+ device values are *not* [Flags] values, but code was assuming they were.)
+ * UnixGroupInfo.cs: Clone the string[] returned from GetMemberNames(). We
+ don't want callers to change the underlying list.
+
+2006-01-07 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixMarshal.cs: *Actually* put things in alphabetical order (like the
+ comment says). I can speak english, really I can.
+
+2006-01-06 Jonathan Pryor <jonpryor@vt.edu>
+
+ * Catalog.cs: s/libintl/intl/g, since intl.dll is used by GTK+ on Windows,
+ not libintl.dll (according to
+ http://www.gimp.org/~tml/gimp/win32/downloads.html).
+
+2006-01-03 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixMarshal.cs (CreateExceptionForError): Don't map ENOMEM to
+ System.OutOfMemoryException. OOME should be reserved for use by the CLR.
+ Return a UnixIOException instead (default behavior).
+
+2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
+
+ * StdioFileStream.cs: Shut up FxCop - add a GC.KeepAlive to
+ AssertNotDisposed().
+ * UnixClient.cs, UnixListener.cs: Use System.MarshalByRefObject as the base
+ class. These types implement IDisposable and have a finalizer, so if an
+ instance of these types were sent to another AppDomain they'd previously
+ marshal by copy, which could lead to a double release of an unmanaged
+ resource -- potential badness. Using MarshalByRefObject fixes this.
+
+2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixMarshal.cs: s/EACCESS/EACCES/g. I can't read.
+
+2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
+
+ * StdioFileStream.cs, UnixDirectoryInfo.cs, UnixEnvironment.cs,
+ UnixFileInfo.cs, UnixFileSystemInfo.cs, UnixGroupInfo.cs,
+ UnixIOException.cs, UnixMarshal.cs, UnixProcess.cs, UnixStream.cs,
+ UnixSymbolicLinkInfo.cs, UnixUserInfo.cs: Remove Obsolete API.
+ * CdeclFunction.cs, IncludeAttribute.cs, Stdlib.cs, Syscall.cs,
+ UnixConvert.cs, UnixDirectory.cs, UnixFile.cs, UnixGroup.cs,
+ UnixUser.cs: Delete.
+ * UnixPath.cs: Remove InvalidPathChars; use GetInvalidPathChars() instead.
+ * FileTypes.cs: Remove Obsolete API
+
+2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
+
+ * FileAccessPermissions.cs: Remove UserMask, GroupMask, OtherMask values.
+ * FileSpecialAttributes.cs: Remove AllAttributes member; it shouldn't be
+ public. Use UnixFileSystemInfo.AllSpecialAttributes instead.
+ * StdioFileStream.cs: Open files in binary mode, not text;
+ Fix exception message for StdioFileStream(path, mode) mode param check.
+ * UnixDirectoryInfo.cs: Add Create(FileAccessPermissions) overload; change
+ GetFileSystemEntries() to include the directory name that the files came
+ from (otherwise they're in the current working direcetory, which they
+ probably aren't).
+ * UnixFileInfo.cs: Add Create(FileAccessPermissions) overload; Add better
+ argument checking to several Open() overloads.
+ * UnixFileSystemInfo.cs: Add AllSpecialAttributes, AllFileTypes members;
+ FullPath member should invalidate instance if path changes; Change return
+ type of GetFileStatus for maintenance/better documentation; ToStat()
+ should ensure that the instance is valid first.
+ * UnixMarshal.cs: Add additional Errno values to CreateExceptionForError();
+ reformat CreateExceptionForError for maintenance.
+ * UnixPath.cs: Obsolete InvalidPathChars -- FxCop never liked it, and now I
+ know why it didn't like it (thank you Framework Design Guidelines!).
+ * UnixStream.cs: Use UnixFileSystemInfo.AllSpecialAttributes, not
+ FileSpecialAttributes.AllAttributes (which was removed).
+ * UnixSymbolicLinkInfo.cs: Change return type of GetFileStatus().
+
+2005-12-28 Jonathan Pryor <jonpryor@vt.edu>
+
+ * FileHandleOperations.cs: Check for null references.
+
+2005-12-28 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixMarshal.cs: Errno.EBADF should also trigger a ArgumentException.
+
+2005-12-27 Jonathan Pryor <jonpryor@vt.edu>
+
+ * FileHandleOperations.cs, FileTypes.cs, Stdlib.cs, Syscall.cs,
+ UnixConvert.cs, UnixDirectory.cs, UnixDirectoryInfo.cs, UnixDriveInfo.cs,
+ UnixEnvironment.cs, UnixFile.cs, UnixFileInfo.cs, UnixFileSystemInfo.cs,
+ UnixGroup.cs, UnixGroupInfo.cs, UnixIOException.cs, UnixMarshal.cs,
+ UnixPath.cs, UnixPipes.cs, UnixProcess.cs, UnixStream.cs,
+ UnixSymbolicLinkInfo.cs, UnixUser.cs, UnixUserInfo.cs: Mark to-be-removed
+ API with [Obsolete(IsError=true)] (permits compiler assistance for finding
+ obsolete code); Migrate to the Mono.Unix.Native API.
+ * StdioFileStream.cs: Add non-Obsolete overloads for SaveFilePosition &
+ RestoreFilePosition (oops). Migrate to Mono.Unix.Native API.
+
+2005-12-07 Jonathan Pryor <jonpryor@vt.edu>
+
+ * UnixMarshal.cs: Add PtrToStringUnix() -- specialized PtrToString method
+ which is significantly faster than PtrToString(p, UnixEncoding.Instance).
+ Use System.String..ctor(sbyte*, int, int, Encoding) to avoid the byte[]
+ intermediate copy -- much faster. Fix PtrToString() so that it will
+ accept an IntPtr containing 0 characters, and don't duplicate strings
+ unless necessary.
+
+2005-11-18 Jonathan Pryor <jonpryor@vt.edu>
+
+ * Catalog.cs, UnixDirectory.cs, UnixDirectoryInfo.cs, UnixDriveInfo.cs,
+ UnixEnvironment.cs, UnixFile.cs, UnixFileInfo.cs, UnixFileSystemInfo.cs,
+ UnixGroup.cs, UnixGroupInfo.cs, UnixProcess.cs, UnixSymbolicLinkInfo.cs,
+ UnixUser.cs, UnixUserInfo.cs: Change types of [Obsolete] members for
+ consistency and CLS compliance; Mono.Unix.Native type migration.
+ * FileTypes.cs: s/Special/Device/g (CharacterSpecial ==> CharacterDevice).
+ The *Special was a BSD convention, while UnixFileSystemInfo uses *Device
+ in property names, and these should be consistent. Changing the enum is
+ simpler than changing the UnixFileSystemInfo properties.
+ * UnixIOException.cs: s/error/errno/g (FxCop suggestion); change type of
+ ErrorCode property.
+ * UnixMarshal.cs: s/error/errno/g (FxCop suggestion); Mono.Unix.Native
+ type migration.
+
2005-11-08 Jonathan Pryor <jonpryor@vt.edu>
* Catalog.cs: Exception safety improvements (don't let memory leak!); check