* Mono.Unix/FileAccessPermissions.cs: Remove UserMask, GroupMask, OtherMask values.
[mono.git] / mcs / class / Mono.Posix / Mono.Unix / ChangeLog
index b04b25ed31dc621df3f57aecdbb908d415fb7c87..9cb569e597065a485941607b7a23ef36c97d8921 100644 (file)
@@ -1,3 +1,239 @@
+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