1 2006-01-26 Jonathan Pryor <jonpryor@vt.edu>
3 * UnixMarshal.cs: Check for null arguments in PtrToString() and
6 2006-01-24 Jonathan Pryor <jonpryor@vt.edu>
8 * UnixMarshal.cs (StringToHeap): Return IntPtr.Zero if `s' is null.
10 2006-01-24 Jonathan Pryor <jonpryor@vt.edu>
12 * UnixMarshal.cs (StringToHeap): Check for null arguments.
14 2006-01-20 Jonathan Pryor <jonpryor@vt.edu>
16 * UnixDriveInfo.cs: Properties should generate an InvalidOperationException,
17 not an IOException. Users can use IsReady to avoid exception generation.
18 * UnixIOException.cs: Create a custom message that embeds the error name
19 within the text, e.g. "Permission denied [EACCES]."
20 * UnixSymbolicLinkInfo.cs: This really should create the file FullPath, not
21 OriginalPath. Created files shouldn't ever be relative to the current
22 working directory, as this can change at any time.
24 2006-01-15 Jonathan Pryor <jonpryor@vt.edu>
26 * UnixUserInfo.cs: The UnixUserInfo(Native.Passwd) constructor and
27 ToPasswd() should clone the underlying Native.Passwd, so
28 that it doesn't get changed from underneath it.
29 * UnixGroupInfo.cs: The UnixGroupInfo(Native.Group) constructor should also
30 clone the provided Native.Group instance.
32 2006-01-14 Jonathan Pryor <jonpryor@vt.edu>
34 * UnixGroupInfo.cs: ToGroup() should clone the underlying Native.Group, so
35 that it doesn't get changed from underneath it.
37 2006-01-13 Jonathan Pryor <jonpryor@vt.edu>
39 * Catalog.cs, UnixMarshal.cs: Throw `UnixIOException(Native.Errno.ENOMEM)`
40 instead of System.OutOfMemoryException. OOME should be reserved for use
41 by the CLR (according to FxDG).
43 2006-01-12 Jonathan Pryor <jonpryor@vt.edu>
45 * UnixPath.cs: Add ReadLink() and TryReadLink() methods.
47 2006-01-12 Miguel de Icaza <miguel@novell.com>
49 * PeerCred.cs: Do not define PeerCredData as this is a structure
50 known to the runtime. Instead use the Mono.Posix.PeerCredData
53 2006-01-10 Jonathan Pryor <jonpryor@vt.edu>
55 * Catalog.cs: Don't use
56 System.Runtime.InteropServices.Marshal.StringToHGlobalAuto(), use
57 UnixMarshal.StringToHeap(). We require that the converted string be in
58 UTF-8 format, but .NET's Marshal.StringToHGlobalAuto converts to the local
59 code page, *not* UTF-8 (Mono's does UTF-8). UnixMarshal.StringToHeap
60 *always* does UTF-8, so use that instead.
62 2006-01-09 Jonathan Pryor <jonpryor@vt.edu>
64 * FileTypes.cs: Remove [Flags] attribute -- these aren't bitfield values.
65 * UnixFileSystemInfo.cs: Fix Is<<Type>> properties -- before it would
66 erroneously say that a symlink was a character device. (This is because
67 device values are *not* [Flags] values, but code was assuming they were.)
68 * UnixGroupInfo.cs: Clone the string[] returned from GetMemberNames(). We
69 don't want callers to change the underlying list.
71 2006-01-07 Jonathan Pryor <jonpryor@vt.edu>
73 * UnixMarshal.cs: *Actually* put things in alphabetical order (like the
74 comment says). I can speak english, really I can.
76 2006-01-06 Jonathan Pryor <jonpryor@vt.edu>
78 * Catalog.cs: s/libintl/intl/g, since intl.dll is used by GTK+ on Windows,
79 not libintl.dll (according to
80 http://www.gimp.org/~tml/gimp/win32/downloads.html).
82 2006-01-03 Jonathan Pryor <jonpryor@vt.edu>
84 * UnixMarshal.cs (CreateExceptionForError): Don't map ENOMEM to
85 System.OutOfMemoryException. OOME should be reserved for use by the CLR.
86 Return a UnixIOException instead (default behavior).
88 2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
90 * StdioFileStream.cs: Shut up FxCop - add a GC.KeepAlive to
92 * UnixClient.cs, UnixListener.cs: Use System.MarshalByRefObject as the base
93 class. These types implement IDisposable and have a finalizer, so if an
94 instance of these types were sent to another AppDomain they'd previously
95 marshal by copy, which could lead to a double release of an unmanaged
96 resource -- potential badness. Using MarshalByRefObject fixes this.
98 2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
100 * UnixMarshal.cs: s/EACCESS/EACCES/g. I can't read.
102 2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
104 * StdioFileStream.cs, UnixDirectoryInfo.cs, UnixEnvironment.cs,
105 UnixFileInfo.cs, UnixFileSystemInfo.cs, UnixGroupInfo.cs,
106 UnixIOException.cs, UnixMarshal.cs, UnixProcess.cs, UnixStream.cs,
107 UnixSymbolicLinkInfo.cs, UnixUserInfo.cs: Remove Obsolete API.
108 * CdeclFunction.cs, IncludeAttribute.cs, Stdlib.cs, Syscall.cs,
109 UnixConvert.cs, UnixDirectory.cs, UnixFile.cs, UnixGroup.cs,
111 * UnixPath.cs: Remove InvalidPathChars; use GetInvalidPathChars() instead.
112 * FileTypes.cs: Remove Obsolete API
114 2006-01-02 Jonathan Pryor <jonpryor@vt.edu>
116 * FileAccessPermissions.cs: Remove UserMask, GroupMask, OtherMask values.
117 * FileSpecialAttributes.cs: Remove AllAttributes member; it shouldn't be
118 public. Use UnixFileSystemInfo.AllSpecialAttributes instead.
119 * StdioFileStream.cs: Open files in binary mode, not text;
120 Fix exception message for StdioFileStream(path, mode) mode param check.
121 * UnixDirectoryInfo.cs: Add Create(FileAccessPermissions) overload; change
122 GetFileSystemEntries() to include the directory name that the files came
123 from (otherwise they're in the current working direcetory, which they
125 * UnixFileInfo.cs: Add Create(FileAccessPermissions) overload; Add better
126 argument checking to several Open() overloads.
127 * UnixFileSystemInfo.cs: Add AllSpecialAttributes, AllFileTypes members;
128 FullPath member should invalidate instance if path changes; Change return
129 type of GetFileStatus for maintenance/better documentation; ToStat()
130 should ensure that the instance is valid first.
131 * UnixMarshal.cs: Add additional Errno values to CreateExceptionForError();
132 reformat CreateExceptionForError for maintenance.
133 * UnixPath.cs: Obsolete InvalidPathChars -- FxCop never liked it, and now I
134 know why it didn't like it (thank you Framework Design Guidelines!).
135 * UnixStream.cs: Use UnixFileSystemInfo.AllSpecialAttributes, not
136 FileSpecialAttributes.AllAttributes (which was removed).
137 * UnixSymbolicLinkInfo.cs: Change return type of GetFileStatus().
139 2005-12-28 Jonathan Pryor <jonpryor@vt.edu>
141 * FileHandleOperations.cs: Check for null references.
143 2005-12-28 Jonathan Pryor <jonpryor@vt.edu>
145 * UnixMarshal.cs: Errno.EBADF should also trigger a ArgumentException.
147 2005-12-27 Jonathan Pryor <jonpryor@vt.edu>
149 * FileHandleOperations.cs, FileTypes.cs, Stdlib.cs, Syscall.cs,
150 UnixConvert.cs, UnixDirectory.cs, UnixDirectoryInfo.cs, UnixDriveInfo.cs,
151 UnixEnvironment.cs, UnixFile.cs, UnixFileInfo.cs, UnixFileSystemInfo.cs,
152 UnixGroup.cs, UnixGroupInfo.cs, UnixIOException.cs, UnixMarshal.cs,
153 UnixPath.cs, UnixPipes.cs, UnixProcess.cs, UnixStream.cs,
154 UnixSymbolicLinkInfo.cs, UnixUser.cs, UnixUserInfo.cs: Mark to-be-removed
155 API with [Obsolete(IsError=true)] (permits compiler assistance for finding
156 obsolete code); Migrate to the Mono.Unix.Native API.
157 * StdioFileStream.cs: Add non-Obsolete overloads for SaveFilePosition &
158 RestoreFilePosition (oops). Migrate to Mono.Unix.Native API.
160 2005-12-07 Jonathan Pryor <jonpryor@vt.edu>
162 * UnixMarshal.cs: Add PtrToStringUnix() -- specialized PtrToString method
163 which is significantly faster than PtrToString(p, UnixEncoding.Instance).
164 Use System.String..ctor(sbyte*, int, int, Encoding) to avoid the byte[]
165 intermediate copy -- much faster. Fix PtrToString() so that it will
166 accept an IntPtr containing 0 characters, and don't duplicate strings
169 2005-11-18 Jonathan Pryor <jonpryor@vt.edu>
171 * Catalog.cs, UnixDirectory.cs, UnixDirectoryInfo.cs, UnixDriveInfo.cs,
172 UnixEnvironment.cs, UnixFile.cs, UnixFileInfo.cs, UnixFileSystemInfo.cs,
173 UnixGroup.cs, UnixGroupInfo.cs, UnixProcess.cs, UnixSymbolicLinkInfo.cs,
174 UnixUser.cs, UnixUserInfo.cs: Change types of [Obsolete] members for
175 consistency and CLS compliance; Mono.Unix.Native type migration.
176 * FileTypes.cs: s/Special/Device/g (CharacterSpecial ==> CharacterDevice).
177 The *Special was a BSD convention, while UnixFileSystemInfo uses *Device
178 in property names, and these should be consistent. Changing the enum is
179 simpler than changing the UnixFileSystemInfo properties.
180 * UnixIOException.cs: s/error/errno/g (FxCop suggestion); change type of
182 * UnixMarshal.cs: s/error/errno/g (FxCop suggestion); Mono.Unix.Native
185 2005-11-08 Jonathan Pryor <jonpryor@vt.edu>
187 * Catalog.cs: Exception safety improvements (don't let memory leak!); check
188 for errors with bindtextdomain(3) et. al.
190 2005-11-08 Jonathan Pryor <jonpryor@vt.edu>
192 * UnixPipes.cs: Provide Equals, GetHashCode, and operator==/operator!= to
193 conform with FxCop guidelines for structures.
195 2005-11-03 Jonathan Pryor <jonpryor@vt.edu>
197 * FileTypes.cs, UnixFileSystemInfo.cs: s/FIFO/Fifo/ to follow .NET
198 naming conventions (as reported by FxCop).
200 2005-11-01 Jonathan Pryor <jonpryor@vt.edu>
202 * UnixDirectoryInfo.cs, UnixDriveInfo.cs, UnixEnvironment.cs,
203 UnixFileSystemInfo.cs, UnixGroupInfo.cs, UnixProcess.cs, UnixUserInfoc.cs:
204 Obsolete statements now specify in what way the return type will change.
205 * IncludeAttribute.cs: Obsoleted. It's an error to use it now.
207 2005-11-01 Jonathan Pryor <jonpryor@vt.edu>
209 * FileAccessPattern.cs: Change enumeration names to match Robert Love's more
210 sensible names from his FileAdvise class used in Beagle
211 (UseSoon --> PreLoad, WillNotUse --> FlushCache).
212 * FileHandleOperations.cs: Added; contains AdviseFileAccessPattern()
213 (moved from UnixFile.cs).
214 * UnixDirectory.cs: Obsolete the class; use UnixDirectoryInfo instead.
215 * UnixDirectoryInfo.cs: Add GetCurrentDirectory(), SetCurrentDirectory().
216 * UnixFile.cs: Obsolete the class; use UnixFileInfo, FileHandleOperations,
217 or UnixPipes instead.
218 * UnixFileSystemInfo.cs: Add ToStat() method.
219 * UnixGroup.cs: Obsolete the class; use UnixGroupInfo instead.
220 * UnixGroupInfo.cs: Obsolete & Replace constructor, add GetMemberNames(),
222 * UnixPipes.cs: Added (type moved from UnixFile.cs).
223 * UnixStream.cs: AdviseFileAccessPattern() uses FileHandleOperations now.
224 * UnixSymbolicLinkInfo.cs: Implement TryReadLink() to avoid constant buffer
225 re-sizing. Stevens states that the file size of the symlink is the number
226 of bytes needed to hold the symlink, so this should be faster.
227 * UnixUser.cs: Obsolete the class; use UnixUserInfo instead.
228 * UnixUserInfo.cs: Obsolete & Replace constructor; add useful static members
229 from UnixUser such as GetLoginName(), GetLocalUsers(), etc.
231 2005-10-27 Jonathan Pryor <jonpryor@vt.edu>
233 * UnixEnvironment.cs: Add RealUser, RealGroup, EffectiveUser, EffectiveGroup
234 properties; [Obsolete] necessary methods and provide replacements.
235 * UnixStream.cs: Add OwnerUser(Id), OwnerGroup(Id) properties;
236 improve Stat handling.
238 2005-10-26 Jonathan Pryor <jonpryor@vt.edu>
240 * UnixEncoding.cs: Change EscapeByte to 0x0000, as suggested by Michal
242 * UnixPath.cs: Remove '\0' from InvalidPathChars, since U+0000 is now used
243 as the path escape character for marshaling purposes.
245 2005-10-26 Jonathan Pryor <jonpryor@vt.edu>
247 * UnixMarshal.cs: Obsolete heap-related methods to have a Heap suffix
248 (AllocHeap, FreeHeap, etc.), and change StringToAlloc() to be
249 StringToHeap(). This creates a stronger name association between related
252 2005-10-26 Jonathan Pryor <jonpryor@vt.edu>
254 * UnixIOException.cs: Add (string) and (string, Exception) constructors to
255 silence FxCop; re-work logic so we lookup the error string at construction
256 time and use this as the message for the base class.
258 2005-10-25 Jonathan Pryor <jonpryor@vt.edu>
260 * Stdlib.cs, Syscall.cs: Filenames need to be marshaled through the
261 FileNameMarshaler, which will encode/decode filenames with UnixEncoding.
262 * UnixEncoding.cs: Added (copied from
263 ../../corlib/System.Text/UTF8Encoding.cs); a hack to permit handling of
264 arbitrarily encoded filenames. It attempts to decode a byte[] array as
265 UTF-8, and if the decode fails it prefixes each byte with
266 UnixEncoding.EscapeByte (\uFFFF).
267 * UnixMarshal.cs: Use UnixEncoding as the default encoding, and special-case
268 UnixEncoding to use Stdlib.strlen() for native string lengths.
270 2005-10-21 Jonathan Pryor <jonpryor@vt.edu>
272 * FileAccessPattern.cs: Added
273 * UnixFile.cs, UnixStream.cs: Deprecate all the Advise* methods (lots!)
274 and replace with 6 methods which take a FileAccessPattern enum.
276 2005-10-19 Jonathan Pryor <jonpryor@vt.edu>
278 * FileAccessPermissions.cs, FileSpecialAttributes.cs, FileTypes.cs: Added.
279 * UnixFileSystemInfo.cs, UnixStream.cs: Replace the old Permission property
280 with 4 new properties: Protection (for the Native.FilePermissions value),
281 FileAccessPermissions (for rwxrwxrwx info), FileSpecialAttributes (for
282 set-user-id, set-group-id, sticky), and FileTypes (directory, socket...).
283 The new enumeration types have nicer CLS-compliant names.
285 2005-10-17 Jonathan Pryor <jonpryor@vt.edu>
287 * UnixMarshal.cs: Fix GetIntXxBufferLength to require fewer
288 Marshal.ReadIntXx() calls; Fix PtrToString so that
289 ``"foo" == PtrToString (StringToAlloc("foo",enc),enc)'' is true for
292 2005-10-17 Jonathan Pryor <jonpryor@vt.edu>
294 * UnixFileSystemInfo.cs: Add OwnerUserId and OwnerGroupId properties.
296 2005-10-17 Jonathan Pryor <jonpryor@vt.edu>
298 * UnixDriveInfo.cs, UnixEnvironment.cs, UnixFile.cs, UnixFileSystemInfo.cs,
299 UnixGroup.cs, UnixStream.cs, UnixUser.cs: Don't use SetLastError(), since
300 it's use is (1) incorrect, and (2) will be going away with the move to
301 Mono.Unix.Native.Syscall. Instead use the Native.Syscall.* APIs which
304 2005-10-17 Jonathan Pryor <jonpryor@vt.edu>
306 * UnixGroup.cs, UnixGroupInfo.cs, UnixFile.cs, UnixFileSystemInfo.cs,
307 UnixStream.cs, UnixSymbolicLinkInfo.cs, UnixUser.cs, UnixUserInfo.cs:
308 Start migrating uid/gid to long (from uint) for CLS compliance.
309 (Full migration must wait 'til after the next release as this would
310 require changes to existing members.)
311 * UnixEnvironment.cs: Above, and add RealUserId/RealGroupId and
312 EffectiveUserId/EffectiveGroupId.
314 2005-10-14 Jonathan Pryor <jonpryor@vt.edu>
316 * Catalog.cs: Create a constructor and mark it [Obsolete]. It will be made
317 private after the next release.
318 * UnixFile.cs, UnixStream.cs: Deal with Mono.Unix.Native type name changes.
319 * UnixFileSystemInfo.cs: [Obsolete] more members; Deal with Mono.Unix.Native
321 * Syscall.cs: Create maps for PathConf, SysConf, ConfStr again; fpathconf(),
322 pathconf(), and sysconf() should call Native.Syscall since the
323 MonoPosixHelper.so helpers have changed.
325 2005-10-13 Jonathan Pryor <jonpryor@vt.edu>
327 * UnixMarshal.cs: More/better StringToAlloc/PtrToString which take a
328 System.Text.Encoding instance for proper string marshaling.
329 - PtrToString(string,Encoding) is particularly tricky due to variable
331 - Fix StringToAlloc so that it works properly with UTF-16 encodings
332 (we need a terminating null 16-bit word, not a null byte).
333 - StringToAlloc overload for doing substrings.
335 2005-10-12 Jonathan Pryor <jonpryor@vt.edu>
337 * UnixStream.cs: Check for EROFS and EINVAL in Flush(). Snorp was getting
338 an exception when he created a UnixStream around a socket, because
339 sockets can't be flushed. It should be acceptable to create a UnixStream
340 around a socket, so don't throw an exception in this scenario.
342 2005-10-06 Jonathan Pryor <jonpryor@vt.edu>
344 * UnixDirectory.cs, UnixDirectoryInfo.cs UnixFile.cs, UnixFileSystemInfo.cs,
345 UnixGroupInfo.cs, UnixIOException.cs, UnixStream.cs, UnixUserInfo.cs:
346 API Review: Obsolete appropriate members and add appropriate overloads for
347 pending move to Mono.Unix.Native types.
348 * UnixMarshal.cs: API Review; add StringToAlloc().
350 2005-09-26 Jonathan Pryor <jonpryor@vt.edu>
352 * UnixFileSystemInfo.cs: Exists shouldn't use access(2), as (1) Exists isn't
353 virtual, and (2) access(2) errors if you try to access(2) a symlink which
354 points nowhere. Use (l)stat(2) instead, via GetFileStatus(), as this lets
355 UnixSymbolicLinkInfo behave properly.
356 * UnixSymbolicLinkInfo.cs: The Contents property should return null if the
357 symlink target doesn't exist.
359 2005-09-20 Jonathan Pryor <jonpryor@vt.edu>
361 * Syscall.cs: Add [Map] to AccessMode and MmapProt, as the Mono.Unix.Native
362 replacements go by different names (AccessModes, MmapProts), but we need
363 to continue generating the mapping code for these types (backward compat).
365 2005-09-20 Jonathan Pryor <jonpryor@vt.edu>
367 * CdeclFunction.cs: [Obsolete]d by Mono.Unix.Native.CdeclFunction.
368 * make-map.cs: Remove.
369 * Stdlib.cs: [Obsolete] the types; use the Mono.Unix.Native.* types instead.
370 * StdioFileStream.cs: Add GC.KeepAlive statements to prevent premature GC's
372 * Syscall.cs: Remove [Map] attribute from all types; [CLSCompliant(false)]
373 work; [Obsolete] all types and suggest using the Mono.Unix.Native.*
374 replacements; remove [IncludeAttribute] -- superseded by
375 Mono.Unix.Native/Syscall.cs's [HeaderAttribte] for CLS compliance.
376 * UnixConvert.cs: [Obsolete]d by Mono.Unix.Native.NativeConvert.
377 * UnixDirectory.cs, UnixDriveInfo.cs, UnixEnvironment.cs,
378 UnixGroup.cs, UnixGroupInfo.cs,
379 UnixSymbolicLinkInfo.cs, UnixUser.cs, UnixUserInfo.cs:
380 Add [CLSCompliant(false)] as necessary.
381 * UnixFile.cs, UnixDirectory.cs, UnixFileInfo.cs, UnixFileSystemInfo.cs:
382 [CLSCompliant(false)], addition of method overloads for [Obsolete]d types,
383 warn about changing return types.
384 * UnixProcess.cs, UnixStream.cs: Add [CLSCompliant(false)] as necessary,
385 and warn about changing property types.
387 2005-09-02 Jonathan Pryor <jonpryor@vt.edu>
389 * Stdlib.cs: Cache delegates passed to Stdlib.signal() so that they survive
390 garbage collections. Delegates can be removed by calling Stdlib.signal()
391 again with one of the Stdlib.SIG_* values (or the original return value of
393 * UnixUser.cs, UnixGroup.cs, UnixEnvironment.cs: Clarify "Id" (int) vs.
394 "Name" (string) differences by always using a Id or Name suffix.
396 2005-07-01 Daniel Drake <dsd@gentoo.org>
398 * Syscall.cs: The entire extended attribute API now goes through MPH, to
399 be shared between both Linux's and FreeBSD's similar EA implementations.
401 2005-06-29 Miguel de Icaza <miguel@ximian.com>
403 * StdioFileStream.cs: Only flush if we do not own the handle, as
404 fclose does a flush internally.
406 2005-06-29 Jonathan Pryor <jonpryor@vt.edu>
408 * UnixEnvironment: Add User, Login properties.
409 * Syscall.cs: Add locking around cuserid, crypt, encrypt, getlogin.
411 2005-06-29 Jonathan Pryor <jonpryor@vt.edu>
413 * Syscall.cs: SyslogFacility shouldn't be [Flags] either. Sigh.
414 Thanks to Vorobiev Maksim for pointing this out.
415 * make-map.cs: Don't generate conversion code for [Obsolete] enum members.
416 This assumes that (1) the enum member's value is invalid, or (2) a
417 corrected member with the same value exists. This fix allows us to
418 obsolete invalid members (instead of removing them) without screwing up
419 the generated code -- consider LOG_USRE, the mis-spelling of LOG_USER.
420 Since SyslogFacility was (incorrectly) a [Flags] enum, since both LOG_USER
421 and LOG_USRE had the same value, we'd get a EINVAL error trying to convert
422 a valid value, since LOG_USRE would exist, would be checked for, and the
423 check would succeed (since it had the same value as LOG_USER).
424 This change allows us to be slightly more permissive with versioning.
426 2005-06-28 Jonathan Pryor <jonpryor@vt.edu>
428 * Syscall.cs: correct value of LOG_CRON (it shouldn't be identical to
429 LOG_UUCP). SyslogLevel shouldn't have [Flags]. Move LOG_USER to be
430 before LOG_USRE so that the generated map code doesn't return EINVAL when
431 LOG_USER is specified.
433 2005-06-15 Jonathan Pryor <jonpryor@vt.edu>
435 * Syscall.cs: s/LOG_USRE/LOG_USER/. Fixes #75274.
436 Thanks to Martin Honermeyer.
438 2005-06-09 Jonathan Pryor <jonpryor@vt.edu>
440 * make-map.cs: Look for [Obsolete] members, and mark the UnixConvert
441 conversion functions with the same [Obsolete] message. This should permit
442 more graceful deprecation of enumerations in the future (rather than just
445 2005-06-08 Jonathan Pryor <jonpryor@vt.edu>
447 * Syscall.cs: Add execvp(2). (This should have been added with the other
448 exec(2) additions...).
450 2005-06-08 Jonathan Pryor <jonpryor@vt.edu>
452 * Syscall.cs: Update comment with correct exception type.
453 * UnixConvert.cs: Rename ToFilePermissions(string) to
454 FromOctalPermissionString; Add ToOctalPermissionString,
455 FromUnixPermissionString, ToUnixPermissionString.
456 * UnixMarshal.cs: Remove ErrorMarshal.HaveStrerror_r and
457 UnixMarshal.IsErrorDescriptionThreadSafe. strerror(3) is now thread-safe
458 (from managed code, at least). Update comment.
460 2005-06-07 Jonathan Pryor <jonpryor@vt.edu>
462 * UnixFileSystemInfo.cs: Don't use lstat(2), use stat(2). This fits with
463 expectations better -- if you create a UnixFileInfo() on a symlink, you
464 want to get the target's information, not the symlink's info. Add
465 GetFileStatus so UnixSymbolicLinkInfo can override this behavior.
466 * UnixSymbolicLinkInfo.cs: Implement GetFileStatus() (which calls lstat(2)).
468 2005-06-07 Jonathan Pryor <jonpryor@vt.edu>
470 * Syscall.cs: Document naming conventions.
472 2005-06-05 Jonathan Pryor <jonpryor@vt.edu>
474 * make-map.cs: Change automatic "ifdef HAVE_<header>" support prefix to
475 "ah:" from ">". I hadn't known about ">", and "ah:" is (somewhat) more
477 * Syscall.cs: Change IncludeAttribute to put all headers/defines one/line.
478 It's easier to read this way. Add "ah:sys/xattr.h" to the headers.
480 2005-06-03 Jonathan Pryor <jonpryor@vt.edu>
482 * Stdlib.cs: Add sanity checking to snprintf(3) to avoid buffer overflows.
484 2005-06-02 Jonathan Pryor <jonpryor@vt.edu>
486 * StdioFileStream.cs: Remove FilePosition property & replace with
487 SaveFilePosition/RestoreFilePosition methods. Since FilePosition has a
488 finalizer, it's not right to have implicitly created instances.
490 - FilePosition: GC.SuppressFinalize() should be last in Dispose()
491 (following .NET guidelines).
492 - Syscall: Add locking around functions most likely to be thread unsafe.
493 This should provide some level of thread-safety to managed code.
494 * Syscall.cs: Add locking around functions most likely to be thread unsafe;
495 add mkstemp(3) export.
496 * UnixEnvironment.cs: GetUserShells should be atomic (from managed code).
497 * UnixGroup.cs: GetLocalGroups should be atomic (from managed code).
498 * UnixGroupInfo.cs: Add ToGroup() method to retrieve underlying Group info.
499 * UnixUser.cs: GetLocalUsers should be atomic (from managed code).
500 * UnixUserInfo.cs: Add ToPasswd () method to retrieve underlying Passwd info.
501 * UnixDriveInfo.cs: GetDrives should be atomic (from managed code).
503 2005-05-31 Jonathan Pryor <jonpryor@vt.edu>
505 * Stdlib.cs: Add comment for atexit(3) so I don't try to add it.
506 * Syscall.cs: Add fcntl(2) overload which takes DirectoryNotifyFlags (so
507 that *something* accepts a DirectoryNotifyFlags); Fix IncludeAttribute
508 header files (">sys/poll.h" doesn't exist);
509 Add additional <sys/mman.h> functions mmap, munmap, msync, mlock, munlock,
510 mlockall, munlockall, mremap, mincore, remap_file_pages.
511 * UnixConvert.cs: Add conversion functions for MmapFlags, MmapProt, MsyncFlags,
512 MlockallFlags, MremapFlags.
514 2005-05-31 Jonathan Pryor <jonpryor@vt.edu>
516 * Syscall.cs, UnixConvert.cs: Rename LockFlags to LockfCommand. This is a more
517 consistent naming, and it's more correct (they weren't flags in the first place).
519 2005-05-18 Jonathan Pryor <jonpryor@vt.edu>
521 * Stdlib.cs: Correct Mono_Posix_Stdlib_InvokeSignalHandler export.
523 2005-05-18 Jonathan Pryor <jonpryor@vt.edu>
525 * make-map.cs: Process the Mono.Posix namespace as well as Mono.Unix; add
526 mapping for Boolean => int for native type conversion.
528 2005-05-18 Jonathan Pryor <jonpryor@vt.edu>
530 * make-map.cs: Add a MphPrototypeFileGenerator, which looks for DllImport
531 methods across all types and generates a C header file declaration for
532 those methods. This allows us to ensure consistency between
533 Mono.Posix.dll and MonoPosixHelper.so. Rename WrapperFileGenerator to
534 ConvertFileGenerator (it generates UnixConvert).
535 * MapAttribute.cs, IncludeAttribute.cs: Make these internal -- there's no
536 reason for external users to even know these exist.
537 * StdioFileStream.cs: Move GC.SuppressFinalize call to be last Dispose()
538 call. This follows current design guidelines, and allows an exception to
539 be thrown from Dispose() without un-registering the finalizer.
540 * Syscall.cs: Change method declarations to match MonoPosixHelper, etc.
541 - posix_fallocate(P) takes a size_t
542 - mis-spelled settimeofday(2), sethostname(2)
543 - exec(2) can be public; it's safe to call
544 - change lseek(2) so int's are passed to MonoPosixHelper.so, not shorts
545 - We can't allow two incompatible prototypes to exist (since C allows
546 only one prototype, and we're cross-checking prototypes now). Change
547 utime(2) so only one prototype is needed.
548 * UnixMarshal.cs: ErrorMarshal.ErrorTranslator and ErrorMarshal.Translate
549 shouldn't be public; make them internal.
550 * UnixStream.cs: Remove `unsafe` code block when a "safe" alternative works;
551 Close() should also call GC.SuppressFinalize.
553 2005-05-12 Jonathan Pryor <jonpryor@vt.edu>
555 * Syscall.cs: The Statvfs structure should contain a MountFlags enumeration,
556 not a ulong (we can "safely" do this since POSIX defines some values for
557 f_flag, so we should be kind and expose them).
558 * UnixConvert.cs: Add MountFlags conversion functions.
560 2005-05-02 Joe Shaw <joeshaw@novell.com>
562 * UnixListener.cs (Init): Remove the call to Cleanup() and the
563 method itself, which was not supposed to be here. We try to
564 connect to the socket if it exists instead of deleting it
567 2005-04-30 Ben Maurer <bmaurer@ximian.com>
569 * Stdlib.cs: Comment out usage of `UnmanagedFunctionPointer'. It
570 isn't supported in the runtime -- it throws an assert -- so better
571 not to use it at all for now.
573 2005-04-29 Jonathan Pryor <jonpryor@vt.edu>
575 * UnixConvert.cs: Fix time_t -> DateTime conversions. time_t should be
576 assumed to be in the local time zone, so don't mess with UTC shifts.
577 This allows Mono.Unix to produce sane output (e.g. identical to ls(1) or
578 stat(1), instead of several hours different).
580 2005-04-29 Jonathan Pryor <jonpryor@vt.edu>
582 * Stdlib.cs: Make FilePosition slightly more useful by providing a
583 ToString() override which dumps the fpos_t structure contents into a
584 hex string. Add Equals(), GetHashCode(), operator==, and operator!=
585 so FilePosition behaves like a value type.
587 2005-04-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
590 * UnixListener.cs: TcpListener/TcpClient clones from Jow Shaw.
592 2005-04-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
594 * Mono.Posix.dll.sources: added UnixListener and UnixClient from Joe
597 2005-04-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
599 * UnixEndPoint.cs: fix from Mono.Posix.
601 2005-04-20 Jonathan Pryor <jonpryor@vt.edu>
603 * Syscall.cs: Make all fork(2) and exec(2) functions `private`. It
604 currently isn't safe to call these under *any* circumstances. See also
605 68141, and this pertinent quote from Butenhof's
606 "Programming with POSIX Threads", p197, s6.1:
608 "When a threaded process calls fork to create a child process,
609 Pthreads specifies that only the thread calling fork exists in the
610 child. ... Pthreads does not 'terminate' the other threads in a forked
611 process...They simply cease to exist. ... This is not a problem if
612 the child process is about to call exec to run a new program, but if
613 you use fork to clone a threaded program, beware that you may lose
614 access to memory, especially heap memory stored only as
615 thread-specific data values."
617 Since P/Invoke currently requires using thread local storage, once you
618 fork(2) you won't be able to invoke exec(2) from managed code (since that
619 would require a P/Invoke transition to call exec(2), which would require
620 TLS, which doesn't exist in the new process).
622 This can only be fixed by removing the TLS dependency on P/Invoke, which
623 isn't a priority (and may not be possible).
625 The workaround is to create a C function which does your fork(2)/exec(2)
626 (and any other functions such as daemon(3)) on your behalf, and P/Invoke
627 to call this C function.
629 2005-04-18 Jonathan Pryor <jonpryor@vt.edu>
631 * Syscall.cs: Update comment specifying which functions belong in Syscall.
632 * UnixConvert.cs: Add XattrFlags conversion functions.
633 * UnixMarshal.cs: Remove warning about self-assignment.
635 2005-04-16 Daniel Drake <dsd@gentoo.org>
637 * Syscall.cs: Add bindings for extended attribute manipulation
639 2005-04-05 Miguel de Icaza <miguel@novell.com>
641 * Syscall.cs: Set entry point for sys_syslog to be syslog.
642 Include the syslog.h header in the generated map so that we
643 actually do the mapping.
645 2005-03-28 Jonathan Pryor <jonpryor@vt.edu>
647 * UnixConvert.cs: Add ToFopenMode() methods, which convert FileMode/FileAccess
648 into an fopen(3) mode string. ToOpenFlags() should throw
649 ArgumentOutOfRangeException for argument violations.
650 * StdioFileStream.cs: Add constructor overloads accepting filename and
651 FileMode/FileAccess overloads; Compatibility fixes with regression tests;
652 remove IDisposable implementation since System.IO.Stream already
653 implements it (which calls Close() for us).
655 2005-03-17 Jonathan Pryor <jonpryor@vt.edu>
657 * Stdlib.cs: Move Errno-related functionality into Stdlib from Syscall,
658 since (1) errno is part of C89, and (2) StdioFileStream will need it, and
659 StdioFileStream shouldn't use Syscall. Add [UnmanagedFunctionPointer]
660 attribute to SignalHandler for .NET 2.0 (since signal handlers use C
661 calling convention, not Stdcall).
662 * Syscall.cs: Move Errno-related functionality into Stdlib.
663 * UnixMarshal.cs: Use ERANGE not EPERM when figuring out appropriate
664 translator, since ERANGE is part of C99 and EPERM isn't. Use Stdlib
665 instead of Syscall for Errno-related functionality.
667 2005-02-02 Jonathan Pryor <jonpryor@vt.edu>
669 * UnixFile.cs: Cope with changes in UnixStream.
670 * UnixStream.cs: Change FileDescriptor property to Handle for consistency.
671 * StdioFileStream.cs: Change FileStream property to Handle for consistency.
673 2005-02-02 Jonathan Pryor <jonpryor@vt.edu>
675 * Syscall.cs: Remove public sys_ methods. Some were public by mistake, and
676 others so that users could manually marshal strings if desired. Manually
677 marshaling strings shouldn't be necessary, though, so remove them too.
679 2005-02-02 Jonathan Pryor <jonpryor@vt.edu>
681 * StdioFileStream.cs: Fix Length property to actually return the size of the
682 file, not the # of bytes from the current position to EOF. Oops.
684 2005-01-31 Jonathan Pryor <jonpryor@vt.edu>
686 * Stdlib.cs: Import "msvcrt", not "libc". These members are part of the
687 ANSI C standard, and thus should be present on Windows via msvcrt.dll
688 (except snprintf, until they catch up to C99). Change the calling
689 convention of all functions to Cdecl, as the .NET default is Stdcall.
690 Changing the calling convention isn't needed in Syscall, as it can only be
691 run on Unix platforms anyway, where the default is Cdecl.
692 * Syscall.cs: Add LIBC member that points to the real "libc"; we can't use
693 the imported definition from Stdlib as "msvcrt" doesn't exist on Unix.
695 2005-01-29 Jonathan Pryor <jonpryor@vt.edu>
697 * Stdlib.cs: sys_* functions shouldn't be public.
699 2005-01-13 Jonathan Pryor <jonpryor@vt.edu>
701 * make-map.cs: libMonoPosixHelper exports Mono_Posix prefixes, not Mono_Unix
702 prefixes, so change the type and namespace to generate compatible code.
703 * Syscall.cs: Change OpenFlags values so they match the Linux values.
705 2005-01-13 Jonathan Pryor <jonpryor@vt.edu>
707 * Stdlib.cs: Use Stdlib.LIBC instead of "libc".
708 * StdioFileStream.cs: Add FilePosition property (not that I expect anyone to
709 use it) and Rewind() method.
711 2005-01-05 Jonathan Pryor <jonpryor@vt.edu>
713 * StdioFileStream.cs: Added; System.IO.Stream wrapper for C FILE struct.
714 * Stdlib.cs: Correct visibility of ftell().
716 2005-01-05 Jonathan Pryor <jonpryor@vt.edu>
718 * Stdlib.cs: Re-order declarations to match the order used in the
719 C99 Standard Annex B; Complete <stdio.h> exports (except for those not
720 worth supporting); Add non-"unsafe" versions of fread(3), fwrite(3) and
721 add some rudimentary buffer-overflow checking; Add <stdlib.h> exports such
722 as getenv(3), exit(3), rand(3), EXIT_SUCCESS, RAND_MAX, etc.
724 2005-01-03 Jonathan Pryor <jonpryor@vt.edu>
726 * Syscall.cs: Update endfsent() and setfsent() declarations, as these must
727 now be implemented in MonoPosixHelper.
729 2005-01-01 Jonathan Pryor <jonpryor@vt.edu>
731 * Stdlib.cs, Syscall.cs: Minimize duplicate declarations of
732 "MonoPosixHelper" for use in DllImport statements.
734 2005-01-01 Jonathan Pryor <jonpryor@vt.edu>
736 * Stdlib.cs: Don't use C# v2 features; fixes build under CSC.EXE.
738 2004-12-30 Jonathan Pryor <jonpryor@vt.edu>
740 * Stdlib.cs: On miguel's suggestion, rename Sighandler_t to SignalHandler.
742 2004-12-30 Jonathan Pryor <jonpryor@vt.edu>
744 * Stdlib.cs: Implement all C89 <stdio.h> functions except for the scanf(3)
745 family. These are too dangerous to expose.
747 2004-12-30 Jonathan Pryor <jonpryor@vt.edu>
749 * CdeclFunctions.cs: Remove warning about unused variable.
750 * Stdlib.cs: Make signal(2) sane and (hopefully) complete.
751 * Syscall.cs: Fix cuserid Obsolete message to reference correct class name.
752 * UnixProcess.cs: Remove warning about unused variable.
753 * UnixMarshal.cs: Remove warnings about unused variables.
755 2004-12-29 Jonathan Pryor <jonpryor@vt.edu>
757 * UnixPath.cs: Add ReadSymbolicLink(), which takes an intelligent approach
758 to reading symlinks (since their contents may be any size, we grow the
759 buffer dynamically to fit them all, instead of assuming a maximum size).
760 * UnixSymbolicLinkInfo.cs: Remove MaxContentsSize.
762 2004-12-29 Jonathan Pryor <jonpryor@vt.edu>
764 * UnixPath.cs: Add check for when symlink points to a full path name.
766 2004-12-29 Jonathan Pryor <jonpryor@vt.edu>
768 * Syscall.cs: Fix Object.Equals implementations.
769 * UnixPath.cs: New & improved, with Testing! GetRealPath() is changed so
770 that it doesn't walk the entire path looking for symlinks, it just reads
771 the leaf. GetCompletRealPath() walks the entire path resolving symlinks.
772 GetCanonicalPath() added, which "cleans up" a path (removing extraneous
773 "." and ".." entries).
774 * UnixSymbolicLinkInfo.cs: Rename ContentsLength -> MaxContentsSize.
776 2004-12-28 Jonathan Pryor <jonpryor@vt.edu>
778 * UnixFileSystemInfo.cs: Add a link(2) wrapper, CreateLink(). Strictly
779 speaking it's only "safe" to do this on files, but an exception will be
780 returned if the user tries to hard link directories (because of EPERM),
781 unless the user is root, in which case it should be allowed anyway...
783 2004-12-28 Jonathan Pryor <jonpryor@vt.edu>
785 * CdeclFunctions.cs: Correct the comments for AMD64
786 * UnixDirectoryInfo.cs: override Name; add Parent & Root properties;
787 Correct Path usage (s/Path/FullPath/g).
788 * UnixDriveInfo.cs: Added. Based on .NET 2.0 System.IO.DriveInfo docs,
789 provides statvfs(2) and getfsfile(3) information about a mounted volume.
790 GetDrives() wraps getfsent(3), thus parsing /etc/fstab.
791 * UnixFile.cs: Use UnixConver.ToOpenFlags, deleting the local version.
792 * UnixFileInfo.cs: Use UnixConver.ToOpenFlags, deleting the local version;
793 override Name; add DirectoryName and Directory properties;
794 * UnixFileSystemInfo.cs: Make more .NET-like, using FullPath and
795 OriginalPath protected members, abstract Name property; Add
796 CreateSymbolicLink; Remove ReadLink (it's now
797 UnixSymbolicLinkInfo.Contents); Use lstat(2) for Create(string), so we
798 properly detect Symbolic Links.
799 * UnixPath.cs: Added; Path manipulation utility functions.
800 * UnixSymbolicLinkInfo.cs:
802 - override new abstract member Name;
803 - rename ReadLink to ContentsPath (and Contents) properties
804 (why "Contents"? Because readlink(2) says "readlink places the
805 contents of the symbolic link in the buffer...")
806 - Add CreateSymbolicLinkTo(), which creates a symlink to the specified
809 2004-12-28 Jonathan Pryor <jonpryor@vt.edu>
811 * Stdlib.cs: Add syslog(3) to XPrintfFunctions; Add additional printf(3)
812 and fprintf(3) overload which properly escape the format string
813 (by using "%s" as the format for the user-supplied message).
814 * Syscall.cs: Add #regions for enummerations, structures, classes; Wrap
815 syslog(3) and related enumerations; fix operator!= on Dirent, Group;
816 wrap {f}statvfs(2); wrap <fstab.h> entries (getfsent(3), etc.).
817 * UnixConvert.cs: Add Syslog-releated enumeration translation functions;
818 Move ToOpenFlags here from UnixFile and UnixFileInfo.
819 * UnixMarshal.cs: Missing P/Invoke methods throw
820 EntryPointNotFoundException, not MissingMethodException; add
821 EscapeFormatString, which escapes printf-style format strings so that they
822 can be safely handed off to native code (avoiding stack overflow, etc);
823 make CreateExceptionForError internal.
825 2004-12-15 Jonathan Pryor <jonpryor@vt.edu>
827 * Stdlib.cs: Add more <stdio.h> wrappers, such as fread(3) and fwrite(3).
828 These will be useful in implementing System.IO.Stream subclass for
829 reading/writing to a FILE*. Fix a typo in the realloc(3) DllImport.
830 * Syscall.cs: Fix the sys_kill and sys_crypt declarations.
831 * CdeclFunction.cs: Document calling convention problems on AMD64.
833 2004-11-18 Jonathan Pryor <jonpryor@vt.edu>
835 * CdeclFunction.cs: Added.
836 * Stdlib.cs: Re-add printf(3) and fprintf(3). They may not be portable (the
837 jury is still out on that; the AMD64 SysV ABI looks like it should be
838 portable to AMD64 to my eyes), but they will work on *some* platforms, so
839 we should permit it. The new implementation takes a page out of
840 cocoa-sharp: use System.Reflection.Emit to generate a P/Invoke method at
841 runtime to invoke printf(3) or fprintf(3). This way, we can export a
842 params signature to C# code, permitting natural usage such as:
843 Stdlib.printf ("Hello, %s world! (%i)\n", "silly", 42);
844 * Syscall.cs: Mark which headers are complete, which functions still need
845 wrapping (for headers which have anything done to them), add #region
846 blocks for each header;
847 export mkfifo(3), fexecve(), getppid(2), setlogin(); fix sleep(3) export.
848 * UnixEnvironment.cs: Export a friendly getppid(2) wrapper.
849 GetParentProcessId isn't in UnixProcess as there's no way (that I know of)
850 to get the Parent's Parent, so it can't be a class member, and exposing it
851 as a static member of UnixProcess doesn't make sense to me, as it isn't
852 general. Added GetUserShells().
853 * UnixProcess.cs: Change constructor to internal, so it can be used from
856 2004-11-16 Jonathan Pryor <jonpryor@vt.edu>
858 * Stdlib.cs: Remove printf(3) and fprintf(3). These are vararg/CDECL
859 functions, and it's not portable to call them in this manner.
860 (It's not portable because some architectures, such as AMD64, use a
861 "cookie" as part of the vararg calling sequence to help reduce buffer
862 overflow exploits. Trying to call vararg functions as if they were an
863 overloaded function will not properly set this hardware cookie, resulting
864 in a hardware exception. Talk to lupus for more information.)
866 2004-11-16 Jonathan Pryor <jonpryor@vt.edu>
868 * Syscall.cs, UnixConvert.cs: Remove mount- and umount-related
869 functionality. Mount/umount is inherently non-portable (see the C code
870 for mount/umount), and trying to provide a consistent interface is
871 impossible. If you need mount/umount support, use the command-line
872 programs mount(1) and umount(1).
874 2004-11-16 Jonathan Pryor <jonpryor@vt.edu>
876 + Lots o' Renames, as the namespace changed.
877 * PosixConvert.cs: Moved to UnixConvert.cs:
878 * PosixDirectory.cs: Moved to UnixDirectory.cs:
879 * PosixEnvironment.cs: Moved to UnixEnvironment.cs:
880 * PosixDirectoryInfo.cs: Moved to UnixDirectoryInfo.cs:
881 * PosixFile.cs: Moved to UnixFile.cs:
882 * PosixFileInfo.cs: Moved to UnixFileInfo.cs:
883 * PosixFileSystemInfo.cs: Moved to UnixFileSystemInfo.cs:
884 * PosixGroup.cs: Moved to UnixGroup.cs:
885 * PosixGroupInfo.cs: Moved to UnixGroupInfo.cs:
886 * PosixIOException.cs: Moved to UnixIOException.cs:
887 * PosixMarshal.cs: Moved to UnixMarshal.cs:
888 * PosixProcess.cs: Moved to UnixProcess.cs:
889 * PosixStream.cs: Moved to UnixStream.cs:
890 * PosixSymbolicLinkInfo.cs: Moved to UnixSymbolicLinkInfo.cs:
891 * PosixUser.cs: Moved to UnixUser.cs:
892 * PosixUserInfo.cs: Moved to UnixUserInfo.cs:
893 * Catalog.cs, IncludeAttribute.cs, MapAttribute.cs, PeerCred.cs, Stdlib.cs,
894 Syscall.cs, UnixConvert.cs, UnixDirectory.cs, UnixDirectoryInfo.cs,
895 UnixEndPoint.cs, UnixEnvironment.cs, UnixFile.cs, UnixFileInfo.cs,
896 UnixFileSystemInfo.cs, UnixGroup.cs, UnixGroupInfo.cs, UnixIOException.cs,
897 UnixMarshal.cs, UnixProcess.cs, UnixStream.cs, UnixSymbolicLinkInfo.cs,
898 UnixUser.cs, UnixUserInfo.cs: Deal with renamed classes/members.
900 2004-11-15 Jonathan Pryor <jonpryor@vt.edu>
902 * PosixUserInfo.cs: Make the PosixUserInfo(Passwd) constructor public;
903 override Object.GetHashCode and Object.Equals.
904 * PosixGroupInfo.cs: Make the PosixGroupInfo(Group) constructor public;
905 override Object.GetHashCode and Object.Equals.
906 * PosixIOException.cs: Use PosixMarshal.GetErrorDescription instead of
907 calling Syscall.strerror_r directly
908 * PosixMarshal.cs: Add GetErrorDescription. Strerror_r() isn't portable, so
909 GetErrorDescription() first tries strerror_r(), and if it fails falls back
912 - Seal the Dirent class. It has no virtual members, so there's no point
913 in it being non-sealed. Override Object.GetHashCode and Object.Equals.
914 - Seal the Group class. It has no virtual members, so there's no point
915 in it being non-sealed. Override Object.GetHashCode and Object.Equals.
916 Provide operator== and operator!=.
917 - Seal the Passwd class. It has no virtual members, so there's no point
918 in it being non-sealed. Override Object.GetHashCode and Object.Equals.
919 Provide operator== and operator!=.
920 - Remove strerror_r() convenience overload. This is now
921 PosixMarshal.GetErrorDescription().
923 2004-11-12 Jonathan Pryor <jonpryor@vt.edu>
925 * Syscall.cs: Export time-related functions (gettimeofday, settimeofday,
926 utime, utimes), mknod.
928 2004-11-07 Atsushi Enomoto <atsushi@ximian.com>
930 * PosixEnvironment.cs : csc build fix. see bug #69195.
931 * PosixStream.cs : csc build fix. see bug #69196.
933 2004-11-05 Jonathan Pryor <jonpryor@vt.edu>
935 * PosixConvert.cs: New file; conversion functions for Mono.Posix types.
936 * PosixDirectory.cs: New file; Friendly wrapper over directory information.
937 * PosixDirectoryInfo.cs: New file; Friendly wrapper over directory information.
938 * PosixEnvironment.cs: New file; Friendly wrapper over environment information.
939 * PosixFile.cs: New file; Friendly wrapper over file information.
940 * PosixFileInfo.cs: New file; Friendly wrapper over file information.
941 * PosixFileSystemInfo.cs: New file; Friendly wrapper over `stat'.
942 * PosixGroup.cs: New file; User Group-related functionality
943 * PosixGroupInfo.cs: New file; User Group-related functionality
944 * PosixIOException.cs: New file; Exception for POSIX-generated exceptions.
945 * PosixMarshal.cs: New file; utility functions for marshaling, etc.
946 * PosixProcess.cs: New file; Friendly wrapper over process information.
947 * PosixStream.cs: New file; Friendly wrapper over file descriptors.
948 * PosixSymbolicLinkInfo.cs: New file; Friendly wrapper over symbolic links.
949 * PosixUser.cs: New file; Friendly wrapper over user information.
950 * PosixUserInfo.cs: New file; Friendly wrapper over user information.
951 * Stdlib.cs: New file; C standard library exports.
952 * Syscall.cs: Effective re-write.
953 - Organize exports by header file
954 - add additional enumerations (Error for the E* error values, etc.)
955 - always explicitly specify enumeration underlying type
956 - Use a new wrapping infrastructure so that ABI-stable types are exported
957 - For example, size_t is exported as ulong, not IntPtr.
958 - Wrap more functions, and wrap them better (such as getpwnam).
959 - This release is NOT backward compatible. Many names are the same, and
960 hopefully they're still compatible, but no effort was made to maintain
961 compatibility. For example, FileMode was removed and replaced with
962 FilePermissions, to avoid a name conflict with System.IO.FileMode.
963 - Change umount() to use MonoPosixHelper: portability fix for Mac OS X.
964 * make-map.cs: Another effective re-write, to clean up the code, produce
965 better output, and produce more output. For example, most of
966 PosixConvert can be auto-generated, so it is (modulo version delays and
967 bootstrap issues). `map.c' is now conditional on all macros, and has
968 error checking for invalid/unsupported values.
970 2004-09-18 Jackson Harper <jackson@ximian.com>
972 * Syscall.cs: Add support for poll ().
974 2004-09-18 Jackson Harper <jackson@ximian.com>
976 * make-map.cs: Use field value not name for #defines.
978 2004-09-14 Loren Bandiera <lorenb@mmgsecurity.com>
980 * Syscall.cs: Added method for getpwnam which uses Passwd
982 * macros.c: Helper function for getpwnam
983 (In committing, Josh Tauberer also added getpwuid.)
985 2004-07-09 Dick Porter <dick@ximian.com>
987 * PeerCred.cs: Get the unix socket peer credentials.
989 2004-05-26 Miguel de Icaza <miguel@ximian.com>
991 * Syscall.cs: Do not let the runtime handle strings, as we do not
992 own those strings, we must transform the char * into a string
995 2004-05-03 Miguel de Icaza <miguel@ximian.com>
997 * Syscall.cs: Add symlink
999 2004-04-19 Miguel de Icaza <miguel@ximian.com>
1001 * Syscall.cs: Use hex values for FileMode, since C# does not have
1002 an octal integer mode.
1004 2004-03-30 Joshua Tauberer <tauberer@for.net>
1006 * Added readlink, strerror, opendir, readdir, closedir
1007 * Added Mono.Posix.Stat.UnixToDateTime(long unixtime) --> DateTime
1009 2004-03-11 Joshua Tauberer <tauberer@for.net>
1011 * Syscall.cs: Removed argument to getgid that shouldn't be there.
1012 Added getusername, getgroupname which wrap getpwuid, getgrgid
1013 without dealing with pointers to structures.
1014 Removed duplicate FileMode enum nested in Syscall class.
1015 Added stat and lstat, which use StatMode enumeration
1016 (like FileMode but nicer and complete) and Stat struct.
1017 * macros.c: Helper functions for getpwuid, getgrgid, stat, lstat.
1019 2004-01-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1021 * Syscall.cs: moved the assembly attribute to a proper place
1022 and added 'signal.h'
1023 * make-map.cs: use reflection to invoke the properties, as it
1024 fails under MS runtime.
1027 2004-01-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1029 * Syscall.cs: moved assembly attribute and added unsafe block to fix
1030 the build on windows.
1032 2003-11-11 Wojciech Polak <polak@gnu.org
1034 * Syscall.cs: Applied patch from Wojciech Polak <polak@gnu.org> to
1037 2003-05-16 Dick Porter <dick@ximian.com>
1039 * UnixEndPoint.cs: New property to get and set the filename, like
1040 the IPEndPoint has for the IP address. Also implement ToString().
1042 Tue Apr 29 16:53:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
1044 * Syscall.cs: remove the unsafe mess.
1046 2003-02-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1049 * UnixEndPoint.cs: first file.