[corlib] Improve CancellationTokenSource test
[mono.git] / mcs / class / Mono.Posix / Mono.Unix / ChangeLog
index 481cce8820cde1c217c90355cc75a8253238a77c..d1b975c6ce56844a9ea27df526710f7172907bc8 100644 (file)
@@ -1,3 +1,760 @@
+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
+         for errors with bindtextdomain(3) et. al.
+
+2005-11-08  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixPipes.cs: Provide Equals, GetHashCode, and operator==/operator!= to
+         conform with FxCop guidelines for structures.
+
+2005-11-03  Jonathan Pryor <jonpryor@vt.edu>
+
+       * FileTypes.cs, UnixFileSystemInfo.cs: s/FIFO/Fifo/ to follow .NET
+         naming conventions (as reported by FxCop).
+
+2005-11-01  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixDirectoryInfo.cs, UnixDriveInfo.cs, UnixEnvironment.cs, 
+         UnixFileSystemInfo.cs, UnixGroupInfo.cs, UnixProcess.cs, UnixUserInfoc.cs:
+         Obsolete statements now specify in what way the return type will change.
+       * IncludeAttribute.cs: Obsoleted.  It's an error to use it now.
+
+2005-11-01  Jonathan Pryor <jonpryor@vt.edu>
+
+       * FileAccessPattern.cs: Change enumeration names to match Robert Love's more
+         sensible names from his FileAdvise class used in Beagle
+         (UseSoon --> PreLoad, WillNotUse --> FlushCache).
+       * FileHandleOperations.cs: Added; contains AdviseFileAccessPattern()
+         (moved from UnixFile.cs).
+       * UnixDirectory.cs: Obsolete the class; use UnixDirectoryInfo instead.
+       * UnixDirectoryInfo.cs: Add GetCurrentDirectory(), SetCurrentDirectory().
+       * UnixFile.cs: Obsolete the class; use UnixFileInfo, FileHandleOperations,
+         or UnixPipes instead.
+       * UnixFileSystemInfo.cs: Add ToStat() method.
+       * UnixGroup.cs: Obsolete the class; use UnixGroupInfo instead.
+       * UnixGroupInfo.cs: Obsolete & Replace constructor, add GetMemberNames(),
+         GetLocalGroups().
+       * UnixPipes.cs: Added (type moved from UnixFile.cs).
+       * UnixStream.cs: AdviseFileAccessPattern() uses FileHandleOperations now.
+       * UnixSymbolicLinkInfo.cs: Implement TryReadLink() to avoid constant buffer
+         re-sizing.  Stevens states that the file size of the symlink is the number
+         of bytes needed to hold the symlink, so this should be faster.
+       * UnixUser.cs: Obsolete the class; use UnixUserInfo instead.
+       * UnixUserInfo.cs: Obsolete & Replace constructor; add useful static members
+         from UnixUser such as GetLoginName(), GetLocalUsers(), etc.
+
+2005-10-27  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixEnvironment.cs: Add RealUser, RealGroup, EffectiveUser, EffectiveGroup
+         properties; [Obsolete] necessary methods and provide replacements.
+       * UnixStream.cs: Add OwnerUser(Id), OwnerGroup(Id) properties; 
+         improve Stat handling.
+
+2005-10-26  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixEncoding.cs: Change EscapeByte to 0x0000, as suggested by Michal
+         Moskal.
+       * UnixPath.cs: Remove '\0' from InvalidPathChars, since U+0000 is now used
+         as the path escape character for marshaling purposes.
+
+2005-10-26  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixMarshal.cs: Obsolete heap-related methods to have a Heap suffix
+         (AllocHeap, FreeHeap, etc.), and change StringToAlloc() to be
+         StringToHeap().  This creates a stronger name association between related
+         methods.
+
+2005-10-26  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixIOException.cs: Add (string) and (string, Exception) constructors to
+         silence FxCop; re-work logic so we lookup the error string at construction
+         time and use this as the message for the base class.
+
+2005-10-25  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Stdlib.cs, Syscall.cs: Filenames need to be marshaled through the 
+         FileNameMarshaler, which will encode/decode filenames with UnixEncoding.
+       * UnixEncoding.cs: Added (copied from
+         ../../corlib/System.Text/UTF8Encoding.cs); a hack to permit handling of 
+         arbitrarily encoded filenames.  It attempts to decode a byte[] array as 
+         UTF-8, and if the decode fails it prefixes each byte with 
+         UnixEncoding.EscapeByte (\uFFFF).
+       * UnixMarshal.cs: Use UnixEncoding as the default encoding, and special-case
+         UnixEncoding to use Stdlib.strlen() for native string lengths.
+
+2005-10-21  Jonathan Pryor <jonpryor@vt.edu>
+
+       * FileAccessPattern.cs: Added
+       * UnixFile.cs, UnixStream.cs: Deprecate all the Advise* methods (lots!)
+         and replace with 6 methods which take a FileAccessPattern enum.
+
+2005-10-19  Jonathan Pryor <jonpryor@vt.edu>
+
+       * FileAccessPermissions.cs, FileSpecialAttributes.cs, FileTypes.cs: Added.
+       * UnixFileSystemInfo.cs, UnixStream.cs: Replace the old Permission property
+         with 4 new properties: Protection (for the Native.FilePermissions value),
+         FileAccessPermissions (for rwxrwxrwx info), FileSpecialAttributes (for
+         set-user-id, set-group-id, sticky), and FileTypes (directory, socket...).
+         The new enumeration types have nicer CLS-compliant names.
+
+2005-10-17  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixMarshal.cs: Fix GetIntXxBufferLength to require fewer
+         Marshal.ReadIntXx() calls; Fix PtrToString so that
+         ``"foo" == PtrToString (StringToAlloc("foo",enc),enc)'' is true for
+         "random" encodings.
+
+2005-10-17  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixFileSystemInfo.cs: Add OwnerUserId and OwnerGroupId properties.
+
+2005-10-17  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixDriveInfo.cs, UnixEnvironment.cs, UnixFile.cs, UnixFileSystemInfo.cs, 
+         UnixGroup.cs, UnixStream.cs, UnixUser.cs: Don't use SetLastError(), since
+         it's use is (1) incorrect, and (2) will be going away with the move to
+         Mono.Unix.Native.Syscall.  Instead use the Native.Syscall.* APIs which 
+         set errno sanely.
+
+2005-10-17  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixGroup.cs, UnixGroupInfo.cs, UnixFile.cs, UnixFileSystemInfo.cs,
+         UnixStream.cs, UnixSymbolicLinkInfo.cs, UnixUser.cs, UnixUserInfo.cs:
+         Start migrating uid/gid to long (from uint) for CLS compliance.
+         (Full migration must wait 'til after the next release as this would
+         require changes to existing members.)
+       * UnixEnvironment.cs: Above, and add RealUserId/RealGroupId and
+         EffectiveUserId/EffectiveGroupId.
+
+2005-10-14  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Catalog.cs: Create a constructor and mark it [Obsolete].  It will be made
+         private after the next release.
+       * UnixFile.cs, UnixStream.cs: Deal with Mono.Unix.Native type name changes.
+       * UnixFileSystemInfo.cs: [Obsolete] more members; Deal with Mono.Unix.Native 
+         type name changes.
+       * Syscall.cs: Create maps for PathConf, SysConf, ConfStr again; fpathconf(),
+         pathconf(), and sysconf() should call Native.Syscall since the
+         MonoPosixHelper.so helpers have changed.
+
+2005-10-13  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixMarshal.cs: More/better StringToAlloc/PtrToString which take a
+         System.Text.Encoding instance for proper string marshaling.  
+         - PtrToString(string,Encoding) is particularly tricky due to variable
+           length encodings.
+         - Fix StringToAlloc so that it works properly with UTF-16 encodings 
+           (we need a terminating null 16-bit word, not a null byte).
+         - StringToAlloc overload for doing substrings.
+
+2005-10-12  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixStream.cs: Check for EROFS and EINVAL in Flush().  Snorp was getting
+         an exception when he created a UnixStream around a socket, because
+         sockets can't be flushed.  It should be acceptable to create a UnixStream
+         around a socket, so don't throw an exception in this scenario.
+
+2005-10-06  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixDirectory.cs, UnixDirectoryInfo.cs UnixFile.cs, UnixFileSystemInfo.cs, 
+         UnixGroupInfo.cs, UnixIOException.cs, UnixStream.cs, UnixUserInfo.cs:
+         API Review: Obsolete appropriate members and add appropriate overloads for
+         pending move to Mono.Unix.Native types.
+       * UnixMarshal.cs: API Review; add StringToAlloc().
+
+2005-09-26  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixFileSystemInfo.cs: Exists shouldn't use access(2), as (1) Exists isn't
+         virtual, and (2) access(2) errors if you try to access(2) a symlink which
+         points nowhere.  Use (l)stat(2) instead, via GetFileStatus(), as this lets
+         UnixSymbolicLinkInfo behave properly.
+       * UnixSymbolicLinkInfo.cs: The Contents property should return null if the
+         symlink target doesn't exist.
+
+2005-09-20  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Syscall.cs: Add [Map] to AccessMode and MmapProt, as the Mono.Unix.Native
+         replacements go by different names (AccessModes, MmapProts), but we need
+         to continue generating the mapping code for these types (backward compat).
+
+2005-09-20  Jonathan Pryor <jonpryor@vt.edu>
+
+       * CdeclFunction.cs: [Obsolete]d by Mono.Unix.Native.CdeclFunction.
+       * make-map.cs: Remove.
+       * Stdlib.cs: [Obsolete] the types; use the Mono.Unix.Native.* types instead.
+       * StdioFileStream.cs: Add GC.KeepAlive statements to prevent premature GC's
+         (FxCop suggestion).
+       * Syscall.cs: Remove [Map] attribute from all types; [CLSCompliant(false)]
+         work; [Obsolete] all types and suggest using the Mono.Unix.Native.*
+         replacements; remove [IncludeAttribute] -- superseded by
+               Mono.Unix.Native/Syscall.cs's [HeaderAttribte] for CLS compliance.
+       * UnixConvert.cs: [Obsolete]d by Mono.Unix.Native.NativeConvert.
+       * UnixDirectory.cs, UnixDriveInfo.cs, UnixEnvironment.cs, 
+         UnixGroup.cs, UnixGroupInfo.cs, 
+         UnixSymbolicLinkInfo.cs, UnixUser.cs, UnixUserInfo.cs:
+         Add [CLSCompliant(false)] as necessary.
+       * UnixFile.cs, UnixDirectory.cs, UnixFileInfo.cs, UnixFileSystemInfo.cs: 
+         [CLSCompliant(false)], addition of method overloads for [Obsolete]d types, 
+         warn about changing return types.
+       * UnixProcess.cs, UnixStream.cs: Add [CLSCompliant(false)] as necessary, 
+         and warn about changing property types.
+
+2005-09-02  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Stdlib.cs: Cache delegates passed to Stdlib.signal() so that they survive
+         garbage collections.  Delegates can be removed by calling Stdlib.signal()
+         again with one of the Stdlib.SIG_* values (or the original return value of
+         Stdlib.signal()).
+       * UnixUser.cs, UnixGroup.cs, UnixEnvironment.cs: Clarify "Id" (int) vs. 
+         "Name" (string) differences by always using a Id or Name suffix.
+
+2005-07-01  Daniel Drake  <dsd@gentoo.org>
+
+       * Syscall.cs: The entire extended attribute API now goes through MPH, to
+         be shared between both Linux's and FreeBSD's similar EA implementations.
+
+2005-06-29  Miguel de Icaza  <miguel@ximian.com>
+
+       * StdioFileStream.cs: Only flush if we do not own the handle, as
+       fclose does a flush internally.
+
+2005-06-29  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixEnvironment: Add User, Login properties.
+       * Syscall.cs: Add locking around cuserid, crypt, encrypt, getlogin.
+
+2005-06-29  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Syscall.cs: SyslogFacility shouldn't be [Flags] either.  Sigh.
+         Thanks to Vorobiev Maksim for pointing this out.
+       * make-map.cs: Don't generate conversion code for [Obsolete] enum members.
+         This assumes that (1) the enum member's value is invalid, or (2) a
+         corrected member with the same value exists.  This fix allows us to
+         obsolete invalid members (instead of removing them) without screwing up
+         the generated code -- consider LOG_USRE, the mis-spelling of LOG_USER.
+         Since SyslogFacility was (incorrectly) a [Flags] enum, since both LOG_USER
+         and LOG_USRE had the same value, we'd get a EINVAL error trying to convert
+         a valid value, since LOG_USRE would exist, would be checked for, and the
+         check would succeed (since it had the same value as LOG_USER).
+         This change allows us to be slightly more permissive with versioning.
+
+2005-06-28  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Syscall.cs: correct value of LOG_CRON (it shouldn't be identical to
+         LOG_UUCP).  SyslogLevel shouldn't have [Flags].  Move LOG_USER to be
+         before LOG_USRE so that the generated map code doesn't return EINVAL when
+         LOG_USER is specified.
+
+2005-06-15  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Syscall.cs: s/LOG_USRE/LOG_USER/.  Fixes #75274.  
+         Thanks to Martin Honermeyer.
+
+2005-06-09  Jonathan Pryor <jonpryor@vt.edu>
+
+       * make-map.cs: Look for [Obsolete] members, and mark the UnixConvert
+         conversion functions with the same [Obsolete] message.  This should permit
+         more graceful deprecation of enumerations in the future (rather than just
+         API breaks).
+
+2005-06-08  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Syscall.cs: Add execvp(2).  (This should have been added with the other
+         exec(2) additions...).
+
+2005-06-08  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Syscall.cs: Update comment with correct exception type.
+       * UnixConvert.cs: Rename ToFilePermissions(string) to
+         FromOctalPermissionString; Add ToOctalPermissionString,
+         FromUnixPermissionString, ToUnixPermissionString.
+       * UnixMarshal.cs: Remove ErrorMarshal.HaveStrerror_r and
+         UnixMarshal.IsErrorDescriptionThreadSafe.  strerror(3) is now thread-safe
+         (from managed code, at least).  Update comment.
+
+2005-06-07  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixFileSystemInfo.cs: Don't use lstat(2), use stat(2).  This fits with
+         expectations better -- if you create a UnixFileInfo() on a symlink, you
+         want to get the target's information, not the symlink's info.  Add
+         GetFileStatus so UnixSymbolicLinkInfo can override this behavior.
+       * UnixSymbolicLinkInfo.cs: Implement GetFileStatus() (which calls lstat(2)).
+
+2005-06-07  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Syscall.cs: Document naming conventions.
+
+2005-06-05  Jonathan Pryor <jonpryor@vt.edu>
+
+       * make-map.cs: Change automatic "ifdef HAVE_<header>" support prefix to
+         "ah:" from ">".  I hadn't known about ">", and "ah:" is (somewhat) more
+         obvious.
+       * Syscall.cs: Change IncludeAttribute to put all headers/defines one/line.
+         It's easier to read this way.  Add "ah:sys/xattr.h" to the headers.
+
+2005-06-03  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Stdlib.cs: Add sanity checking to snprintf(3) to avoid buffer overflows.
+
+2005-06-02  Jonathan Pryor <jonpryor@vt.edu>
+
+       * StdioFileStream.cs: Remove FilePosition property & replace with
+         SaveFilePosition/RestoreFilePosition methods.  Since FilePosition has a
+         finalizer, it's not right to have implicitly created instances.
+       * Stdlib.cs: 
+         - FilePosition: GC.SuppressFinalize() should be last in Dispose() 
+           (following .NET guidelines).
+         - Syscall: Add locking around functions most likely to be thread unsafe.
+           This should provide some level of thread-safety to managed code.
+       * Syscall.cs: Add locking around functions most likely to be thread unsafe;
+         add mkstemp(3) export.
+       * UnixEnvironment.cs: GetUserShells should be atomic (from managed code).
+       * UnixGroup.cs: GetLocalGroups should be atomic (from managed code).
+       * UnixGroupInfo.cs: Add ToGroup() method to retrieve underlying Group info.
+       * UnixUser.cs: GetLocalUsers should be atomic (from managed code).
+       * UnixUserInfo.cs: Add ToPasswd () method to retrieve underlying Passwd info.
+       * UnixDriveInfo.cs: GetDrives should be atomic (from managed code).
+
+2005-05-31  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Stdlib.cs: Add comment for atexit(3) so I don't try to add it.
+       * Syscall.cs: Add fcntl(2) overload which takes DirectoryNotifyFlags (so
+         that *something* accepts a DirectoryNotifyFlags); Fix IncludeAttribute
+               header files (">sys/poll.h" doesn't exist); 
+         Add additional <sys/mman.h> functions mmap, munmap, msync, mlock, munlock,
+         mlockall, munlockall, mremap, mincore, remap_file_pages.
+       * UnixConvert.cs: Add conversion functions for MmapFlags, MmapProt, MsyncFlags,
+         MlockallFlags, MremapFlags.
+
+2005-05-31  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Syscall.cs, UnixConvert.cs: Rename LockFlags to LockfCommand.  This is a more 
+         consistent naming, and it's more correct (they weren't flags in the first place).
+
+2005-05-18  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Stdlib.cs: Correct Mono_Posix_Stdlib_InvokeSignalHandler export.
+
+2005-05-18  Jonathan Pryor <jonpryor@vt.edu>
+
+       * make-map.cs: Process the Mono.Posix namespace as well as Mono.Unix; add
+         mapping for Boolean => int for native type conversion.
+
+2005-05-18  Jonathan Pryor <jonpryor@vt.edu>
+
+       * make-map.cs: Add a MphPrototypeFileGenerator, which looks for DllImport
+         methods across all types and generates a C header file declaration for
+         those methods.  This allows us to ensure consistency between
+         Mono.Posix.dll and MonoPosixHelper.so.  Rename WrapperFileGenerator to
+               ConvertFileGenerator (it generates UnixConvert).
+       * MapAttribute.cs, IncludeAttribute.cs: Make these internal -- there's no
+         reason for external users to even know these exist.
+       * StdioFileStream.cs: Move GC.SuppressFinalize call to be last Dispose()
+         call.  This follows current design guidelines, and allows an exception to
+         be thrown from Dispose() without un-registering the finalizer.
+       * Syscall.cs: Change method declarations to match MonoPosixHelper, etc.
+          - posix_fallocate(P) takes a size_t
+          - mis-spelled settimeofday(2), sethostname(2)
+          - exec(2) can be public; it's safe to call
+          - change lseek(2) so int's are passed to MonoPosixHelper.so, not shorts
+          - We can't allow two incompatible prototypes to exist (since C allows
+            only one prototype, and we're cross-checking prototypes now).  Change
+            utime(2) so only one prototype is needed.
+       * UnixMarshal.cs: ErrorMarshal.ErrorTranslator and ErrorMarshal.Translate
+         shouldn't be public; make them internal.
+       * UnixStream.cs: Remove `unsafe` code block when a "safe" alternative works;
+         Close() should also call GC.SuppressFinalize.
+
+2005-05-12  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Syscall.cs: The Statvfs structure should contain a MountFlags enumeration,
+         not a ulong (we can "safely" do this since POSIX defines some values for
+         f_flag, so we should be kind and expose them).
+       * UnixConvert.cs: Add MountFlags conversion functions.
+
+2005-05-02  Joe Shaw  <joeshaw@novell.com>
+
+       * UnixListener.cs (Init): Remove the call to Cleanup() and the
+       method itself, which was not supposed to be here.  We try to
+       connect to the socket if it exists instead of deleting it
+       undconditionally.
+
+2005-04-30  Ben Maurer  <bmaurer@ximian.com>
+
+       * Stdlib.cs: Comment out usage of `UnmanagedFunctionPointer'. It
+       isn't supported in the runtime -- it throws an assert -- so better
+       not to use it at all for now.
+
+2005-04-29  Jonathan Pryor <jonpryor@vt.edu>
+
+       * UnixConvert.cs: Fix time_t -> DateTime conversions.  time_t should be
+         assumed to be in the local time zone, so don't mess with UTC shifts.
+         This allows Mono.Unix to produce sane output (e.g. identical to ls(1) or
+         stat(1), instead of several hours different).
+
+2005-04-29  Jonathan Pryor <jonpryor@vt.edu>
+
+       * Stdlib.cs: Make FilePosition slightly more useful by providing a
+         ToString() override which dumps the fpos_t structure contents into a 
+         hex string.  Add Equals(), GetHashCode(), operator==, and operator!=
+         so FilePosition behaves like a value type.
+
 2005-04-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * UnixClient.cs: